使用NuGet Pack时是否可以在没有nuspec文件的情况下指定包名?

时间:2014-10-08 08:32:24

标签: c# teamcity nuget

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

我在TeamCity中这样做,但这是重点。我想我需要将其他参数传递给NuGet pack命令?

谢谢,

4 个答案:

答案 0 :(得分:2)

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

如果您想要区分项目和nuget包名称,则必须准备和编辑自定义nuspec文件。您也可以在创建包后使用例如手动执行此操作。 NuGetPackage Explorer。

答案 1 :(得分:1)

Nuget的属性参数就是你要找的东西。

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

  

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

因此,nuget.exe -Properties id=someProject会对$id$的任何出现使用“someProject”。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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