我正在开发一个使用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.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包,即使我已经安装了它。)
有谁知道在这种情况下如何消除此警告?做它让我做的事似乎不够。有什么遗漏?
答案 0 :(得分:7)
我有同样的问题。将Microsoft.Bcl.Build包从1.0.13更新到1.0.14解决了我的问题。
答案 1 :(得分:4)
我们最近遇到了同样的问题。使用Nuget 2.8,BCL build 1.0.14,BCL 1.1.9,我们有一个使用BCL构建的项目A,被另一个项目B引用。
简短的故事:项目B编译提供了上述错误,尽管已将打包添加到其中。解决方案是删除包并重新添加它们。我们最终为项目A和B做了这个。
我认为问题的原因是版本不匹配。原始项目引用了BCL 1.1.8(创建时的最新版本),而项目B自动使用了最近的BCL 1.1.9。
我不确定这是否相关,但是我们第一次使用project-> NuGet包管理器添加了包,并且在第2次我们使用了NuGet控制台(Tools-> 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')" />