2013-03-18 6 views
2

Я создал собственный пакет, содержащий встроенные DLL. Пакет похож на SqlServerCompact.4.0.8852.1.nupkg.Выполнять скрипты powershell через командную строку nuget

Когда я устанавливаю пакет через 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 в своей папке Debug/Release нет встроенной DLL.

Вопрос: почему сценарий powershell не выполняется при установке пакетов из командной строки? И как с этим бороться? Благодаря!

ответ

7

Не поддерживается NuGet.exe. Об этом есть discussion on codeplex, и есть некоторые проблемы, которые были закрыты, которые были подняты в их системе отслеживания проблем. Существует также blog post by David Ebbo о проблемах с поддержкой этой функции.

Общая проблема заключается в том, что в сценарии PowerShell вы можете использовать объектную модель Visual Studio, чтобы иметь возможность выставлять это извне Visual Studio и поддерживать все сценарии нетривиальным.

Я посмотрел на поддержку running of PowerShell scripts from outside Visual Studio by using SharpDevelop в качестве эксперимента, чтобы увидеть, что было возможно. Это довольно тяжелое решение, так как SharpDevelop требует работы, а не только NuGet.exe.

Смежные вопросы