![](/img/trans.png)
[英]Create nuget package that references referenced .dlls without using .nuspec
[英]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.csproj
或nuget pack
(在 csproj 存在的地方運行此命令)命令。
但據我所知,還有一個已知問題是nuget pack
在將此命令用於使用PackageReference
格式的項目時不會顯示依賴項。 是的, nuget pack -Properties
- 屬性無法滿足您當前項目類型的需求。 所以這不是一個好的選擇。
在不使用.nuspec 的情況下為 NuGet package 設置自定義 ID
建議您的原始問題:
由於您不想使用 .nuspec 文件, nuget pack
不適合您的情況。 要創建 nuget package, nuget.exe
不是您唯一的選擇。 您還可以考慮dotnet CLI
和MSBuild.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.