构建包时如何限制版本?
How to limit version when building a package?
我有一个多目标项目(netstandard2.0
和 net461
)。
当我收集项目时,我得到了一个包。
How can I limit version? (=1.0.6)
我尝试这样做 Version="[1.0.6]",但是项目没有构建
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<RepositoryUrl></RepositoryUrl>
<Copyright>-</Copyright>
<Description>-</Description>
<Company>-</Company>
<Authors>-</Authors>
<PackageProjectUrl>-</PackageProjectUrl>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>OracleExtensions.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<Version>1.0.7</Version>
<AssemblyVersion>1.0.7.0</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>bin\Debug\PRB.OracleExtensions.xml</DocumentationFile>
<DefineConstants>TRACE;DEBUG</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DocumentationFile>bin\Release\PRB.OracleExtensions.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<None Remove="licenses.licx" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="licenses.licx" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Devart.Data" Version="5.0.1926" />
<PackageReference Include="Devart.Data.Oracle" Version="9.5.502" />
<PackageReference Include="Devart.Data.Linq" Version="4.8.1471" />
<PackageReference Include="Devart.Data.Oracle.Linq" Version="4.8.1471" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.1" />
<PackageReference Include="System.ServiceModel.Primitives" Version="4.4.2" />
<ProjectReference Include="..\PRB.Extensions\PRB.Extensions.csproj">
<SpecificVersion>True</SpecificVersion>
</ProjectReference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<Reference Include="Devart.Data, Version=5.0.1926.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<Private>True</Private>
<HintPath>C:\Program Files (x86)\Common Files\Devart\dotConnect\NET2\Devart.Data.dll</HintPath>
</Reference>
<Reference Include="Devart.Data.Linq, Version=4.8.1471.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<Private>True</Private>
<HintPath>C:\Program Files (x86)\Common Files\Devart\dotConnect\NET2\Devart.Data.Linq.dll</HintPath>
</Reference>
<Reference Include="Devart.Data.Oracle, Version=9.5.502.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<Private>True</Private>
<HintPath>C:\Program Files (x86)\Common Files\Devart\dotConnect\NET2\Devart.Data.Oracle.dll</HintPath>
</Reference>
<Reference Include="Devart.Data.Oracle.Linq, Version=4.8.1471.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<Private>True</Private>
<HintPath>C:\Program Files (x86)\Common Files\Devart\dotConnect\NET2\Devart.Data.Oracle.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" Version="4.4.1" />
<Reference Include="System.ServiceModel" Version="4.0.0" />
<ProjectReference Include="..\PRB.WcfExtensions\PRB.WcfExtensions.csproj">
<SpecificVersion>True</SpecificVersion>
</ProjectReference>
<ProjectReference Include="..\PRB.Extensions\PRB.Extensions.csproj">
<SpecificVersion>True</SpecificVersion>
</ProjectReference>
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
</Project>
How to limit version when building a package?
这是一个关于限制 ProjectReference
版本的已知问题。目前,semantic versioning 不支持 ProjectReference
,因此我们无法像在 PackageReference
.
上那样对 ProjectReference
设置版本上限
对于已知问题,请检查:Allow an upper limit Version for ProjectReference references in nupkg from dotnet pack
to support semver。
作为 解决方法,我们可以将 ProjectReference
转换为 PackageReference
,然后使用 Version="[1.0.6]"
作为 PackageReference
.
详细步骤:
1) 为项目PRB.Extensions
和PRB.WcfExtensions
生成nuget包,获取包PRB.Extensions.1.0.6.nupkg
和PRB.WcfExtensions.1.0.0.nupkg
.
2) 将这两个包设置为本地源,然后将它们安装到项目PRB.OracleExtensions
,然后您将得到以下代码:
<ItemGroup>
<PackageReference Include="PRB.Extensions" Version="1.0.6" />
</ItemGroup>
3) 将版本限制设置为 PackageReference
:
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<PackageReference Include="PRB.Extensions" Version="[1.0.6]" />
<PackageReference Include="PRB.WcfExtensions" Version="[1.0.0]" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="PRB.Extensions" Version="[1.0.6]" />
</ItemGroup>
注意:当你使用PackageReference
而不是ProjectReference
时,你应该在将nuget包添加到项目之前删除ProjectReference
PRB.OracleExtensions
.
我有一个多目标项目(netstandard2.0
和 net461
)。
当我收集项目时,我得到了一个包。
How can I limit version? (=1.0.6)
我尝试这样做 Version="[1.0.6]",但是项目没有构建
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<RepositoryUrl></RepositoryUrl>
<Copyright>-</Copyright>
<Description>-</Description>
<Company>-</Company>
<Authors>-</Authors>
<PackageProjectUrl>-</PackageProjectUrl>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>OracleExtensions.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<Version>1.0.7</Version>
<AssemblyVersion>1.0.7.0</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>bin\Debug\PRB.OracleExtensions.xml</DocumentationFile>
<DefineConstants>TRACE;DEBUG</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DocumentationFile>bin\Release\PRB.OracleExtensions.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<None Remove="licenses.licx" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="licenses.licx" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Devart.Data" Version="5.0.1926" />
<PackageReference Include="Devart.Data.Oracle" Version="9.5.502" />
<PackageReference Include="Devart.Data.Linq" Version="4.8.1471" />
<PackageReference Include="Devart.Data.Oracle.Linq" Version="4.8.1471" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.1" />
<PackageReference Include="System.ServiceModel.Primitives" Version="4.4.2" />
<ProjectReference Include="..\PRB.Extensions\PRB.Extensions.csproj">
<SpecificVersion>True</SpecificVersion>
</ProjectReference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<Reference Include="Devart.Data, Version=5.0.1926.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<Private>True</Private>
<HintPath>C:\Program Files (x86)\Common Files\Devart\dotConnect\NET2\Devart.Data.dll</HintPath>
</Reference>
<Reference Include="Devart.Data.Linq, Version=4.8.1471.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<Private>True</Private>
<HintPath>C:\Program Files (x86)\Common Files\Devart\dotConnect\NET2\Devart.Data.Linq.dll</HintPath>
</Reference>
<Reference Include="Devart.Data.Oracle, Version=9.5.502.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<Private>True</Private>
<HintPath>C:\Program Files (x86)\Common Files\Devart\dotConnect\NET2\Devart.Data.Oracle.dll</HintPath>
</Reference>
<Reference Include="Devart.Data.Oracle.Linq, Version=4.8.1471.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<Private>True</Private>
<HintPath>C:\Program Files (x86)\Common Files\Devart\dotConnect\NET2\Devart.Data.Oracle.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" Version="4.4.1" />
<Reference Include="System.ServiceModel" Version="4.0.0" />
<ProjectReference Include="..\PRB.WcfExtensions\PRB.WcfExtensions.csproj">
<SpecificVersion>True</SpecificVersion>
</ProjectReference>
<ProjectReference Include="..\PRB.Extensions\PRB.Extensions.csproj">
<SpecificVersion>True</SpecificVersion>
</ProjectReference>
<PackageReference Include="System.ValueTuple" Version="4.4.0" />
</ItemGroup>
</Project>
How to limit version when building a package?
这是一个关于限制 ProjectReference
版本的已知问题。目前,semantic versioning 不支持 ProjectReference
,因此我们无法像在 PackageReference
.
ProjectReference
设置版本上限
对于已知问题,请检查:Allow an upper limit Version for ProjectReference references in nupkg from dotnet pack
to support semver。
作为 解决方法,我们可以将 ProjectReference
转换为 PackageReference
,然后使用 Version="[1.0.6]"
作为 PackageReference
.
详细步骤:
1) 为项目PRB.Extensions
和PRB.WcfExtensions
生成nuget包,获取包PRB.Extensions.1.0.6.nupkg
和PRB.WcfExtensions.1.0.0.nupkg
.
2) 将这两个包设置为本地源,然后将它们安装到项目PRB.OracleExtensions
,然后您将得到以下代码:
<ItemGroup>
<PackageReference Include="PRB.Extensions" Version="1.0.6" />
</ItemGroup>
3) 将版本限制设置为 PackageReference
:
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<PackageReference Include="PRB.Extensions" Version="[1.0.6]" />
<PackageReference Include="PRB.WcfExtensions" Version="[1.0.0]" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="PRB.Extensions" Version="[1.0.6]" />
</ItemGroup>
注意:当你使用PackageReference
而不是ProjectReference
时,你应该在将nuget包添加到项目之前删除ProjectReference
PRB.OracleExtensions
.