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 dlls)。但是nuget install不执行依赖包中的复制脚本——所以编译MyProjectTest很好,但是在执行它的 EXE 时,它的 Debug/Release 文件夹中没有本机 DLL。

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

4

1 回答 1

9

NuGet.exe 不支持它。在 codeplex 上对此进行了讨论,并且在他们的问题跟踪系统中提出了一些已关闭的问题。David Ebbo还发表了一篇关于支持此功能的问题的博客文章。

一般的问题是,在 PowerShell 脚本中,您可以使用 Visual Studio 对象模型,以便能够从 Visual Studio 外部公开它并支持所有方案,这并非易事。

通过使用 SharpDevelop作为实验来支持从 Visual Studio 外部运行 PowerShell 脚本,以了解可能的情况。这是一个相当重量级的解决方案,因为它需要 SharpDevelop 才能工作,而不仅仅是 NuGet.exe。

于 2013-03-18T20:57:14.423 回答