2013-11-21 260 views
12

我正在使用nuget,但不使用包还原的项目。 (这是我不能控制的决定,所以任何涉及启用软件包恢复的答案都不是我可以使用的答案。)不使用包还原,但仍然“必须安装nuget包Microsoft.Bcl.Build”

解决方案中的少数项目(4个共有34;一个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.

该链接假定我会想变成包恢复。那么,我在这个问题上迄今为止设法找到的其他一些建议。

顺便说一下,我试过在Options - > Package Manager - > General settings中禁用Package Restore。这并没有帮助(即使这样做,这也是不可取的 - 我在所有其他工作中使用软件包恢复)。

我不明白为什么我在不使用软件包恢复的解决方案中获得此功能。据我了解,它要求的软件包的全部重点是支持软件包恢复。因此,在没有使用软件包恢复的解决方案中,这个软件包存在似乎很奇怪。

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

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

如果您可以简单地通过将相关软件包添加到获取此警告的所有项目来消除警告,那就没问题了。但令人头痛的是,即使我将Microsoft.Bcl.Build包添加到使用组件(例如,我的WinJS Window Store应用程序),我仍然会收到此警告! (所以它继续抱怨我需要安装nuget包,即使我安装了它。)

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

+1

你尝试使用该项目的SkipValidatePackageReferences财产的建议Microsoft.Bcl.Build.targets文件? –

+0

尽管这样做会消除它,它是不是也会阻止合法的警告?如果项目U使用项目P,那么U应该具有与P相同的所有nuget软件包。通常,nuget会检查并告诉您是否缺少某些内容,但是此设置会禁用该项检查。当我真的想念一个包时,我想要得到警告,但是当我确实有一个参考时,不会收到有关'Microsoft.Bcl.Build'的警告。 –

+0

不知道NuGet v2.7 +中启用Package Restore的事实是否有用(知道'Microsoft.Bcl.Build'的zilch) –

回答

7

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

+0

我不得不更新VS版本 –

+0

我已经在1.0.14上使用vs 2013社区更新4,并且我收到了警告。我该怎么办 ? – Julian50

+0

@FrankSposaro哪个版本安装? – Julian50

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->控制台)。

的去除,添加导致项目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')" />