Добавить ссылку на сборку динамически в MSBuild - PullRequest
1 голос
/ 04 мая 2020

Наш C# проект Foo, построенный с использованием MSBuild, зависит от времени компиляции от сборки Bar.dll. Проблема в том, что мы не знаем местоположение Bar.dll, так как оно может отличаться на каждом компьютере разработчика. Чтобы получить местоположение Bar.dll, нам нужно запустить исполняемый файл locate Bar.dll и использовать его вывод, чтобы добавить ссылку на сборку в Foo. Я хочу решить эту проблему, просто изменив файл .csproj, если возможно, без пользовательских цепочек сборки, без изменения переменных среды.

Я знаю, что могу запустить исполняемый файл locate в цели BeforeBuild, используя узел <Exec Command="locate Bar.dll" ConsoleToMSBuild=true> ... и сохраните его значение, скажем, свойство BarLocation - но разрешение свойства, по-видимому, происходит до выполнения BeforeBuild, поэтому я не могу использовать свойство BarLocation в узле <Reference Include="${BarLocation}"/>. Как мне это решить? Как я могу добавить ссылку на DLL, чье местоположение происходит от выполнения цели?

1 Ответ

1 голос
/ 04 мая 2020

Поместите <ItemGroup> для ссылки внутри вашей цели BeforeBuild.

<Target Name="BeforeBuild">
  <!-- Code to set BarLocation goes here... -->
  <ItemGroup>
      <Reference Include="$(BarLocation)" />
  </ItemGroup>
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...