在msbuild中,如果项目没有特定的引用,如何向项目添加默认项目引用?

时间:2017-04-17 16:53:15

标签: .net msbuild

我们公司的大多数应用程序都依赖于一些核心库,因此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等实用程序替换mallocfree来执行检测。

1 个答案:

答案 0 :(得分:1)

首先使用Remove attribute删除要更改的ProjectReference项目,然后使用新的元数据(GUID,名称等)添加相同的ProjectReference项目。