2019年9月17日 星期二

[Visual Studio] Console程式建立app.Release.config與app.Debug.config

前言:
使用Visual Studio(VS)開發Web Application,會有Web.config的設定檔,
預設會有Web.Debug.config與Web.Release.config來做組態管理,
但主控台專案的app.config預設卻沒有??


作法1:
● 在csproj專案上右鍵->卸載專案->編輯xxx.csproj
打開專案檔後,通常就可看到PropertyGroup的element,
在這群element附近(通常在之後)貼上:
<PropertyGroup>
    <ProjectConfigFileName>App.config</ProjectConfigFileName>
</PropertyGroup>
如:



● 接著往下找到ItemGroup的element,會有如下的設定,
<ItemGroup>
    <None Include="App.config" />
</ItemGroup>
 在上述的<None Include="App.config" />下加入:
 <None Include="App.Debug.config">
      <DependentUpon>App.config</DependentUpon>
</None>
<None Include="App.Release.config">
      <DependentUpon>App.config</DependentUpon>
</None>
如:


●然後在<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />下方加入:
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.targets" />
  <Target Name="AfterBuild">
    <TransformXml Source="@(AppConfigWithTargetPath)" Transform="$(ProjectConfigTransformFileName)" Destination="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" />
  </Target>
如:


●重新載入專案後,在專案上右鍵->加入->新增項目->加入App.Debug.config/App.Release.config


● 最後,在各自組態設定檔中加入欲轉換的設定。
  <applicationSettings>
    <Project.Properties.Settings>
      <setting name="key" serializeAs="String" xdt:Transform="Replace">
        <value>value</value>
      </setting>
    </Project.Properties.Settings>
  </applicationSettings>

  <appSettings>
    <add key="key" value="value" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
  </appSettings>

作法2:
使用Configuration Transform,免除上述手動的作法,
方便快速又支援轉換預覽。操作部分可以參考該網址的說明。


參考資料:
https://demo.tc/post/775
https://marketplace.visualstudio.com/items?itemName=GolanAvraham.ConfigurationTransform