【发布时间】:2013-12-05 14:16:44
【问题描述】:
我正在开发一个使用 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 包,即使我已经安装了它。)
有谁知道在这种情况下如何消除此警告?做它要求我做的事情似乎还不够。缺少什么?
【问题讨论】:
-
您是否尝试按照 Microsoft.Bcl.Build.targets 文件中的建议在项目中使用 SkipValidatePackageReferences 属性?
-
虽然这样可以摆脱它,但它不会也阻止合法的警告吗?如果项目 U 使用项目 P,则 U 应该具有与 P 相同的所有 nuget 包。通常,nuget 会检查并告诉您是否缺少某些内容,但此设置会禁用该检查。当我真的错过了一个包裹时,我想收到警告,但当我确实有参考时,我不会收到关于
Microsoft.Bcl.Build的警告。 -
不知道是否在 NuGet v2.7+ 中启用了 OOTB 包还原这一事实是否有用(知道
Microsoft.Bcl.Build的 zilch) -
我们已经在使用 NuGet 2.7。包还原不是此项目的选项(出于我无法控制的原因)。 Microsoft.Bcl.Build 的存在纯粹是为了支持包还原,AFAIK。但不幸的是,一些 NuGet 包依赖它,即使你没有使用包还原,也会迫使你依赖它。
标签: visual-studio nuget nuget-package-restore