警告:所有引用MyProject.csproj的项目都必须安装nuget包Microsoft.Bcl.Build

我有一个在VS 2012中开发的ASP.NET MVC 4应用程序。该应用程序由一个主项目(MyProject),一个unit testing项目(MyProject.Tests),一个Azure部署项目(MyProject.Azure)和几个通用库项目。

当我右键单击解决scheme或主项目并select“pipe理NuGet软件包”时,我看到一大堆Microsoft更新在上个月显然已经可用。 如果我点击全部更新button然后更新显然安装没有任何明显的问题,但是当我构build解决scheme时,我得到这个错误消息TWICE:

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build 

好的,所以我有两个引用MyProject的项目:MyProject.Tests和MyProject.Azure。 我可以右键单击MyProject.Tests,selectManageNuGet包,然后添加Microsoft.Bcl.Build。 这摆脱了两个警告之一。 但是VS并没有给我一个选项来pipe理MyProject.Azure项目的NuGet包

如何将Microsoft.Bcl.Build包添加到Azure部署项目?

编辑:

感谢用户膨胀 ,我现在知道这个问题的Microsoft连接问题已经打开在这里 。

3 Solutions collect form web for “警告:所有引用MyProject.csproj的项目都必须安装nuget包Microsoft.Bcl.Build”

如果您双击该警告,将为您提供禁用警告的说明。

禁用尚不支持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> 

TheESJ提供的答案是正确的,但措辞不清楚。 由于我不能评论答案,所以我会在这里提供更多细节。 具体来说,我遇到了Azure项目的这个问题,并且需要采取以下解决方法才能使警告消失:

当您双击VisualStudio中的警告时,您将被带到Microsoft.BclBuild.targets文件中的BclBuildValidateNugetPackageReferences目标。 在实际的目标元素之上,你应该find一个大的注释块来谈论禁用项目引用检查。 由于Azure项目不能具有任何库引用,因此这些Azure项目不可能满足此特定构build目标的要求。

解决scheme? 禁用Azure项目的引用检查,因为不可能实际添加nuget包引用。

所以,假设我们有两个项目: MyAzureProject.ccproj它引用MyProject.csproj 。 按着这些次序:

  1. 右键单击解决scheme资源pipe理器中的“MyAzureProject”,然后select“编辑项目文件”。
  2. find“MyProject”的项目引用。 它应该看起来像这样:

     <ProjectReference Include="..\MyProject\MyProject.csproj"> <Name>MyProject</Name> <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project> ... </ProjectReference> 
  3. 在ProjectReference元素中添加以下元素:

      <Properties>SkipValidatePackageReferences=true</Properties> 
  4. 现在您的项目引用应该如下所示:

     <ProjectReference Include="..\MyProject\MyProject.csproj"> <Name>MyProject</Name> <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project> ... <Properties>SkipValidatePackageReferences=true</Properties> </ProjectReference> 
  5. 右键单击解决scheme资源pipe理器中的“MyAzureProject”,然后select“Reload Project”。

你现在应该能够重build,错误应该消失。

我面临同样的问题,并试图更新Microsoft.Bcl.Build.targets; 这并没有帮助。

经过一些调查发现, Azure服务项目的.csproj文件必须修改为包含<Properties>SkipValidatePackageReferences=true</Properties>

这从@TheESJ的答复中并不明显,因此决定单独回答。 感谢@TheESJ。

  • VS.NET 2010中的exception窗口缺less“User-unhandled”列
  • Visual Studio如何从debugging器序列化对象
  • VS2010停靠在错误的地方的代码窗口
  • 即使在项目构build时,ReSharper“无法parsing符号”
  • vstest.executionengine.x86.exe不能closures
  • 使用Visual Studio 2012时SignTool.exe或“Windows Kits”目录的path
  • Visual Studio 2012 Web发布不复制文件
  • 奇怪的std :: map行为
  • VS 2010和2012的TFS工作区?
  • 如何解决“'installutil'不被识别为内部或外部命令,可操作的程序或batch file。
  • 在Visual Studio 2012中使用MSBuild PublishProfile时,MSDeploy跳过规则