Наш 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, чье местоположение происходит от выполнения цели?