Nuspec 与 csproj 中的依赖关系
Dependencies in Nuspec vs. 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
文件,这将禁用第二种方式
- 新方式:specifying them in
.csproj
file
dotnet pack
支持这两种方式,但您必须添加一个 NuspecFile
属性 来引用 .nuspec
文件,遗留的有很多错误和功能缺失方式,这意味着你只能使用新的。
dotnet pack
在项目上执行恢复和构建,并使用自动生成的 .nuspec 文件将其打包,将 .csproj
中的所有 nuget 元数据属性解析为 .nuspec
属性,所有项目引用为nuget 包引用(这对于手动指定的 .nuspec
文件不可用),因此可以自动确保版本控制、依赖关系和包文件结构。
My own library 就是一个例子。版本和依赖性的东西只在它们应该在的地方被指定一次,并且不再有任何烦人的重复配置。在解决方案目录上执行 dotnet pack
会在 dist
目录上生成所有好的 .nupkg
s。
我有一个 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
文件,这将禁用第二种方式 - 新方式:specifying them in
.csproj
file
dotnet pack
支持这两种方式,但您必须添加一个 NuspecFile
属性 来引用 .nuspec
文件,遗留的有很多错误和功能缺失方式,这意味着你只能使用新的。
dotnet pack
在项目上执行恢复和构建,并使用自动生成的 .nuspec 文件将其打包,将 .csproj
中的所有 nuget 元数据属性解析为 .nuspec
属性,所有项目引用为nuget 包引用(这对于手动指定的 .nuspec
文件不可用),因此可以自动确保版本控制、依赖关系和包文件结构。
My own library 就是一个例子。版本和依赖性的东西只在它们应该在的地方被指定一次,并且不再有任何烦人的重复配置。在解决方案目录上执行 dotnet pack
会在 dist
目录上生成所有好的 .nupkg
s。