通过nuget命令行执行powershell脚本

时间:2013-03-18 10:23:28

标签: .net nuget

我创建了一个包含本机DLL的本机包。该包与SqlServerCompact.4.0.8852.1.nupkg类似。

当我通过'Manage Nuget Packages ...'通过GUI安装软件包时,一切都很好,本机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 dlls)。但是nuget install不执行依赖包中的复制脚本 - 因此编译MyProjectTest很好,但是在执行其EXE时,其Debug / Release文件夹中没有本机DLL。

我的问题是为什么从命令行安装软件包时不执行powershell脚本?以及如何处理它?谢谢!

1 个答案:

答案 0 :(得分: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。