根据其配置更改项目引用

时间:2015-07-23 23:30:58

标签: c# msbuild nuget teamcity

我有两个解决方案。一个是C#ASP.NET应用程序Foo,另一个是类库Bar。为了让我在Bar中调试Foo,我需要添加一个包含其符号的引用。一切都很好。

但是,此参考会在上传到TeamCity时中断构建,因为它将在解决方案之外寻找引用。所以我需要让我的项目参考来自:

../../bar/bin/bar.dll

../packages/bar.0.2.3/lib/bar.dll

我可以使用Choose标记在MSBuild条件中执行此操作。

<Choose>
  <When Condition="$(Configuration) == 'Debug'">
    <ItemGroup>
      <Reference Include="Bar, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
        <HintPath>../../bar/bin/bar.dll</HintPath>
        <Private>True</Private>
      </Reference>
    </ItemGroup>
  </When>
  <Otherwise>
    <ItemGroup>
      <Reference Include="Bar, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
        <HintPath>../packages/bar.0.2.3/lib/bar.dll</HintPath>
        <Private>True</Private>
      </Reference>
    </ItemGroup>
  </Otherwise>
</Choose>

这实际上很漂亮。只有一个主要问题:当我在Nuget中运行更新命令时,它会添加一个引用并覆盖我的更改。

更简单的方法是什么?我愿意接受任何建议。优选地,如何使用预构建事件修改引用?我只需要根据配置更改一个XML节点。

0 个答案:

没有答案