Dot-Net-Core
Nuspec 與 csproj 中的依賴關係
我有一個 Dotnet Core 2.1 項目,它有一個 nuspec 和一個 csproj 文件 - 一個主要的麻煩是 csproj 描述這樣的依賴項:
<ItemGroup> <PackageReference Include="Refit" Version="4.6.16" /> <PackageReference Include="Microsoft.AspNetCore.All" Version="2.1" /> <PackageReference Include="Refit.HttpClientFactory" Version="4.6.16" /> </ItemGroup>雖然 nuspec 這樣做:
<dependencies> <dependency id="Refit" version="4.6.16" /> <dependency id="Refit.HttpClientFactory" version="4.6.16" /> <dependency id="Microsoft.AspNetCore.All" version="2.1" /> </dependencies>兩者都很容易不同步,並且兩次保持相同的資訊很煩人。有沒有辦法避免這種情況?
肯定有一種簡單的方法,只需使用
dotnet pack代替文件而不是nuget pack文件。.csproj``.nuspec
dotnet pack支持 2 種方式來指定 nuget 包屬性。
- 傳統方式:使用
.nuspec文件,這將禁用第二種方式- 新方法:在文件中指定它們
.csproj
dotnet pack兩種方式都支持,但是您必須添加一個NuspecFile屬性來引用.nuspec文件,並且舊方式存在很多錯誤和功能缺失,這意味著您只能使用新方式。
dotnet pack在項目上執行恢復和建構,並使用自動生成的 .nuspec 文件將其打包,將所有 nuget 元數據屬性解析.csproj為.nuspec屬性,並將所有項目引用作為 nuget 包引用(這不適用於手動指定的.nuspec文件),以便版本控制、依賴性、並且封包件結構的東西可以自動保證。我自己的圖書館就是一個例子。版本和依賴項僅在應有的位置指定一次,並且不再有任何煩人的重複配置。在解決方案目錄上執行
dotnet pack將在該目錄上生成所有好的.nupkgsdist。