我正在尝试为.csproj文件创建一个nuget包,但希望包名不同于csroj文件(默认情况下是这样),我不想指定.nuspec文件。有办法做到这一点吗?我只能在命令行选项上看到版本名称覆盖选项,而不是包名覆盖选项。
我在TeamCity中这样做,但这是重点。我想我需要将其他参数传递给NuGet pack命令?
谢谢,
答案 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>