Ich habe mehrere Lösungen ausprobiert, und hier ist die einfachste, die ich persönlich gefunden habe.
Dan in den Kommentaren darauf hingewiesen, dass der Originalbeitrag gehört zu Oleg Sych - Danke, Oleg!
Hier sind die Anweisungen:
1. Fügen Sie dem Projekt eine XML-Datei für jede Konfiguration hinzu.
In der Regel werden Sie Folgendes haben Debug
y Release
Konfigurationen, also benennen Sie Ihre Dateien App.Debug.config
y App.Release.config
. In meinem Projekt habe ich für jede Art von Umgebung eine eigene Konfiguration erstellt, so dass Sie vielleicht damit experimentieren möchten.
2. Projekt entladen und .csproj-Datei zur Bearbeitung öffnen
Visual Studio erlaubt Ihnen die Bearbeitung von .csproj Dateien direkt im Editor erstellen - Sie müssen nur das Projekt vorher entladen. Klicken Sie dann mit der rechten Maustaste auf das Projekt und wählen Sie <Projektname>.csproj bearbeiten .
3. Binden Sie App.*.config-Dateien an die Haupt-App.config
Suchen Sie den Abschnitt der Projektdatei, der alle App.config
y App.*.config
Referenzen. Sie werden bemerken, dass ihre Build-Aktionen eingestellt sind auf None
und das ist in Ordnung:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
Als nächstes machen Sie alle Konfigurationsspezifisch Dateien abhängige auf der Haupt App.config
Visual Studio gruppiert sie also wie Designer- und Code-Behind-Dateien.
Ersetzen Sie die obige XML-Datei durch die folgende:
<None Include="App.config" />
<None Include="App.Debug.config" >
<DependentUpon>App.config</DependentUpon>
</None>
<None Include="App.Release.config" >
<DependentUpon>App.config</DependentUpon>
</None>
4. Aktivieren Sie die Transformationsmagie (immer noch notwendig für Visual Studio Versionen wie VS2019 )
Am Ende der Datei nach
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
und vor dem Finale
</Project>
fügen Sie die folgende XML-Datei ein - bitte beachten Sie, dass es zwei Schritte gibt, damit die Umwandlung korrekt erfolgt:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="BeforeBuild" Condition="Exists('App.$(Configuration).config')">
<!-- Generate transformed app config and replace it: will get the <runtime> node and assembly bindings properly populated -->
<TransformXml Source="App.config" Destination="App.config" Transform="App.$(Configuration).config" />
</Target>
<Target Name="AfterBuild" Condition="Exists('App.$(Configuration).config')">
<!-- Generate transformed app config in the intermediate directory: this will transform sections such as appSettings -->
<TransformXml Source="App.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="App.$(Configuration).config" />
<!-- Force build process to use the transformed configuration file from now on.-->
<ItemGroup>
<AppConfigWithTargetPath Remove="App.config" />
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
Jetzt können Sie das Projekt neu laden, es erstellen und genießen App.config
Verwandlungen!
ZU IHRER INFORMATION
Stellen Sie sicher, dass Ihr App.*.config
Dateien haben die richtige Einstellung:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>
0 Stimmen
Ich bin auf den folgenden Artikel gestoßen, der etwas einfacher zu sein scheint, aber ich habe es nicht selbst ausprobiert. fknut.blogspot.com/2009/11/ Außerdem gibt es eine Funktionsanfrage auf MS Connect, für die es sich lohnen könnte, abzustimmen, damit sie in der nächsten SP oder Version durchgängig berücksichtigt wird. connect.microsoft.com/VisualStudio/rückmeldung/details/564414