簡體   English   中英

在不使用.nuspec 的情況下為 NuGet package 設置自定義 ID

[英]Set custom ID for a NuGet package without using .nuspec

我需要使用命令行自定義名稱發布到 NuGet 的 Visual Studio C# 庫。

據我了解,只有一種方法可以做到這一點 - 使用指定ID.nuspec文件。 這是我不想做的,因為我必須在每次項目更改時手動修復文件。 我也找不到從.cproj文件生成.nuspec (帶有依賴項)的工具。

我一直在尋找nuget pack選項,但只找到了似乎無法勝任的-Properties

我也找不到從 a.cproj 文件生成 a.nuspec(帶有依賴項)的工具。

據我所知,沒有簡單的工具( nuget spec命令不支持這樣做)來生成.nuspec與 package 從xx.csproj依賴項。 由於您的實際問題是Set custom ID for a NuGet package **without** using.nuspec ,所以我不會在這里討論如何生成和修改它。

我一直在尋找 nuget 包選項,但只找到了似乎無法勝任的-Properties。

我假設您使用的是使用PackageReference格式的.net framework項目。 由於您不願意使用.nuspec文件,因此您必須使用nuget pack xx.csprojnuget pack (在 csproj 存在的地方運行此命令)命令。

但據我所知,還有一個已知問題nuget pack在將此命令用於使用PackageReference格式的項目時不會顯示依賴項。 是的, nuget pack -Properties - 屬性無法滿足您當前項目類型的需求。 所以這不是一個好的選擇。

在不使用.nuspec 的情況下為 NuGet package 設置自定義 ID

建議您的原始問題:

由於您不想使用 .nuspec 文件, nuget pack不適合您的情況。 要創建 nuget package, nuget.exe不是您唯一的選擇。 您還可以考慮dotnet CLIMSBuild.exe

1 .您可以選擇將您的項目從non-SDK format更改為new SDK format ,然后您可以在項目文件(.csproj)中指定ID ,您不再需要.nuspec 此外,遷移后,它將支持在命令行中指定ID

因此,您可以使用dotnet pack -p:PackageID=TestName之類的命令輕松地在命令行中指定ID (或其他 package 元數據)。 (對於 sdk 格式,也可以使用msbuild.exe

2 .If you don't want to change your current project format to SDK format , you can follow this topic : If you are using MSBuild with a non-SDK-style project and PackageReference, add the NuGet.Build.Tasks.Pack package到你的項目。

使用 package 然后使用命令msbuild -t:restore在命令行中恢復 nuget 包。 然后使用msbuild -t:pack -p:PackageID=xxx之類的命令在命令行中指定 ID。(或在 xx.csproj 中設置該 ID)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM