【问题标题】:warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build警告:所有引用 MyProject.csproj 的项目都必须安装 nuget 包 Microsoft.Bcl.Build
【发布时间】:2013-06-15 08:09:35
【问题描述】:

我有一个在 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

【问题讨论】:

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

标签: visual-studio visual-studio-2012 nuget


【解决方案1】:

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

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

【讨论】:

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

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

经过一番调查发现必须修改Azure服务项目的.csproj文件以包含&lt;Properties&gt;SkipValidatePackageReferences=true&lt;/Properties&gt;

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

【讨论】:

    【解决方案3】:

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

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

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

    示例

    因此,假设我们有两个项目:MyAzureProject.ccproj 引用 MyProject.csproj。请按以下步骤操作:

    1. 在解决方案资源管理器中右键单击“MyAzureProject”并选择“编辑项目文件”。
    2. 找到对“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. 在解决方案资源管理器中右键单击“MyAzureProject”并选择“重新加载项目”。

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

    【讨论】:

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

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

    <AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>
    

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

    没有为项目设置 OutputPath 属性 'MyInstallerProject.csproj'。请检查以确保您 已指定配置和平台的有效组合 这个项目。配置='调试'平台='x86'。这个错误可能 如果其他项目试图遵循 project-to-project 对这个项目的引用,这个项目已经 已卸载或未包含在解决方案中,以及引用 项目不使用相同或等效的配置构建 或平台。

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-05-20
        • 1970-01-01
        • 2013-12-05
        • 2015-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多