我们公司的大多数应用程序都依赖于一些核心库,因此MSBuild脚本中有一个构建规则会自动添加对它们的引用:
<When Condition=" '$(OutputType)' == 'WinExe' ">
<ItemGroup>
<ProjectReference Include="(project filepath)">
<Project>{(assembly GUID)}</Project>
<Name>(project name)</Name>
</ProjectReference>
</ItemGroup>
</When>
但是,我遇到的情况是,对于一些特定的应用程序,我想加载这些库的不同版本以提供不同的运行时备份。我可以手动添加对它们的引用,但是这个构建规则仍然适用,导致程序集加载和重复的名称解析冲突。
那么,我可以输入什么作为附加条件来检查已存在的项目引用,从而避免链接此构建脚本中的默认项目?如果我无法检查项目引用,那么我可以在我的代码中添加其他内容吗?
编辑:请注意,这与我前一段时间的this question有关 - 这里的想法是核心类被完全替换并从生成的代码中引用(这已经是正在为不同的平台完成)。是的,这是一种非常非.NET的方式,但更类似于Linux&valgrind
等实用程序替换malloc
和free
来执行检测。
答案 0 :(得分:1)
首先使用Remove attribute删除要更改的ProjectReference项目,然后使用新的元数据(GUID,名称等)添加相同的ProjectReference项目。