繁体   English   中英

动态添加对程序集的引用到 MSBuild

[英]Add reference to assembly dynamically to MSBuild

我们使用 MSBuild 构建的 C# 项目FooBar.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM