用多个DLL创buildnuget包

比方说,我有一个这样的结构的项目:

MyLibrary\ MyLibrary.sln MyLibrary.Core\ MyLibrary.Core.csproj MyLibrary.Extensions\ MyLibrary.Extensions.csproj MyLibrary.Tests\ MyLibrary.Tests.csproj 

我想创build一个包装MyLibrary.Core.dll和MyLibrary.Extensions.dll的NuGet包。 我似乎无法弄清楚如何让NuGet做到这一点。 我已经尝试了手动构build一个spec文件,我试过用“nuget spec MyLibrary.Core.csproj”构build一个。 我已经尝试将所有的DLL添加到一个lib /文件夹,我知道这是基于约定的机制,将DLL添加到包。 在任何情况下,我都可以让MyLibary.Core.dll进入软件包,但MyLibrary.Extensions.dll并没有最终与它打包在一起。

TLDR:创build包含多个项目/程序集的NuGet包的最佳做法是什么? 那里有一个关于这个的教程吗? 我发现的教程都集中在简单的单项目演示。

您将在单个项目(或nuspec文件)上运行NuGet,但它通过file元素支持指向其他项目的指针。 这个元素使用项目引用的名字,所以你可以避免必须find其他项目文件的位置,以及b)将文件复制到一个特定的地方作为后期构build步骤。

假设您有一个用于MyLibrary.Core.csproj的nuspec文件,并且它引用了MyLibrary.ExtensionsMyLibrary.Tests ,使得它们在构build之后最终位于bin目录中:

 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> ... </metadata> <files> <file src="bin\Release\MyLibrary.Extensions.dll" target="lib\net40" /> <file src="bin\Release\MyLibrary.Tests.dll" target="lib\net40" /> </files> </package> 

有了这个设置,所有的引用都将在NuGet包的适当位置结束。 你仍然有硬编码的“释放”在那里,但我打赌很可能不会分发他们的debugging版本的NuGet包。

你有没有生成一个空白的nuspec文件:

 nuget spec 

如果你使用这个文件,然后把你的dll放在一个名为lib的文件夹下,它将打包它们。

我试图从一个项目或DLL生成一个nuspec文件有点麻烦。 此外,如果您手动引用nuspec文件中的任何文件,则不使用约定。 这可能是由dll或项目生成的nuspecs的问题。

另外,如果你试图从一个在不同文件夹中执行的构build脚本运行这个脚本,你可以通过-BasePath命令行来告诉nuget你的.lib文件夹的位置:

 build\nuget.exe pack nuget\Company.Project.nuspec -BasePath nuget\ 

你有没有尝试NuGet包资源pipe理器? 可能是最简单的方法:

http://nuget.codeplex.com/releases/view/59864

看来你的问题和这个问题是一样的: 包装时为什么不包含引用的项目呢? 。 如果是这样,您可以使用-includereferencedprojects选项(请参阅http://docs.nuget.org/docs/reference/command-line-reference#Pack_Command )。

我最近发表了一个解决scheme…

我们的解决scheme可以在您构build解决scheme时自动创buildNuGet包,其中每个包可以包含多个程序集,在同一个构build过程中对外部NuGets和NuGets的引用,甚至包括debugging源代码。

在你的情况下,你需要做的只是添加一个新的类库项目到你的解决scheme,参考你想打包的项目,然后添加一个后期构build事件。

你可以在这里find一篇带有一个步行指南的文章,在这里find源代码+二进制文件 。

我有一些教程如何做到这一点与Windows和Visual Studio:

创build本地文件夹,并将其命名为:c:/ packages // lib – 重要的是在文件夹中创build另一个文件夹,将其称为lib,并在那里通过dll。

打开nuget包浏览器 – https://npe.codeplex.com/downloads/get/clickOnce/NuGetPackageExplorer.application

用户界面非常直观,只需添加DLL并将其导出到/ lib(对于教程https://blog.zwezdin.com/2014/building-nuget-packages-with-gui-tool/它在俄罗斯,但在图片上看到它的stream量约3次点击);

它会创buildnuspec文件

打开GIT BASH – https://git-for-windows.github.io/并导航到:cd c:=> cd packages(的path)

*也许在Windows上,您将需要提供开发人员selectWindows的Linux的东西( https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10 / )

在GIT BASH中input命令:nuget add -source [options]

其中::nuspec的全名(包括.nuspec)

和:文件夹中lib文件夹的path(c:/ packages / lib)

行动结束后成功

在GIT BASH中input另一个命令:

nuget pack .nuspec

不是在这个文件夹中有.nupkg文件。

如何在本地安装Nuget Package .nupkg文件? – 教程如何将其添加到Visual Studio。