【问题标题】:When using NuGet Pack is it possible to specify the package name without a nuspec file?使用 NuGet Pack 时是否可以在没有 nuspec 文件的情况下指定包名称?
【发布时间】:2014-12-02 20:22:40
【问题描述】:

我正在尝试为 .csproj 文件创建 nuget 包,但希望包名不同于 csroj 文件(默认情况下),并且我不想指定 .nuspec 文件。有没有办法做到这一点?我只能在命令行选项上看到版本名称覆盖选项,而不是包名称覆盖选项。

我正在 TeamCity 中执行此操作,但这不是重点。我在想我需要将其他参数传递给 NuGet pack 命令吗?

谢谢,

【问题讨论】:

    标签: c# teamcity nuget


    【解决方案1】:

    Nuget 命令行不提供任何直接更改名称的选项。 http://docs.nuget.org/docs/reference/command-line-reference#Pack_Command

    如果您想要不同的项目和 nuget 包名称,您必须准备和编辑自定义 nuspec 文件。您也可以在使用例如创建包后手动执行此操作。 NuGetPackage 资源管理器。

    【讨论】:

    • 我想我可能不得不求助于使用 nuspec 文件:-(
    【解决方案2】:

    从 NuGet 4.0 开始,现在可以将包名称和其他元数据指定为 .csproj 文件中的属性。请参阅https://docs.microsoft.com/en-us/nuget/guides/create-net-standard-packages-vs2017 了解更多信息。

    【讨论】:

    • 这仅适用于 .NET Standard。我目前不认识任何使用 .NET Standard 的人,但无论哪种方式,这是一个 TeamCity 问题,而不是 Visual Studio,Project-Type Specific。
    【解决方案3】:

    Nuget 的 Properties 参数正是您要寻找的。​​p>

    如果您的 .nuspec 文件使用占位符,那么您可以通过 Properties 参数为其传递一个值。来自nuget docs

    属性。指定 token=value 对的列表,用分号分隔,其中 .nuspec 文件中每次出现的 $token$ 都将替换为给定的值。值可以是引号中的字符串。

    所以nuget.exe -Properties id=someProject 将使用“someProject”来处理$id$ 的任何出现。

    【讨论】:

      【解决方案4】:

      如果您有一个 A.nuspec,您仍然可以使用“nuget pack A.csproj”,您可以在其中指定自定义包名称,如下所示(否则包名称将与项目名称相同,即 A):

      <?xml version="1.0"?>
      <package >
        <metadata>
          <id>Custom A</id>
        </metadata>
      </package>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-06
        • 1970-01-01
        • 2010-10-04
        • 2016-07-27
        • 1970-01-01
        相关资源
        最近更新 更多