14

我正在开发一个使用 nuget 但不使用包还原的项目。(顺便说一句,这是我无法控制的决定,因此任何涉及启用包还原的答案都不是我能够使用的答案。)

解决方案中的少数项目(总共 34 个项目中的 4 个;一个 WinJS 应用商店项目、两个普通 .NET 类库和我的一个 Azure 云项目)报告了这个臭名昭著的警告:

...packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets(225,5): warning : All projects referencing Valhalla.Consumer.Core.csproj must install nuget package Microsoft.Bcl.Build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317569.

该链接假定我要打开包还原。到目前为止,我在这个主题上找到的所有其他建议也是如此。

顺便说一句,我尝试在选项 -> 包管理器 -> 常规设置中禁用包还原。这无济于事(即使有,也是不可取的——我在我从事的所有其他工作中都使用包还原)。

我真的不明白为什么我在不使用包还原的解决方案中得到这个。据我了解,它要求的软件包的全部意义在于支持软件包还原。因此,在不使用包还原的解决方案中,出现此包似乎很奇怪。

但是,似乎某些其他 nuget 包会导致您依赖它。我有一个使用Microsoft.Bclnuget 包的 Windows 运行时组件项目,由于某种原因,它依赖于Microsoft.Bcl.Build. (当我创建项目时,Visual Studio 似乎为我添加了包。大概是必要的。)其他项目似乎通过 HTTP 客户端库Microsoft.Bcl获得了依赖。Microsoft.Bcl.Build

显然,某些常见的 nuget 包似乎会强制依赖Microsoft.Bcl.Build您是否使用包还原。

如果您可以通过将相关包添加到所有收到此警告的项目中来消除警告,那将很好。但令人烦恼的是,即使我将Microsoft.Bcl.Build包添加到消费组件(例如,我的 WinJS Window Store 应用程序),我仍然会收到此警告!(所以它继续抱怨我需要安装 nuget 包,即使我已经安装了它。)

有谁知道在这种情况下如何消除这个警告?做它要求我做的事情似乎还不够。少了什么东西?

4

2 回答 2

7

我遇到过同样的问题。将 Microsoft.Bcl.Build 包从 1.0.13 更新到 1.0.14 解决了我的问题。

于 2014-04-29T14:29:52.177 回答
4

我们最近遇到了同样的问题。使用 Nuget 2.8、BCL 构建 1.0.14、BCL 1.1.9,我们有一个使用 BCL 构建的项目 A,它被另一个项目 B 引用。

短篇小说:项目 B 编译给出了上述错误,尽管已将打包的内容添加到其中。解决方案是删除软件包并重新添加它们。我们最终为项目 A 和 B 都这样做了。

我相信问题的原因是版本不匹配。原始项目引用 BCL 1.1.8(创建时的最新版本),而项目 B 自动使用更新的 BCL 1.1.9。

我不确定这是否相关,但我们第一次使用项目-> NuGet 包管理器添加包,第二次使用 NuGet 控制台(工具-> Nuget-> 控制台)。

remove,add 导致项目 B 的 csproj 出现明显差异。添加了以下几行:

<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />

于 2014-06-14T16:16:58.157 回答