Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

In a .NET Framework project, incompatible with central version management #19

Closed
aetos382 opened this issue Aug 11, 2022 · 0 comments · Fixed by #20
Closed

In a .NET Framework project, incompatible with central version management #19

aetos382 opened this issue Aug 11, 2022 · 0 comments · Fixed by #20

Comments

@aetos382
Copy link
Contributor

aetos382 commented Aug 11, 2022

Abstract

When use the DotNet.ReproducibleBuilds.Isolated SDK in .NET Framework project, it is incompatible with central package version management because it uses the Version attribute in the <PackageReference>.

Repro Steps

  1. git clone https://github.com/aetos382/reproducible-builds-issue-report.git
  2. cd reproducible-builds-issue-report
  3. dotnet build

Expected behavior

No error

Actual behavior

error NU1008: Projects that use central package version management should not define the version on the PackageReference items but on the PackageVersion items: Microsoft.NETFramework.ReferenceAssemblies.

Workaround

Manually reference the Microsoft.NETFramework.ReferenceAssemblies package and define its version in <PackageVersion>.

Directory.Build.props

<Project>
  <ItemGroup>
    <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies"/>
  </ItemGroup>
  <Sdk Name="DotNet.ReproducibleBuilds.Isolated" Version="1.1.1" />
</Project>

Directory.Packages.props

<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2"/>
  </ItemGroup>
</Project>

Suggestions for improvement

If central package version management is enabled, use the <PackageVersion> element to specify the version of the Microsoft.NETFramework.ReferenceAssemblies package.

Sdk.targets

<Project>
  <Target
    Name="_EnsureNETFrameworkReferenceAssembliesProvided"
    AfterTargets="CheckPackageReferences"
    BeforeTargets="CollectPackageReferences"
    Condition="
      $(TargetFramework.Contains('net4'))
      and
      '@(PackageReference->AnyHaveMetadataValue('Identity', 'Microsoft.NETFramework.ReferenceAssemblies'))' != 'True'
      and
      '$(EnsureNETFrameworkReferenceAssembliesProvided)' != 'false'">
    <PropertyGroup>
      <NETFrameworkReferenceAssembliesVersion>1.0.2</NETFrameworkReferenceAssembliesVersion>
    </PropertyGroup>
    <PropertyGroup>
      <CentralPackageVersionManagementEnabled>false</CentralPackageVersionManagementEnabled>
      <CentralPackageVersionManagementEnabled Condition="'$(CentralPackageVersionsFileImported)' == 'true' AND '$(ManagePackageVersionsCentrally)' == 'true'">true</CentralPackageVersionManagementEnabled>
    </PropertyGroup>
    <ItemGroup>
      <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies">
        <Version Condition="'$(CentralPackageVersionManagementEnabled)' == 'false'">$(NETFrameworkReferenceAssembliesVersion)</Version>
      </PackageReference>
    </ItemGroup>
    <ItemGroup Condition="'$(CentralPackageVersionManagementEnabled)' == 'true'">
      <PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="$(NETFrameworkReferenceAssembliesVersion)"/>
    </ItemGroup>
  </Target>
</Project>

UPDATE: I've submitted PR #20.

Environment

  • .NET SDK 6.0.400
  • DotNet.ReproducibleBuilds.Isolated 1.1.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant