我创建了一个包含本机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脚本?以及如何处理它?谢谢!
答案 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。