我有一个在VS2012中开发的ASP.NET MVC4应用程序。该应用程序由一个主项目(MyProject)、一个单元测试项目(MyProject.Tests)、一个Azure部署项目(MyProject.Azure)和几个通用库项目组成。
当我右键单击解决方案或主项目并选择Manage NuGet Packages时,我看到了一堆微软更新,这些更新显然是在过去一个月左右的时间里变得可用的。如果我单击Update All按钮,那么更新显然是安装的,没有任何明显的问题,但当我构建解决方案时,我收到了两次错误消息:
warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build
好的,我有两个引用MyProject的项目: MyProject.Tests和MyProject.Azure。我可以右键单击MyProject.Tests,选择ManageNuGet Packages,然后添加Microsoft.Bcl.Build。这消除了两个警告中的一个。但是VS没有给我一个选项来管理MyProject.Azure项目的NuGet包。
如何将Microsoft.Bcl.Build包添加到Azure部署项目?
编辑:
发布于 2013-06-22 02:54:15
如果双击该警告,则会给出禁用该警告的说明。
禁用来自还不支持Nuget的项目的项目引用是安全的。
请看下面从Microsoft.Bcl.Build.targets复制的粗体部分。
BclBuildValidateNugetPackageReferences
通过为引用设置SkipValidatePackageReferences=true,可以为项目引用禁用此目标:
<ProjectReference Include="..\pcl\pcl.csproj">
<Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
<Name>pcl</Name>
<Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>
发布于 2013-09-20 03:34:43
TheESJ提供的答案是正确的,但我不清楚措辞。由于我不能对答案发表评论,我将在这里提供更多细节。具体地说,我在一个Azure项目中遇到了这个问题,为了消除这个警告,需要采取以下解决方法:
当您双击VisualStudio中的警告时,将转到Microsoft.BclBuild.targets文件中的BclBuildValidateNugetPackageReferences目标。在实际的目标元素之上,您应该会发现一个很大的注释块,其中谈到了禁用项目引用检查。由于Azure项目不能有任何库引用,因此这些Azure项目不可能满足此特定构建目标的要求。
解决方案是什么?禁用Azure项目的引用检查,因为不可能实际添加nuget包引用。
示例
因此,假设我们有两个项目:引用MyProject.csproj.的MyAzureProject.ccproj请按照以下步骤操作:
MyProject {1d99490e-d140-4897-9890-238e673a5864} ...
SkipValidatePackageReferences=true
MyProject {1d99490e-d140-4897-9890-238e673a5864} ...SkipValidatePackageReferences=true
您现在应该能够重新构建,并且错误应该会消失。
发布于 2013-08-15 00:22:34
我遇到了同样的问题,并试图更新Microsoft.Bcl.Build.targets;但这并没有帮助。
经过一些调查发现,Azure服务项目的.csproj文件必须修改为包含<Properties>SkipValidatePackageReferences=true</Properties>
。
从@TheESJ的答案中看不出这一点,因此决定单独发布答案。感谢@TheESJ。
https://stackoverflow.com/questions/17180268
复制相似问题