Как ограничить версию при сборке пакета? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть проект с многоцелевым таргетингом (netstandard2.0 и net461).

Когда я собираю проект, я получаю пакет.

enter image description here

Как я могу ограничить версию?(= 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>

1 Ответ

0 голосов
/ 25 мая 2018

Как ограничить версию при сборке пакета?

Это известная проблема с ограничением версии для ProjectReference.На данный момент семантическое управление версиями не поддерживает ProjectReference, поэтому мы не можем установить верхний предел версии для ProjectReference, как мы делаем для PackageReference.

Для Известная проблема , проверьте: Разрешить верхний предел Версия для ссылок ProjectReference в nupkg от dotnet pack для поддержки semver .

В качестве обходного пути , мыможно преобразовать ProjectReference в PackageReference, затем использовать Version="[1.0.6]" для PackageReference.

Подробные шаги:

1) Создать пакет nugetдля проекта PRB.Extensions и PRB.WcfExtensions получите пакет 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, вы должны удалить ProjectReference перед добавлением пакета nuget в проект PRB.OracleExtensions.

...