C# 使用NuGet Pack时,是否可以在不使用nuspec文件的情况下指定包名?

C# 使用NuGet Pack时,是否可以在不使用nuspec文件的情况下指定包名?,c#,teamcity,nuget,C#,Teamcity,Nuget,我正在尝试为.csproj文件创建一个nuget包,但希望包名与csroj文件不同(默认情况下是这样),并且不希望指定.nuspec文件。有没有办法做到这一点?我只能在命令行选项上看到版本名覆盖选项,而不能看到包名覆盖选项 我在TeamCity这样做,但这不是重点。我想我需要将其他参数传递给NuGet pack命令 谢谢,Nuget命令行不提供任何直接更改名称的选项。 如果您想要不同的项目和nuget包名称,您必须准备和编辑自定义nuspec文件。您也可以在创建包后使用NuGetPackage

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

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


谢谢,

Nuget命令行不提供任何直接更改名称的选项。


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

从NuGet 4.0开始,现在可以将包名和其他元数据指定为.csproj文件中的属性。有关详细信息,请参阅。

Nuget的属性参数就是您要查找的参数

如果
.nuspec
文件使用占位符,则可以通过Properties参数为其传递值。从:

财产。指定由分号分隔的token=值对列表,其中.nuspec文件中出现的每个$token$都将替换为给定值。值可以是带引号的字符串

因此,
nuget.exe-Properties id=someProject
将使用“someProject”处理
$id$

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


定制

我想我可能不得不求助于使用nuspec文件:-(这仅适用于.NET标准。我目前不知道有人使用.NET标准,但无论如何,这是一个团队城市问题,而不是Visual Studio,项目类型特定。
<?xml version="1.0"?>
<package >
  <metadata>
    <id>Custom A</id>
  </metadata>
</package>