MSBuild and <AutoUnifyAssemblyReferences />

本文关键字:gt AutoUnifyAssemblyReferences lt and MSBuild | 更新日期: 2023-09-27 18:25:23

"Microsoft.Bcl.Build.targets"包含此块:

    <!-- 
  Workaround MSBuild issue that prevents System.Runtime 2.5 and System.Threading.Tasks 2.5 from
  satisfying indirect dependencies on System.Runtime 1.5 and System.Threading.Tasks 1.5 respectively.  
-->
<AutoUnifyAssemblyReferences>false</AutoUnifyAssemblyReferences>

"AutoUnifyAssemblyReferences"的实际作用是什么?

MSBuild and <AutoUnifyAssemblyReferences />

它直接映射到ResolveAssemblyReferencs-任务的AutoUnify参数。

文件摘录:

此参数用于生成程序集,例如DLL不能有正常的App.Config文件。

如果为true,则生成的依赖关系图将自动处理为如果有一个App.Config文件传入到AppConfigFile参数此虚拟App.Config文件具有的bindingRedirect项每个程序集冲突,使得最高版本选择程序集。这样做的后果是关于冲突程序集的警告,因为每个冲突都将具有已解决。

如果为true,则每个不同的重新映射将导致高优先级评论显示了旧版本和新版本,并且AutoUnify是真的。

如果为true,则AppConfigFile参数必须为空

如果为false,则不会重新映射程序集版本自动。当一个程序集存在两个版本时,将发出警告发布。

如果为false,则不同版本的相同的程序集会产生高优先级注释。这些评论是然后是一个警告。该警告具有唯一的错误代码,并且包含文本,内容为"发现不同版本之间的冲突参考组件和从属组件"。

突出显示的句子似乎解释了你提到的Microsoft.Bcl.Build.Targets中的评论。

(此参数还会影响常见的MSB3247警告。)

因此,对于某些类型的"exe"程序集,AutoUnifyAssemblyReferences的默认值设置为false,而对于其他程序集类型,则设置为true(有关详细信息,请参见%Windir%'Microsoft.NET'Framework64'v4.0*'Microsoft.Common.Targets)。