58
votes

at the moment I have a microservice made in c # with web api and net core 2.0

in the nutget packages I have already found a version 2.1 of net core and I have decided to install it, in order to update my app. I changed the target as shown below

enter image description here

But when I try to compile it generates this bug

enter image description here

The project was restored using Microsoft.NETCore.App version 2.1.0, but with current settings, version 2.1.0-rtm-26515-03 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish. Typically this issue can occur if the RuntimeIdentifier property is set during build or publish but not during restore.

And my dependencies remained that way

enter image description here

7

7 Answers

108
votes

The project was restored using Microsoft.NETCore.App version 2.1.0, but with current settings, version 2.1.0-rtm-26515-03 would be used instead

This is a known issue at this moment. To resolve this issue, you can try following workarounds:

  • Add TargetLatestRuntimePatch attribute in .csproj file:

    <PropertyGroup>
      <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
    </PropertyGroup>
    

Or

  • set RuntimeFrameworkVersion and RuntimeIdentifier in .csproj file:

     <PropertyGroup>
       <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
       <PlatformTarget>AnyCPU</PlatformTarget>
       <RuntimeIdentifier>win-x64</RuntimeIdentifier>
     </PropertyGroup>
    

If above workaround not work for you, please check more workarounds on the investigation issue.

See Self-contained deployment runtime roll forward for more information.

8
votes

I wanted to publish an ASP.NET Core 2.1 Console app and got errors about colliding versions 2.1.0 and 2.1.6.

Since I had lot of projects in my solution (and VS did not give me any hints on which projects were problematic, I created a file Directory.Build.props with the following contents and placed it in the directory where my .sln file was

<Project>
  <PropertyGroup>
    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
    <GenerateFullPaths>true</GenerateFullPaths>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
</Project>

The important thing here is the <TargetLatestRuntimePatch> entry.

This way, all the projects use the same settings and I did not have to synchronize those manually.

Doc of Directory.Build.props is here https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2017

3
votes

I have solved the issue as follows:

First, add following code into .csproj file

<PropertyGroup>
   <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
   <PlatformTarget>AnyCPU</PlatformTarget>
   <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

Next, check Microsoft.AspNetCore.App version is 2.1.1. if not please install this version.

Lastly, restore your package with 2.1.1 version. To restore run following code from package manager console

Install-Package Microsoft.NETCore.App -Version 2.1.1
2
votes

As @Leo Liu-MSFT mentioed, I had to set the RuntimeFrameworkVersion and RuntimeIdentifier in .csproj file:

 <PropertyGroup>
   <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
   <PlatformTarget>AnyCPU</PlatformTarget>
   <RuntimeIdentifier>win-x64</RuntimeIdentifier>
 </PropertyGroup>

But then importantly, I had to restore packages for the solution.

0
votes

I got this today with respectively version 2.2.7 and "but with current settings 2.2.8... etc." after upgrading Visual Studio to version 16.4.0. Also, Nuget PackageManager would crash afterwards with

the composition produced multiple composition errors... (lots of crazy stuff here)

Ended up solving it by wiping (i.e. deleted all files in) C:\Users\my.username\AppData\Local\Microsoft\VisualStudio\16.0_79dcc3fa\ComponentModelCache

0
votes

I built projects separately, discovered a missing reference and it seemed to fix it - no thanks to the low-quality error message.

0
votes

I my case. The Visual Studio created a *.tmp file in AppData\Local\Temp. After I deleted all *.tmp files the publish worked.