用多个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.Extensions和MyLibrary.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理器? 可能是最简单的方法:
看来你的问题和这个问题是一样的: 包装时为什么不包含引用的项目呢? 。 如果是这样,您可以使用-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。
- 无法更新或卸载VS2012中的NuGet程序包pipe理器
- 如果没有框架组件,无法解决程序集引用问题
- 在Visual Studio中打开项目失败,因为nuget.targets未find错误
- 如何手动卸载Visual Studio 2010扩展?
- 当一些项目包含在多个解决scheme中时,为所有解决scheme设置一个通用的nuget包文件夹
- Visual Studio 2010 nuget错误:底层连接已closures:无法build立SSL / TLS安全通道的信任关系
- NuGet包pipe理器:“AutoMapper”已经有一个为“Microsoft.CSharp”定义的依赖项
- debugging私人NuGet包?
- 我可以发布一个私人的NuGet包吗?