ฉันลองวิธีแก้ปัญหาหลายอย่างแล้วและนี่เป็นวิธีที่ง่ายที่สุดที่ฉันค้นพบเป็นการส่วนตัว
แดนชี้ให้เห็นในความคิดเห็นที่โพสต์ต้นฉบับเป็นของOleg Sych - ขอบคุณ Oleg!
นี่คือคำแนะนำ:
1. เพิ่มไฟล์ XML สำหรับแต่ละการกำหนดค่าให้กับโครงการ
โดยปกติคุณจะมีDebug
และRelease
การกำหนดค่าเพื่อให้ชื่อไฟล์ของคุณและApp.Debug.config
App.Release.config
ในโครงการของฉันฉันสร้างการกำหนดค่าสำหรับสภาพแวดล้อมแต่ละประเภทดังนั้นคุณอาจต้องการทดลองกับสิ่งนั้น
2. ยกเลิกการโหลดโครงการและเปิดไฟล์. csproj เพื่อแก้ไข
Visual Studio ช่วยให้คุณสามารถแก้ไขไฟล์. csproj ได้ในตัวแก้ไข - คุณเพียงแค่ต้องยกเลิกการโหลดโครงการก่อน แล้วคลิกขวาที่มันและเลือกแก้ไข <ProjectName>
3. ผูกแอพ. *. config ไฟล์ไปที่ App.config หลัก
ค้นหาส่วนไฟล์โครงการที่มีทั้งหมดApp.config
และApp.*.config
การอ้างอิง คุณจะสังเกตเห็นว่าการสร้างของพวกเขาถูกตั้งค่าเป็นNone
:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
Content
ครั้งแรกที่สร้างการกระทำที่ตั้งไว้สำหรับทั้งหมดของพวกเขาไป
ถัดไปทำให้ไฟล์เฉพาะการกำหนดค่าทั้งหมดขึ้นอยู่กับหลักApp.config
ดังนั้น Visual Studio จึงจัดกลุ่มไฟล์เหล่านั้นเช่นเดียวกับไฟล์ออกแบบและไฟล์ behind รหัส
แทนที่ XML ด้านบนด้วยด้านล่าง:
<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. เปิดใช้งานการแปลงเวทย์มนตร์ (เฉพาะที่จำเป็นสำหรับ Visual Studio รุ่นก่อนVS2017 )
ในตอนท้ายของไฟล์หลังจาก
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
และก่อนสุดท้าย
</Project>
แทรก XML ต่อไปนี้:
<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>
ตอนนี้คุณสามารถโหลดโครงการสร้างและเพลิดเพลินกับการApp.config
แปลง!
FYI
ตรวจสอบให้แน่ใจว่าApp.*.config
ไฟล์ของคุณมีการตั้งค่าที่ถูกต้องดังนี้:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>