Выполнять сценарии powershell через командную строку nuget
Я сделал собственный пакет, который включает в себя собственные библиотеки DLL. Пакет похож на SqlServerCompact.4.0.8852.1.nupkg.
Когда я устанавливаю пакет через GUI с помощью "Manage Nuget Packages ...", все в порядке, и нативная DLL копируется в папку Debug/Release. Копирование нативных Dll выполняется скриптом, похожим на тот, что в SqlSerCompact.
И у меня есть следующее .bat
файл для автоматизации процедуры упаковки MyProject
:
..\..\tools\nuget\bin\NuGet.exe install MyProject\packages.config -o packages\
..\..\tools\nuget\bin\NuGet.exe install MyProjectTest\packages.config -o packages\
..\..\tools\nuget\bin\nuget update MyProject.sln
msbuild /m /p:Configuration=Release /p:Platform="x64" MyProject.sln
..\..\tools\nuget\bin\nuget pack MyProject.nuspec
Приведенный выше скрипт отлично работает MyProject.nupkg
(Для компиляции нужны только.Net DLL). тем не мение nuget install
не выполняет сценарий копирования в пакетах зависимостей - поэтому компиляция MyProjectTest
это нормально, но при выполнении его EXE нет собственной библиотеки DLL в его папке Debug/Release.
У меня вопрос, почему сценарий powershell не выполняется при установке пакетов из командной строки? И как с этим бороться? Спасибо!
1 ответ
Он не поддерживается NuGet.exe. Об этом обсуждается в codeplex, и есть некоторые проблемы, которые были закрыты, которые были подняты в их системе отслеживания проблем. Есть также запись в блоге Дэвида Эббо о проблемах с поддержкой этой функции.
Общая проблема заключается в том, что в сценарии PowerShell вы можете использовать объектную модель Visual Studio, чтобы иметь возможность предоставлять ее извне Visual Studio и поддерживать все сценарии нетривиально.
Я посмотрел на поддержку запуска сценариев PowerShell извне Visual Studio, используя SharpDevelop в качестве эксперимента, чтобы увидеть, что было возможно. Это довольно тяжеловесное решение, поскольку для его работы требуется SharpDevelop, а не только NuGet.exe.