[英]Add reference to assembly dynamically to MSBuild
我们使用 MSBuild 构建的 C# 项目Foo
对Bar.dll
程序集具有编译时依赖性。 问题是,我们不知道Bar.dll
的位置,因为它可能在每个开发者的计算机上都不同。 要获取Bar.dll
的位置,我们需要运行一个可执行的locate Bar.dll
并使用它的 output 将程序集的引用添加到Foo
。 如果可能的话,我想通过修改.csproj
文件来解决这个问题,没有自定义构建链,没有修改环境变量。
我知道我可以使用<Exec Command="locate Bar.dll" ConsoleToMSBuild=true>...
节点在BeforeBuild
目标中运行locate
可执行文件,并将其值存储在属性BarLocation
中 - 但属性解析似乎发生在之前BeforeBuild
已执行,因此我无法在<Reference Include="${BarLocation}"/>
节点中使用BarLocation
属性。 我该如何解决这个问题? 如何添加对其位置来自执行目标的 DLL 的引用?
将<ItemGroup>
放在BeforeBuild
目标中作为参考。
<Target Name="BeforeBuild">
<!-- Code to set BarLocation goes here... -->
<ItemGroup>
<Reference Include="$(BarLocation)" />
</ItemGroup>
</Target>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.