web-dev-qa-db-de.com

So lösen Sie den NET-Builderstellungsfehler NETSDK1061 und die Warnung MSB3277

Ich hatte das Problem, dass mein AspNetCore.App-Metapackage auf eine niedrigere Version von EntityFrameworkCore (2.1.2) verwies als auf ein EfCore-Providerpaket (NpgSql, 2.1.3). Das Ergebnis war die Warnung MSB3277 ( hier ist die Frage ). Der Quickfix dafür war die akzeptierte Antwort.

In einer anderen Antwort wurde darauf hingewiesen, dass ich mit einem niedrigeren Microsoft.AspNetCore.App-Paket (damals 2.1.1) gearbeitet habe als mit der letzten stabilen Version (2.1.4). Das Ändern der Paketversion war nicht möglich (siehe Abbildung unten).

 enter image description here

Ich hatte das gleiche Problem mit Microsoft.NETCore.App in einem Klassenbibliothek-Projekt.

Ich habe sogar nicht bemerkt, dass ich ein älteres Metapaket als verfügbar verwendet habe. Bis heute habe ich immer geprüft, ob in NuGet Package Manager Updates verfügbar sind. Ich habe mit den Standardprojektvorlagen gearbeitet und immer die neuesten .NetCore-SDKs installiert. Ich glaube, das reicht aus. Es war nicht so.

Nach der Untersuchung dieses Problems habe ich herausgefunden, dass ich mein Projekt zwingen kann, ein bestimmtes .NETCore.App- oder AspNetCore.App-Metapaket mit der Package Manager Console (Install-Package Microsoft.NETCore.App -Version 2.1.4 oder Install-Package Microsoft.AspNetCore.App -Version 2.1.4) zu verwenden.

Nach diesem Befehl hatte ich einen Build-Fehler (NETSDK1061: The project was restored using Microsoft.NETCore.App version 2.1.4, but with current settings, version 2.1.0 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.). 

4
Joshit

Ich habe versucht, Hilfe zu diesem Thema zu finden, einige github-Probleme (z. B. dieses ), die ziemlich ähnlich aussehen, aber wo eigentlich anders .. .. Ich habe ein beschreibendes Dokument gefunden , aber das hat mir nicht wirklich geholfen.

Ich habe einen ziemlich hilfreichen Blogpost von Rick Strahl gefunden, der erklärt, welche Pakete verfügbar sind und was der Zweck jedes Pakets ist. Das war eine gute Sache, um anzufangen.

Das ist meine Lösung:

Schritt 1: Führen Sie Install-Package Microsoft.AspNetCore.App -Version [VersionOfYourChoice] und/oder Install-Package Microsoft.NETCore.App -Version [VersionOfYourChoice] in der Package Manager Console aus.

Schritt 2: Editieren Sie .csproj wie folgt:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeFrameworkVersion>2.1.4</RuntimeFrameworkVersion>  <- add this line
    <!--<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> --> <- alternative
</PropertyGroup>

Noch etwas zum Mitnehmen: Wenn Sie mit Win10 arbeiten, tun Sie sich einen Gefallen und prüfen Sie das installierte .Net Core SDK/Runtimes usw. Deinstallieren Sie jedes SDK/Runtimes, das Sie nicht benötigen (erneut: Überprüfen Sie dazu den Blogpost von Ricks). Sie benötigen nur diejenigen, auf die Sie aktuell in einem Ihrer Projekte abzielen. 

Zum Beispiel: Wenn Sie an einem .NETCore-Projekt arbeiten und diese beiden Schritte nur mit den Versionen 2.1.4 ausgeführt haben, benötigen Sie nur das Microsoft .NET Core SDK 2.1.402. Um ein wenig aufzuräumen, habe ich jedes .NET Core SDK/Runtimes/Packages deinstalliert und das neueste aus here genommen.

Hinweis: Ich folgte diesem Blogpost von Jeff Atwood , um eine Frage zu beantworten, deren Lösung mich zu lange dauerte. Ich hoffe das hilft...

EDIT Gute Nachrichten für .NET Core 2.2: Sie müssen das .csproj nur wie folgt bearbeiten: 

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <RuntimeFrameworkVersion>2.2.0</RuntimeFrameworkVersion>
</PropertyGroup>

Wenn Sie AspNetCore verwenden, vergessen Sie nicht, auch das Metapaket AspNetCore.App zu aktualisieren

8
Joshit

Nachdem ich diese Zeile zur .csproj-Datei hinzugefügt hatte, wurde dieses Problem immer noch angezeigt.

<RuntimeFrameworkVersion>2.1.5</RuntimeFrameworkVersion>

Das Hinzufügen des Versionsattributs zur Microsoft.AspNetCore.App-Paketreferenz löste das Problem für mich. Ich habe das geändert:

<PackageReference Include="Microsoft.AspNetCore.App" />

zu diesem:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.5" />

Schritt 1 in der Antwort von @ Joshit erledigt dies wahrscheinlich automatisch, aber ich hatte bereits die neueste Version von Microsoft.AspNetCore.App.

1
nbergqui

Ug. Diese Ausgabe war für mich sehr klebrig. Ich habe die Schritte in @ Joshits Antwort ausgeführt und der Fehler blieb bestehen. Dann habe ich gemacht:

  • Build> Clean Solution
  • Erstellen> Lösung erstellen

Jetzt funktioniert es.

Es hilft, Ihre SDK-Version zu kennen, die Sie hier finden können: C:\Programme\dotnet\sdk

Sie können dieses Problem auch beim Publizieren bekommen. Es kann hilfreich sein, diese Zeile zur Datei publish_profile.pubxml hinzuzufügen:

<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeFrameworkVersion>2.1.0</RuntimeFrameworkVersion>

Ersetzen Sie 2.1.0 durch 2.1.4 oder was auch immer Sie verwenden.

0
Jess