web-dev-qa-db-de.com

Wie kann ich eine .NET-Standardbibliothek in eine .NET Framework-Bibliothek umwandeln?

Ich schreibe eine Klassenbibliothek für einen einfachen Parser in C #. Bei der ersten Erstellung habe ich den .NET-Standard 2.0 verwendet. Nun muss ich ihn jedoch auf .NET 4.6 migrieren, um den anderen Projekten in meiner Lösung zu entsprechen und NUnit zu verwenden.

Ich habe versucht, den Anweisungen in der Microsoft-Dokumentation zu folgen, aber wenn ich versuche, ein anderes Framework in den Eigenschaften auszuwählen, kann ich nur andere .NET-Standardversionen finden.

Wie kann ich es migrieren? Muss ich die .csproj-Datei manuell bearbeiten?

8
Edward Minnix

Öffnen Sie die Projektdatei (.csproj) und ändern Sie das TargetFramework in net462

  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>
11
Jammer

Wenn Sie Ihre Klassenbibliothek als Nuget-Paket veröffentlichen, können Sie dies besser einrichten. Schauen Sie sich diesen Artikel an:

https://weblog.west-wind.com/posts/2017/Jun/22/MultiTargeting-und-Porting-a-NET-Library-to-NET-Core-20

Grundsätzlich können Sie Ihre Klassenbibliothek für Multi-Targeting einrichten und in .NET-Kernprojekte sowie in verschiedene Versionen von .NET-Frameworks importieren.

2
Marko

Meine persönliche Erfahrung in Visual Studio 2017 ist, dass Wiederherstellen eines Projekts und Hinzufügen vorhandener Quellen der einfachste, sicherste und effektivste Weg ist. Da die .Net Framework-basierte csproj-Datei zusätzliche XML-Elemente enthält (im Vergleich zu Standard-basiert), scheint sich dies zu ändern "TargetFramework" ist nicht genug . Unten ist ein Teil der standardmäßig erscheinenden Unterschiede aufgeführt:


 enter image description here

2
Kaponir

Es gibt ein paar Schritte, die ich für mich getan und gearbeitet habe: 

  1. git Push Ihren Code, damit Sie eine Sicherung haben :)
  2. Projekt in VS entladen (Rechtsklick auf das Projekt und Entladen)
  3. Bearbeiten Sie das Projekt in VS (Rechtsklick und Bearbeiten)
  4. Ersetzen Sie die TargetFramework-OR/AND-TargetFrameworkVersion durch <TargetFramework>netcoreapp2.0</TargetFramework>.

  5. Ändern Sie die Projektzeile. Dies ist normalerweise die erste Zeile (nach dem XML-Stammverzeichnis) in: <Project Sdk="Microsoft.NET.Sdk">

  6. Entfernen Sie den Import, der normalerweise die zweite Zeile ist (nach dem XML-Stamm).

  7. Behalten Sie Ihre PropertyGroups bei, die die Erstellungsoptionen beschreiben, wenn Sie möchten.
  8. Entfernen Sie die Verweise und die Dateiverweise. Sie werden nicht benötigt.
  9. Schließen Sie die Datei und laden Sie sie erneut (rechte Maustaste).
  10. Löschen Sie die Assemblyinfo-Datei (aus dem Eigenschaftenordner), da sie nicht benötigt wird. Die Assembly-Version stammt jetzt aus dem Projekt
  11. Klicken Sie mit der rechten Maustaste auf das Projekt und gehen Sie zu den Eigenschaften, um festzustellen, dass in der Projektdatei kein Fehler vorliegt. Stellen Sie sicher, dass Sie keine Tippfehler oder Tags haben, die nicht in der Nähe sind.
  12. Bauen. Wenn Sie Abhängigkeiten haben, die Sie vermissen, klicken Sie mit der rechten Maustaste auf das Projekt und fügen Sie diese hinzu. - Ich nehme an, Sie möchten sie nicht im Projekt bearbeiten. Sie können auch ein Dotnet Restore oder Dotnetbulid ausführen, um sie hinzuzufügen, wie Sie möchten. 

Hoffe, das funktioniert für dich. Sie scheinen viele Schritte zu sein, aber sie sind nicht so kompliziert und dies ist eine einmalige Anstrengung. 

0
Dan