Chr*_*uer 4 csproj nuget nuspec .net-core
我有一个同时具有nuspec和csproj文件的Dotnet Core 2.1项目-一个主要的麻烦是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>
Run Code Online (Sandbox Code Playgroud)
虽然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>
Run Code Online (Sandbox Code Playgroud)
两者很容易不同步,并且两次保留相同的信息很烦人。有办法避免这种情况吗?
肯定有一种简单的方法,只使用dotnet pack代替nuget pack和.csproj文件而不是.nuspec文件即可。
dotnet pack 支持两种指定nuget包属性的方法。
.nuspec文件,这将禁用第二种方式.csproj文件中指定它们dotnet pack支持这两种方式,但是您必须添加NuspecFile属性来引用.nuspec文件,并且传统方式存在很多错误和功能缺失,这意味着您只能使用新的方式。
dotnet pack执行还原并在项目上构建,并用自动生成的.nuspec文件打包,将所有nuget元数据属性解析.csproj为.nuspec属性,将所有项目引用解析为nuget包引用(这不适用于手动指定的.nuspec文件),以便进行版本控制,依赖性,和包文件结构可以自动得到保证。
我自己的图书馆就是一个例子。版本和依赖项仅在应有的位置指定一次,并且不再有任何烦人的重复配置。执行dotnet pack关于解决方案目录将产生都好.nupkg于S dist目录。
| 归档时间: |
|
| 查看次数: |
2328 次 |
| 最近记录: |