Visual Studio 2017 kann das Microsoft.NETCore.App-Paket nicht aktualisieren ("Vom Projekt blockiert").

82

Ich habe eine Dotnet-Core-App, die auf Microsoft.NETCore.App 1.1.2 abzielt. Ich habe ein Testprojekt erstellt, um es gegen dieses Projekt zu testen, aber beim Erstellen habe ich diese Warnung bemerkt: Geben Sie hier die Bildbeschreibung ein

Ich öffne den NuGet Package Manager und sehe, dass die Warnung korrekt ist. Das getestete Projekt hat eine andere Version von Microsoft.NETCore.App: Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Mein Problem ist, dass Visual Studio nicht zulässt, dass ich diese Version aktualisiere. Geben Sie hier die Bildbeschreibung ein Daher bin ich verwirrt darüber, wie dieses Problem gelöst werden kann: Idealerweise würde ich einfach auf die Dropdown-Liste klicken und die richtige Version auswählen, aber Visual Studio behauptet, dass dies aufgrund von "nicht möglich ist." zusätzliche Einschränkungen im Projekt oder in packages.config ". Wie soll ich das Paket aktualisieren? Auf welche "zusätzlichen Einschränkungen" bezieht sich Visual Studio?

Riqitang
quelle
Es sieht so aus, als würde das Testprojekt das Downgrade blockieren. Haben Sie versucht, mit der rechten Maustaste auf die Lösung zu klicken und Nuget-Pakete für die Lösung verwalten auszuwählen und alle Projekte gleichzeitig auf die andere Version zu verschieben?
Ken Tucker
Ich hatte nicht daran gedacht, aber ich habe es einfach versucht und erhalte den gleichen Fehler "Vom Projekt blockiert". Auch das andere Projekt ist daran gehindert, sich von 1.1.2 zu entfernen. Ich habe auch das neueste Update für VS installiert, aber das hat nicht geholfen.
Riqitang
Ich habe alle Informationen gesammelt, die ich in dieser Frage / Antwort gefunden habe: stackoverflow.com/questions/52518059/…, da dieses Problem wirklich eine Frage zu sein scheint. Die Antworten hier sind für mein Szenario nicht vollständig
Joshit
Hatte den gleichen Fehler, als ich fälschlicherweise auf verschiedene Versionen des .net-Kernframeworks für verschiedene Projekte in meiner Lösung abzielte. Stellen Sie sicher, dass die Projekteigenschaften für jedes Ziel dieselbe Version haben.
Obaylis

Antworten:

51

EDIT 2018 : Befolgen Sie die Anweisungen zum Aktualisieren des Pakets nur, wenn Sie wirklich wissen, was Sie tun. In den meisten Fällen müssen Sie dieses Paket - oder andere Pakete, die als "vom Projekt blockiert" gekennzeichnet sind - niemals manuell aktualisieren. Eine Framework-abhängige App verwendet die neueste verfügbare Laufzeit und eine in sich geschlossene Anwendung führt automatisch einen zusätzlichen Build mit einer neueren Version dieses Pakets durch. (es gibt einige Grenzfälle , wo Sie brauchen dieses Paket in Testprojekten zu aktualisieren. in diesem Fall hinzufügen <TargetLatestRuntimePatch>true</…>und sehen diese Q & A für andere Optionen)

Das implizite Paket verweist darauf, dass die Microsoft.NET.SdkSchlussfolgerungen nicht über NuGet aktualisiert werden können.

Wenn Sie von project.json migriert haben, enthält das Projekt mit der 1.1.0Referenz wahrscheinlich

<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>

in der csproj-Datei oder einem Element wie diesem (wenn Sie zuvor den Paketmanager zum Festlegen der Version verwendet haben):

<PackageReference Update="Microsoft.NETCore.App" Version="1.1.0" />

Löschen Sie Einträge wie die oben genannten und alle Pakete verweisen 1.1.2automatisch (oder was auch immer das installierte SDK als das neueste betrachtet). Alternativ RuntimeFrameworkVersionin allen Projekten festlegen .

Martin Ullrich
quelle
2
Sie hatten Recht: Ich habe die .csproj-Datei geöffnet und die <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>Zeile entfernt. VS lässt mich die Version immer noch nicht manuell ändern, aber zumindest ist es jetzt die richtige Version (sie wurde auf 1.1.2 aktualisiert, wie Sie es
angekündigt haben
48

Ich hatte ein ähnliches Problem beim Versuch, das Entityframework.Core-Paket in einer .NET Core 2-Webanwendung zu installieren. Um das Problem zu beheben, habe ich die Installation über die Package Manager-Konsole erzwungen:

Install-Package Microsoft.NETCore.App -Version 2.0.5

(2.0.5 war die aktuellste Version zu der Zeit)

Ich hoffe es ist nützlich. Frieden.

Marlon Dias
quelle
7
Dies funktionierte für mich beim Upgrade auf 2.1.1 -> Tolle Antwort und fehlte in allen Artikeln, die ich finden konnte.
Paul
Das hat endlich auch bei mir funktioniert. Nachdem ich dies in der pmc von VS2017 für jedes Projekt aufgerufen hatte, aktualisierte ich von v2.1.0 auf v2.1.3
Paul Meems
1
Installationspaket
5
Warum wird es überhaupt vom Projekt blockiert? Ist das eine Art Fehler oder gibt es einen guten Grund? Wenn es einen guten Grund gibt, ist es vielleicht keine gute Idee, das oben Genannte zu tun? Oder behebt es das besagte Problem?
Niico
Danke für diesen Hinweis. "Vom Projekt blockiert" stellte sich also als "Von der VS NuGet-Benutzeroberfläche blockiert" heraus.
Grimm
19

Für mich hinzufügen

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

hat den Trick gemacht

<PropertyGroup>
  <TargetFramework>netcoreapp2.1</TargetFramework>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>
gsharp
quelle
Dies würde also auf die neueste Version des Frameworks auf dem aktuellen Computer abzielen. Wenn der lokale Computer gepatcht ist und der Host-Server dies ist, würde dies dann nicht auf Probleme stoßen?
Jonmeyer
Ich weiß es eigentlich nicht, weil wir eigenständige Bereitstellungen durchführen. Aber als wilde Vermutung würde ich mir vorstellen, da es "neueste" und keine spezifische Version sagt, dass es einfach keine verwenden würde, wenn es nicht vorhanden wäre. @ Jonmeyer
Gsharp
Ich hatte verschiedene Versionen in meiner Lösung installiert. Ich habe alle bearbeitet, um diese Zeile hinzuzufügen. Brachte sie auf die gleiche Version und löschte dann die Zeile erneut. Aber ich bekomme immer noch die Nachricht vom Projekt blockiert, wenn ich Nuget-Pakete für die Lösung verwalte.
Sam
@sam hast du auch die anderen Lösungen ausprobiert? Es scheint, dass die beiden Antworten mit mehr als 30 Stimmen auch für einige Leute funktionieren.
Gsharp
Ja. Ich tat. Ich versuche, die Option "Nuget-Pakete für Lösung verwalten" in der Benutzeroberfläche zu verwenden und mit Mausklicks zu installieren / deinstallieren. Die csproj-Dateien müssen nicht manuell bearbeitet werden. Und das konnte ich über die Benutzeroberfläche nicht. Ihr Weg und die anderen Optionen funktionieren, aber die Benutzeroberfläche funktioniert nicht.
Sam
7

Kurze Antwort

Fügen Microsoft.AspNetCore.AppSie der Paketreferenz in Ihrer .csproj-Datei eine explizite Version hinzu.

Lange Antwort

Ich hatte ein brandneues netcoreapp2.1-Projekt. Folgendes befand sich in der .csproj-Datei. Beachten Sie, dass der Paketreferenz keine Version zugeordnet war Microsoft.AspNetCore.App.

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

Ich habe dem Microsoft.Extensions.Logging.AbstractionsPaket einen expliziten Verweis hinzugefügt , um eine Abhängigkeitsinkongruenz (Erstellungsfehler) zu beheben. Micorsoft.AspNetCore.Appwollte Version 2.1.0 dieser Abhängigkeit, aber ein anderes Paket wollte Version 2.1.1. Meine .csproj-Datei sah jetzt so aus.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

Dies reduzierte den Erstellungsfehler auf eine Warnung bezüglich der Micorsoft.AspNetCore.AppAnforderung der 2.1.0-Version des Microsoft.Extensions.Logging.AbstractionsPakets, aber Version 2.1.1 wurde natürlich behoben.

Der Versuch, Micorsoft.AspNetCore.Appauf Version 2.1.1 zu aktualisieren , um die Warnung zu beheben, wurde vom Paketmanager blockiert, wie vom OP erwähnt.

Ich habe meine Micorsoft.AspNetCore.AppPaketreferenz aktualisiert , um Version 2.1.1 explizit wie folgt zu verwenden.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

Dadurch wurde die Build-Warnung behoben und alle Versionen von Microsoft.AspNetCore.Appin Package Manager entsperrt. Ich konnte sogar den expliziten Verweis auf entfernen, Microsoft.Extensions.Logging.Abstractionsohne den ursprünglichen Fehler wieder einzuführen. Die endgültige .csproj sah ohne Probleme so aus.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  ...
</ItemGroup>
bugged87
quelle
3

Ich hatte das gleiche Problem und ich denke, das Problem betrifft das Paket.

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

Das Problem wurde behoben, nachdem ich die Version genau angegeben hatte.

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

Wie ich weiß, tritt dieser Fehler bei der Versionsnummer auf

ddagsan
quelle
2

Eine andere mögliche Lösung. In demcsprojAktualisieren Sie Datei das Zielframework auf die Version, auf die Sie aktualisieren möchten. Nach der Änderung gemäß den folgenden Ausschnitten können die Pakete über den NuGet-Paketmanager der Lösung aktualisiert werden.

Vor:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

Nach dem:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
Shooresh
quelle
0

Ich habe es einfach gelöst: Klicken Sie mit der rechten Maustaste auf Projekt (oder ALT + Eingabetaste) -> Eigenschaften -> Anwendung -> Ziel-Framework (Wählen Sie .NET Core Framework (in diesem Fall 1.1)).

harlandgomez
quelle
0

Die beste Empfehlung ist, Ihre Projekte nach dem Upgrade des SDK und der Laufzeit erneut zu erstellen und dann Ihren alten Code und Ihre Konfiguration in den neuen Projekten abzulegen. Abgesehen davon verbringen Sie zu viel Zeit mit nutzlosen Optimierungen und unbekannten Konfigurationen.

Shadi Namrouti
quelle