【问题标题】:How to suppress 'Found conflicts between different versions of' warning?如何抑制“发现不同版本之间的冲突”警告?
【发布时间】:2019-06-20 09:25:31
【问题描述】:

在一个项目中,我有以下参考布局:

References
+- AssemblyA 6.7.6643.0
+- AssemblyB
|  \- AssemblyA 7.0.0.0
\- AssemblyC
   \- AssemblyA 7.0.0.0

AssemblyB 和 AssemblyC 是没有降级的 NuGet 引用。由于我无法控制的情况,升级 AssemblyA 不是一种选择。但我收到了这个警告:

发现不同版本的“AssemblyA”之间存在冲突,这可能 不能解决。这些引用冲突在构建中列出 当日志详细程度设置为详细时记录。

所以我就这样做了,这就是输出:

“AssemblyA,Version=6.7.6643.0”和 “AssemblyA,版本=7.0.0.0”。 选择“AssemblyA, Version=6.7.6643.0”是因为它是主要的,而“AssemblyA, Version=7.0.0.0”不是。 依赖于“AssemblyA,Version=6.7.6643.0”[AssemblyA.dll] 的引用。 程序集A.dll 项目文件项包括导致引用“AssemblyA.dll”。 程序集A,版本=6.7.6643.0 依赖于“AssemblyA,Version=7.0.0.0”[] 的引用。 程序集B.dll 项目文件项包括导致引用“AssemblyB.dll”。 程序集B,版本=7.0.0.0 程序集C.dll 项目文件项包括导致引用“AssemblyC.dll”。 汇编C,版本=9.0.0.0

它选择了我想要的版本,但我仍然在 Visual Studio 中收到警告。所以我更新了 app.config 绑定重定向,希望它能摆脱警告:

<dependentAssembly>
  <assemblyIdentity name="AssemblyA" publicKeyToken="..." culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="6.7.6643.0" />
</dependentAssembly>

但警告仍然存在。我已经确认,如果我将 AssemblyA 升级到 7.0.0.0,它会导致警告消失。但正如我之前所说,由于我无法控制的其他原因,我现在无法升级此程序集。

是否仅针对这一特定实例禁止显示此警告?

谢谢

【问题讨论】:

    标签: .net visual-studio msbuild visual-studio-2017 visual-studio-express


    【解决方案1】:

    1.这个警告似乎在编译器编译项目时出现,它会混淆使用哪个版本的.dll,从而引发MSB3277警告。通常,我们可以通过升级旧版本或降级新版本来解决此警告。但是在这种情况下,似乎没有解决此警告的有效方法。

    2.更重要的是,有时我们可以通过设置一些属性来抑制警告,但这似乎不适用于 MSB 警告,因为 MSB 前缀的警告是由 MSBuild 抛出的,目前没有有效的方法来抑制 MSB 警告。

    特别是对于 MSB3277,我通过 nowarn 使用 vs2017 进行测试,#pargma,proj 中的属性,但不幸的是,它不起作用。 我们可以在这里找到类似的问题:How to suppress specific MSBuild warning Suppress MSB4126

    所以,恐怕我们目前没有有效的方法来抑制 MSB3277。很抱歉给您带来不便。

    【讨论】:

    • “我没有答案”如何是公认的答案(除非您 100% 确定没有解决方案)?
    【解决方案2】:

    实际上,有一种方法可以通过编辑您的 .csproj 将警告视为消息,从而在较新版本的 MSBuild 中抑制 MSBuild 警告。

    例如..

    <PropertyGroup> 
      <MSBuildWarningsAsMessages>
        $(MSBuildWarningsAsMessages);MSB3274;MSB3275;MSB3268
      </MSBuildWarningsAsMessages>
    </PropertyGroup>
    

    【讨论】:

      猜你喜欢
      • 2018-02-25
      • 2010-09-06
      • 2014-06-26
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多