Ich habe verschiedene Lösungen ausprobiert und hier ist die einfachste, die ich persönlich gefunden habe.
Dan wies in den Kommentaren darauf hin , dass der Original - Beitrag gehört zu Oleg Sych - danke, Oleg!
Hier sind die Anweisungen:
1. Fügen Sie dem Projekt für jede Konfiguration eine XML-Datei hinzu.
In der Regel haben Sie Debug
und Release
Konfigurationen, benennen Sie also Ihre Dateien App.Debug.config
und App.Release.config
. In meinem Projekt habe ich eine Konfiguration für jede Art von Umgebung erstellt. Vielleicht möchten Sie damit experimentieren.
2. Entladen Sie das Projekt und öffnen Sie die .csproj-Datei zur Bearbeitung
Mit Visual Studio können Sie .csproj- Dateien direkt im Editor bearbeiten. Sie müssen lediglich das Projekt zuerst entladen. Klicken Sie dann mit der rechten Maustaste darauf und wählen Sie <Projektname> .csproj bearbeiten .
3. Binden Sie App. *. Config-Dateien an die Haupt-App.config
Suchen Sie den Projektdateibereich, der alle App.config
und App.*.config
Referenzen enthält . Sie werden feststellen, dass ihre Build-Aktionen auf Folgendes eingestellt sind None
:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
Stellen Sie zunächst die Build-Aktion für alle ein Content
.
Machen Sie als Nächstes alle konfigurationsspezifischen Dateien von der Hauptdatei abhängig,App.config
damit Visual Studio sie wie Designer- und CodeBehind-Dateien gruppiert.
Ersetzen Sie XML oben durch das folgende:
<Content Include="App.config" />
<Content Include="App.Debug.config" >
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.Release.config" >
<DependentUpon>App.config</DependentUpon>
</Content>
4. Aktivieren Sie Transformations Magic (nur für Visual Studio-Versionen vor VS2017 erforderlich ).
Am Ende der Datei nach
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
und vor dem Finale
</Project>
Fügen Sie das folgende XML ein:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="CoreCompile" Condition="exists('app.$(Configuration).config')">
<!-- Generate transformed app config in the intermediate directory -->
<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, erstellen und App.config
Transformationen genießen !
Zu Ihrer Information
Stellen Sie sicher, dass Ihre App.*.config
Dateien das richtige Setup haben:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>