2013-03-18 147 views
2

我製作了一個包含原生DLL的本地軟件包。該軟件包就像SqlServerCompact.4.0.8852.1.nupkg通過nuget命令行執行powershell腳本

當我通過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(編譯只需要淨的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。