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

C# 将对程序集的引用动态添加到MSBuild,c#,msbuild,C#,Msbuild,我们的C#项目Foo是使用MSBuild构建的,它在编译时依赖于Bar.dll程序集。问题是,我们不知道Bar.dll的位置,因为它可能在每个开发人员的计算机上都不同。要获取Bar.dll的位置,我们需要运行一个可执行文件locate Bar.dll,并使用它的输出将对程序集的引用添加到Foo。我只想通过修改.csproj文件来解决这个问题,如果可能的话,不需要定制构建链,也不需要修改环境变量 我知道我可以使用..节点在BeforeBuild目标中运行locate可执行文件,并将其值存储在pro

我们的C#项目
Foo
是使用MSBuild构建的,它在编译时依赖于
Bar.dll
程序集。问题是,我们不知道
Bar.dll
的位置,因为它可能在每个开发人员的计算机上都不同。要获取
Bar.dll
的位置,我们需要运行一个可执行文件
locate Bar.dll
,并使用它的输出将对程序集的引用添加到
Foo
。我只想通过修改
.csproj
文件来解决这个问题,如果可能的话,不需要定制构建链,也不需要修改环境变量

我知道我可以使用
..
节点在
BeforeBuild
目标中运行
locate
可执行文件,并将其值存储在property
BarLocation
中,但属性解析似乎发生在执行
BeforeBuild
之前,因此,我无法在
节点中使用
BarLocation
属性。我如何解决这个问题?如何向其位置来自执行目标的DLL添加引用?

在构建前将引用的
放在
目标中

<Target Name="BeforeBuild">
  <!-- Code to set BarLocation goes here... -->
  <ItemGroup>
      <Reference Include="$(BarLocation)" />
  </ItemGroup>
</Target>