我有两个解决方案。一个是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节点。