透过NuGet命令行执行PowerShell脚本

4
我制作了一个本地包,其中包括本地的DLL文件。这个包就像 SqlServerCompact.4.0.8852.1.nupkg 一样。
当我通过“管理Nuget包…”的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 dll)。然而,nuget install 不会在依赖包中执行复制脚本,因此编译 MyProjectTest 是可以的,但在执行其 EXE 时,其 Debug/Release 文件夹中没有本地 DLL。
我的问题是为什么 powershell 脚本在从命令行安装包时不被执行?如何解决这个问题?谢谢!
1个回答

9
NuGet.exe不支持此功能。 CodePlex上的讨论中有一些问题已经关闭,这些问题在其问题跟踪系统中提出。David Ebbo的博客文章也谈到了支持此功能的问题。
一般问题是,在PowerShell脚本中,您可以使用Visual Studio对象模型,因此要将其从Visual Studio之外公开并支持所有场景是非常困难的。
我尝试支持使用SharpDevelop从Visual Studio外运行PowerShell脚本作为实验,以查看可能性。它是一个相当重量级的解决方案,因为它需要SharpDevelop而不仅仅是NuGet.exe。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接