ChatGPT解决这个技术问题 Extra ChatGPT

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

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

当我右键单击解决方案或主项目并选择管理 NuGet 包时,我会看到一堆微软更新,这些更新显然在上个月左右可用。如果我单击“全部更新”按钮,则显然安装了更新,没有任何明显的问题,但是当我构建解决方案时,我收到此错误消息 TWICE:

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 部署项目?

编辑:

感谢用户 swell,我现在知道针对此问题的 Microsoft Connect 问题已打开 here

感谢您对连接问题的参考,这是一个烦人的问题。
构建部署项目时的警告有关,还有一个错误会导致发布项目时出现虚假警告。与发布相关的错误也是 reported on Connect。我不知道解决方法。
对于引用其他项目的 WiX 项目(为了收获项目输出又名“热”),我也会遇到同样的问题。 WiX 安装程序项目安装 NuGet 包没有任何意义!啊!!

S
Sander

TheESJ 提供的答案是正确的,但是我并不清楚措辞。由于我无法对答案发表评论,因此我将在此处提供更多详细信息。具体来说,我在 Azure 项目中遇到了这个问题,需要以下解决方法才能使警告消失:

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

解决方案?禁用 Azure 项目的引用检查,因为实际上无法添加 nuget 包引用。

例子

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

在解决方案资源管理器中右键单击“MyAzureProject”,然后选择“编辑项目文件”。找到对“MyProject”的项目引用。它应该类似于: MyProject {1d99490e-d140-4897-9890-238e673a5864} ... 在 ProjectReference 元素中添加以下元素:SkipValidatePackageReferences=true 您的项目引用现在应该如下所示: MyProject {1d99490e-d140-4897-9890-238e673a5864} ... SkipValidatePackageReferences=true 右键单击解决方案中的“MyAzureProject”资源管理器并选择“重新加载项目”。

您现在应该能够重建并且错误应该消失了。


在我的 VS 版本中,我必须先右键单击并“卸载项目”,然后才能右键单击以编辑项目文件
您的意思是 MyAzureProject.ccproj 而不是 MyAzureProject.csproj
仅当我将 'SkipValidatePackageReferences=true' 添加到引用的项目 *.csproj 文件时,它才有效。仅仅编辑 *.ccproj 是行不通的。
@pius 这是一个小功能,但在 Productivity Power Tools 的“电源命令”下有一个“编辑项目文件”上下文菜单选项,可用于多个版本的 VS。它将卸载项目并一键为您打开项目文件。
@EdwardBrey 好问题。 .ccproj 用于 azure 云项目,所以不是错字。
T
TheESJ

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

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

Arthur,您可以尝试设置 AdditionalPropertes 元数据值而不是 Properties 吗?
@TheESJ我在WiX项目中遇到了这个问题,看起来像设置AdditionalProperties而不是Properties一样有效。我有兴趣知道为什么
这仅适用于构建解决方案,但是当您实际将“运行”与 azure 项目一起用作启动项目时,您将再次看到警告。
即使在构建上也不要工作。 VS 2015 社区版。
在 VS2015 Professional 中不起作用。我有同样的问题添加这一行。
s
superjos

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

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

这在@TheESJ 的回答中并不明显,因此决定发布单独的答案。感谢@TheESJ。


o
ozz

我多次遇到这个问题,并且 Properties 方法确实有效,但是在处理 Wix 项目时,我不得不执行以下操作:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

当我使用 Properties Xml 节点时,我收到了一个新错误:

未为项目“MyInstallerProject.csproj”设置 OutputPath 属性。请检查以确保您为此项目指定了有效的配置和平台组合。配置='调试'平台='x86'。如果其他项目试图遵循对此项目的项目到项目引用,此项目已卸载或未包含在解决方案中,并且引用项目未使用相同或等效项构建,则也可能出现此错误配置或平台。


M
Mick

在未能解决上述任何答案的问题后,我只是按照 Microsoft.Bcl.Build.targets 文件中包含的说明进行操作(在构建输出窗口中双击错误后显示)。我卸载了我的项目(引用 Azure 包),遇到了错误。编辑项目文件并插入以下内容...

<PropertyGroup>
      <SkipValidatePackageReferences>true</SkipValidatePackageReferences>
</PropertyGroup>

...在第一个 PropertyGroup 之前的项目文件顶部。