В настоящее время я упаковываю пакет nuget для своего code generator project, и я дошел до того, что включил исполняемый файл в каталог и цель сборки в этот процесс.Построение пути целевых инструментов
Частичное от nuspec
<files>
<file src="cgbr.targets" target="build\cgbr.targets" />
<file src="cgbr.json" target="content\cgbr.json" />
<file src="..\bin\CGbR.Lib.dll" target="lib\CGbR.Lib.dll" />
<file src="..\bin\cgbr.exe" target="tools\cgbr.exe" />
</files>
Содержание cgbr.targets
файла
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="BeforeBuild">
<Exec Command="cgbr.exe $(ProjectDir)"/>
</Target>
</Project>
Теперь, когда я установить пакет я вижу, что он включен в процесс сборки. К сожалению, путь к cgbr.exe
недействителен, и я немного застрял. Конечно, я мог бы использовать $(SolutionDir)packages\CGbR.0.3\tools\cgbr.exe
, но мне пришлось бы изменять его каждый раз, когда меняю версию.
Чтобы уточнить: мне нужен путь к пути к инструментам пакетов.
Edit: Найден related post
Относительный путь хороший, но мне нужен относительный путь к моему каталогу пакетов nuget. – Toxantron
@Toxantron Правильно, но в msbuild нет понятия «каталог пакетов nuget». Однако есть что-то для местоположения текущего файла, который находится внутри вашего каталога пакетов nuget. Если ваш файл proj находится в каталоге «build» пакета, тогда каталог пакета nuget «$ (MSBuildThisFileDirectory) ..», и вы можете найти что-нибудь оттуда. –
Теперь я понял. Ты гений! Большое спасибо! ;) – Toxantron