Organisieren Ihres Projekts zur Unterstützung von .NET Framework und .NET CoreOrganizing your project to support .NET Framework and .NET Core

Dieser Artikel hilft Projektbesitzern, Ihre eigene Lösung parallel für .NET Framework und .NET Core zu kompilieren.This article helps project owners who want to compile their solution against .NET Framework and .NET Core side-by-side. Es werden mehrere Optionen zum Organisieren von Projekten behandelt, die Entwickler beim Erreichen dieses Ziels unterstützen sollen.It provides several options to organize projects to help developers achieve this goal. Im Folgenden finden Sie eine Liste mit typischen Szenarios, die Sie bei der Entscheidung bedenken sollten, wie Sie Ihr Projektlayout mit .NET Core einrichten.The following list provides some typical scenarios to consider when you're deciding how to setup your project layout with .NET Core. Die Liste deckt möglicherweise nicht alle Punkte ab, die Sie benötigen. Sie können abhängig von den Anforderungen Ihrer Projekte priorisieren.The list may not cover everything you want; prioritize based on your project's needs.

  • Combine existing projects and .NET Core projects into single projects (Kombinieren von vorhandenen Projekten und .NET Core-Projekten in einzelnen Projekten)Combine existing projects and .NET Core projects into single projects

    Es dient folgenden Zwecken:What this is good for:

    • Vereinfachen Ihres Buildprozesses durch Kompilieren eines einzelnen Projekts statt mehrerer Projekte, die alle eine andere Version von .NET Framework oder eine andere Plattform als Ziel haben.Simplifying your build process by compiling a single project rather than compiling multiple projects, each targeting a different .NET Framework version or platform.
    • Vereinfachen der Verwaltung von Quelldateien für mehrfachzielorientierte Projekte, da Sie eine einzelne Projektdatei verwalten müssen.Simplifying source file management for multi-targeted projects because you must manage a single project file. Beim Hinzufügen/Entfernen von Quelldateien müssen Sie diese bei den Alternativen manuell mit Ihren Projekten synchronisieren.When adding/removing source files, the alternatives require you to manually sync these with your other projects.
    • Einfaches Generieren eines NuGet-Pakets zum Verbrauch.Easily generating a NuGet package for consumption.
    • Ermöglicht das Schreiben von Code für eine bestimmte .NET Framework-Version in Ihren Bibliotheken mithilfe von Compileranweisungen.Allows you to write code for a specific .NET Framework version in your libraries through the use of compiler directives.

    Nicht unterstützte Szenarios:Unsupported scenarios:

  • Trennen vorhandener und neuer .NET Core-ProjekteKeep existing projects and new .NET Core projects separate

    Es dient folgenden Zwecken:What this is good for:

    • Entwicklung in bereits erstellten Projekten wird weiterhin unterstützt. Entwickler oder Mitwirkende, die eventuell nicht über Visual Studio 2017 verfügen, müssen kein Upgrade durchführen.Continuing to support development on existing projects without having to upgrade for developers/contributors who may not have Visual Studio 2017.
    • Minimieren der Möglichkeit, neue Probleme in vorhandenen Projekten zu erstellen, da in diesen Projekten keine Codeänderung erforderlich ist.Decreasing the possibility of creating new bugs in existing projects because no code churn is required in those projects.

BeispielExample

Betrachten Sie das folgende Repository:Consider the repository below:

Vorhandenes ProjektExisting project

QuellcodeSource Code

Im Folgenden sind verschiedene Möglichkeiten beschrieben, Unterstützung für .NET Core für dieses Repository hinzuzufügen. Dies ist abhängig von den Einschränkungen und der Komplexität bestehender Projekte.The following describes several ways to add support for .NET Core for this repository depending on the constraints and complexity of the existing projects.

Ersetzen von vorhandenen Projekten mit mehrfachzielorientierten .NET Core ProjektenReplace existing projects with a multi-targeted .NET Core project

Organisieren Sie das Repository neu, sodass alle vorhandenen *.csproj-Dateien entfernt werden, und eine einzelne *.csproj-Datei erstellt wird, die mehrere Frameworks als Ziel hat.Reorganize the repository so that any existing *.csproj files are removed and a single *.csproj file is created that targets multiple frameworks. Dies ist eine hervorragende Option, da ein einzelnes Projekt für andere Frameworks kompilieren kann.This is a great option because a single project is able to compile for different frameworks. Außerdem kann die Option verschiedene Kompilierungsoptionen und Abhängigkeiten pro Zielframework behandeln.It also has the power to handle different compilation options and dependencies per targeted framework.

Erstellen einer csproj, die mehrere Frameworks als Ziel hatCreate an csproj that targets multiple frameworks

QuellcodeSource Code

Zu beachtende Änderungen:Changes to note are:

  • Der Ersatz für packages.config und *.csproj mit einer neuen .NET Core *.csproj.Replacement of packages.config and *.csproj with a new .NET Core *.csproj. NuGet-Pakete werden mit <PackageReference> ItemGroup angegeben.NuGet packages are specified with <PackageReference> ItemGroup.

Behalten vorhandener Projekte und Erstellen eines .NET Core-ProjektsKeep existing projects and create a .NET Core project

Wenn es vorhandene Projekte gibt, die ältere Frameworks als Ziel haben, empfiehlt es sich, diese Projekte unverändert zu lassen und ein .NET Core-Projekt zu verwenden, um kommende Frameworks als Ziel festzulegen.If there are existing projects that target older frameworks, you may want to leave these projects untouched and use a .NET Core project to target future frameworks.

.NET Core-Projekt mit vorhandenem Projekt in anderem Ordner.NET Core project with existing project in different folder

QuellcodeSource Code

Zu beachtende Änderungen:Changes to note are:

  • .NET Core-Projekte und vorhandene Projekte werden in separaten Ordnern gespeichert.The .NET Core and existing projects are kept in separate folders.
    • Projekte in separaten Ordnern zu speichern, vermeidet, dass Sie über Visual Studio 2017 verfügen müssen.Keeping projects in separate folders avoids forcing you to have Visual Studio 2017. Sie können eine separate Lösung erstellen, die nur die alten Projekte öffnet.You can create a separate solution that only opens the old projects.

Siehe auchSee Also

Weitere Anleitungen zum Migrieren zu .NET Core finden Sie in der Dokumentation zum Portieren von .NET Core.Please see the .NET Core porting documentation for more guidance on migrating to .NET Core.