MSBuild 和 <AutoUnifyAssemblyReferences />

6
“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" 究竟是什么作用?

1个回答

11

它直接映射到ResolveAssemblyReferences-TaskAutoUnify参数。

来自文档的摘录:

此参数用于构建诸如DLL之类的程序集,这些程序集无法具有正常的App.Config文件。

如果设置为true,则结果依赖项图会被自动处理,就好像已经传递了包含`AppConfigFile`参数的虚拟App.Config文件一样。该虚拟文件为每个冲突的程序集组提供一个bindingRedirect条目,以选择最高版本的程序集。其后果是永远不会有关于冲突程序集的警告,因为每个冲突都将得到解决。

如果设置为true,则每次不同的重新映射都会产生一个高优先级的注释,显示旧版本和新版本,并且AutoUnify为true。

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

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

如果设置为false,则相同程序集的不同版本之间的每个不同冲突都会产生一个高优先级注释。这些注释后面跟着一个警告。该警告具有唯一的错误代码,并包含文本,指出“在引用和依赖项程序集之间发现了冲突”。

加粗的句子似乎解释了您所提到的`Microsoft.Bcl.Build.Targets`中的注释。

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

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


Christian,谢谢你的回答!现在,我希望我能解决我的问题。 - Ruslan Dayanov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接