Spezifische Version von .NET Framework auf Visual Studio 2010-Solution-Ebene

8

Ich möchte sowohl .NET 3.5 als auch .NET 4.0 in meiner Visual Studio 2010-Lösung einsetzen.

Ich bin mir bewusst, dass ich <TargetFrameworkVersion /> in meinen Projektdateien einstellen kann. Dies erfordert jedoch, dass ich jede Projektdatei vor dem Erstellen der Lösung für eine bestimmte .NET Framework-Version bearbeiten muss. Scott Dorman bietet ein Makro, das den Trick auf seinem Blog post Visual Studio 2010 und Target Framework Version .

Ich suche nach einer globalen Lösung, bei der ich die Einstellung nicht in jedem Projekt ändern muss. Ist es möglich, eine zentrale Einstellung auf der Lösungsebene zu ändern, um dasselbe zu erreichen?

    
Pierre Arnaud 13.12.2010, 07:13
quelle

2 Antworten

18

Wie Jon Skeet schrieb, gibt es keine offensichtliche Möglichkeit, das Zielframework auf der Lösungsebene zu definieren. Dies kann jedoch durch Hinzufügen spezifischer Konfigurationen zur Lösung und anschließende manuelle Bearbeitung der *.csproj -Dateien erfolgen, um die Ziele für jede Konfiguration anstatt global für das gesamte Projekt anzugeben.

Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Wählen Sie Erstellen - Konfigurationsmanager .
  2. Wählen Sie in der Dropdown-Liste Aktive Lösungskonfiguration aus und geben Sie einen aussagekräftigen Namen (z. B. Debug v3.5 ) basierend auf Ihren bereits vorhandenen Einstellungen ein.
  3. Öffnen Sie sie für jede Projektdatei im Editor (Sie können dies in Visual Studio tun, aber Sie müssen zuerst im Projektmappen-Explorer mit der rechten Maustaste darauf klicken und Projekt entladen , dann Bearbeiten xyz.csproj ).
  4. Suchen Sie das <PropertyGroup> -Element, das mit der gerade erstellten Konfiguration übereinstimmt (z. B. Debug v3.5|AnyCPU ).
  5. Fügen Sie XML hinzu, zum Beispiel nach dem schließenden Element </PlatformTarget> , dem <TargetFrameworkVersion> und <TargetFrameworkProfile> , die Sie benötigen.
  6. Speichern Sie die Datei.
  7. Verwenden Sie im Projektmappen-Explorer den Befehl Projekt neu laden , um das Projekt erneut verfügbar zu machen.

Hier ist ein Beispiel:

%Vor%

Beachten Sie, dass ich auch das Symbol% ​​co_de% definiere, mit dem ich rahmenabhängige DOTNET35 -Anweisungen im Quellcode schreiben kann. Ich hatte zum Beispiel ein paar Code-Teile, die sich auf #if stützten, und durch Hinzufügen einer minimalistischen Version der Klasse konnte ich meine .NET 4.0-Anwendung auf .NET 3.5 zurück portieren.

Hier ist mein Ausschnitt:

%Vor%     
Pierre Arnaud 13.12.2010, 09:46
quelle
6

Nicht, dass ich mir dessen bewusst bin.

Beachten Sie, dass ein Projekt Teil mehrerer Lösungen sein kann oder unabhängig von beliebigen -Lösungen erstellt werden kann. Daher könnte eine Option "Lösungsebene" wirklich den Standard beim Erstellen eines neuen Projekts festlegen.

Wenn Sie die Projektdateien manuell bearbeiten, glaube ich , dass Sie in der Lage sein sollten, eine einzige Projektdatei mit Konfigurationen für .NET 3.5 und .NET 4 zu erstellen .NET 2 und .NET 3.5 vorher.) Dann könnten Sie verschiedene Konfigurationen auf Lösungsebene haben, die auf die relevanten Konfigurationen auf Projektebene abzielen.

    
Jon Skeet 13.12.2010 07:16
quelle

Tags und Links