建立NuGet包包括自动引用依赖(Build NuGet Package automatically

2019-08-31 23:18发布

我想运行本地/内部的NuGet库 。 我想我已经找到了如何利用的NuGet和扫描包文件,包括他们在一个虚拟项目“重用”现有的NuGet包抢我的本地缓存.nupkg文件 ,但...

如何创建一个NuGet包( .nupkg从项目),自动包括所有的 dll依赖关系,并不仅仅是那些通过的NuGet抓起?

特别:

  1. 创建一个解决方案
  2. 添加新项目
  3. 添加对不同.dll文件/其他<项目-这是缺少的一部分
  4. 通过包管理器/ CMDLINE /添加的NuGet包什么
  5. 一些自动创建.nupkg

从我发现,你应该做的事情一样

  • 手动编辑.csproj文件添加<BuildPackage>true</BuildPackage>来包括依赖
  • 手动创建.nuspec文件,手动列出你的依赖 ( 类似? )
  • 手动运行nuget pack.nuspec文件

但一切是手动的,这是愚蠢的。 即使是半自动化解决方案仍然尴尬或半手工:

  • 创建.nuspec模板 -似乎不包括依赖关系,只是元
  • 通过建立事件的NuGet包 (步骤#5),你需要手动添加到每一个项目,它有自己的怪癖 :

     "$(SolutionDir).nuget\NuGet.exe" pack "$(ProjectPath)" -Properties Configuration=Release move /Y *.nupkg "$(TargetDir)" 

我会解决的东西,会自动创建一个.nuspec从项目引用清单。 那么理论上说+的构建的NuGet事件可被卷成建设项目/ NuGet包,这是我真正想看到的。

Answer 1:

你点#3( 引用添加各种.dll文件/其他<项目-这是缺失的部分 )确实包含两个不同的问题:(1)添加到各种dll文件的引用,和(2)添加在其他项目的引用相同的解决方案。

数(2)在这里已经得到了一些额外的支持,为的NuGet 2.5 。 你可以创建一个NuGet包的项目时添加一个选项包括在同一个解决方案,以其他项目的引用:

nuget pack projectfile.csproj -IncludeReferencedProjects

如果projectfile.csproj引用也被暴露的NuGet包解决方案中的任何其他项目,这些项目的NuGet软件包将被添加为依赖关系。 如果它引用在解决方案中的项目, 暴露自己的包的NuGet,它们的DLL将被包含在这个NuGet包。

至于(1),如果你发现自己经常补充说,不能作为的NuGet包dll文件到你的项目,你可以只用这些文件创建自己的(内部)的NuGet包。 如果再添加这些DLL作为NuGet包,而不是直接将文件,这个NuGet包会在你的项目中的NuGet包的依赖。



Answer 2:

对于其他的Google,你可以,如果你使用的是NuGet.targets文件运行的NuGet包使用:

<Target Name="PrePackage" BeforeTargets="BuildPackage">
  <PropertyGroup>
    <BuildCommand>$(BuildCommand) -IncludeReferencedProjects</BuildCommand>
  </PropertyGroup>
</Target>


Answer 3:

看一下这个!

我找到了解决办法是为Visual Studio扩展: https://visualstudiogallery.msdn.microsoft.com/fbe9b9b8-34ae-47b5-a751-cb71a16f7e96/view/Reviews

您只需添加一个名为NuGet包的新项目NuGet包

然后要添加有趣的,你的项目引用和BOOOM! 所有的依赖和文件目录会自动添加。 如果你想修改NuSpec数据,你就在项目单击并选择属性,然后修改你想要什么。 产生NuSpec和nupkg将在新项目的文件夹中的obj。 我希望它能帮助)。



文章来源: Build NuGet Package automatically including referenced dependencies