【问题标题】:How to create a Nuget Package by hand (without Nuget.exe or Nuget Explorer)?如何手动创建 Nuget 包(没有 Nuget.exe 或 Nuget Explorer)?
【发布时间】:2012-03-09 23:07:49
【问题描述】:

我已经查找了进入 Nuget 包 (.nupkg) 的文件的描述,但我还没有找到一个明确的指南,大多数东西都假设你必须使用 Nuget Explorer 或 Nuget.exe --不过好吧,就说我很固执吧。

使用 Nuget Explorer 创建包会生成一个目录,其中包含我想使用脚本或其他工具(Nuget.exe 除外)创建的文件。因此,鉴于 Nuget Explorer 生成的这个简单目录布局,我正在寻找 .psmdcp 文件、.rels 文件、[Content_Types.xml] 文件,当然还有 ProjectX.nuspec 文件的定义。

我可以找到 [Content_Typex.xml] 和 .nuspec 文件的一些详细信息,或推断它们。我尝试只用 lib/ 目录、它的内容和一个 nuspec 文件制作一个包,但显然这还不够,我得到Package does not contain a manifest——我怀疑这意味着单独的 .nuspec 不是完整的显现。

lib/
  ProjectX.dll
  ProjectX.pdb
package/
  package/services/metadata/core-properties/____hash____.psmdcp
_rel/
  .rels
[Content_Types.xml]
ProjectX.nuspec

没有手工制作 .nupkg 的指南吗?过程真的那么复杂吗?

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    .nuspec 定义有关您的包的属性(元数据)以及要包含在包中的文件列表。周围有很多描述,因此需要解决的位是工具添加的文件:

    .nupkg 文件遵循开放打包约定。如您所见,它实际上是一个包含一些预定义文件的 .zip 文件。 _rels 目录包含“部分”之间的关系。想象一个包含图像和 Excel 电子表格的 Word 文档,以直观地了解“部分”。

    包大多只包含一个部分;包本身(但可能包含模块的子包)。 _rels/.rels 文件定义了主顶层包的关系。关系有一个 ID、一个描述关系类型的 url 和一个目标,即与包有这种关系的文件。大多数包都与 .nuspec 文件(属于“清单”)和 .psmdcp 文件(属于“核心属性”)有关系。这些关系的 ID 只需要在包中是唯一的,因此它们可以是简单的字符串,例如“R1”、“R2”,但由于某种原因,它们是“R”+ choco 中 GUID 的前 16 个字节。

    核心属性似乎主要是清单文件的重新散列,穿着都柏林核心标签而不是 nuspec;我猜理论上其他程序可以基于这些显示包(如果你将它嵌入到 Word 文档中!)。可能psmdcp是“Package Services Metadata Dublin Core Properties”的缩写。检查 NuGet.Core/NuGet.Packaging/PackageCreation/Authoring/PackageBuilder.cs 我们看到文件名是一个简单的 GUID,格式为“N”(只是数字)。 lastModifiedBy 属性是“choco”程序集本身的版本信息;如果你自己创建文件,我想你真的可以把任何东西放在那里。

    [Content Types.xml] 以 MIME 类型的形式定义扩展的文件格式。这主要是样板。

    因此,总而言之:基于 .nuspec,您可以生成所有其他丢失的文件并自己将 .nupkg 放在一起,即使在 Powershell 脚本中也是如此。

    【讨论】:

      【解决方案2】:

      我写了一篇关于如何使用 NuGet XSD 的博文: http://www.xavierdecoster.com/post/2012/03/08/Hidden-gem-the-NuGet-package-manifest-XSD.aspx

      另外,请查看文档中的 NuGet 包约定: http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#Package_Conventions

      如果您需要更详细的动手实践,还有一本 Pro NuGet 书籍,深入了解各种场景: http://www.amazon.com/NuGet-Professional-Apress-Maarten-Balliauw/dp/1430241918

      【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2011-10-12
      相关资源
      最近更新 更多