App.config转换不适用于AppName.exe.config

问题描述 投票:1回答:1

我在我们的WPF项目中有一个app.config文件,它使用.csproj中的以下构建目标进行转换

<!-- MSbuild Task for transforming app.config based on the configuration settings -->
<UsingTask TaskName="TransformXml" 
           AssemblyFile="$(SolutionDir)\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.4\tools\VSToolsPath\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterBuild">
  <!-- Transform the app.config into the correct config file associated to the current build settings -->
  <TransformXml Source="App.config" Transform="App.$(Configuration).config" Destination="$(OutputPath)\App.config" />
  <!-- Bit of .Net to get all folders and subfolders that we want to delete post-build -->
  <ItemGroup>
    <FoldersToClean Include="$([System.IO.Directory]::GetDirectories(&quot;$(OutputPath)&quot;))" />
  </ItemGroup>
  <!-- Delete all of our localization folders and .pdb symbols. We only delete PDB files for Release builds. Debug builds we will leave them. -->
  <RemoveDir Directories="@(FoldersToClean)" />
  <Exec Command="del $(OutputPath)*.pdb" Condition=" '$(Configuration)'=='Release' " />
</Target>

这在编译后正确生成了App.config,并创建了转换后的QA或Production配置文件。我遇到的问题是以下代码使用AppName.exe.config。

string encryptedString = ConfigurationManager.AppSettings["SqlConnection"];

做了一些阅读后,我理解为什么会这样做。 App.config文件最终成为AppName.exe.config,以便在运行时使用。没关系;我的转变发生在后期。编译完成后,AppName.exe.config文件包含我的基本App.config文件信息,并且没有任何已转换的设置。我认为这是由于转换发生在构建后的步骤,在使用原始App.config文件生成AppName.exe.config之后,它会转换App.config。

看起来没有任何东西阻止我改变

<TransformXml Source="App.config" 
              Transform="App.$(Configuration).config" 
              Destination="$(OutputPath)\App.config" />

以便它在构建后替换AppName.exe.config文件。

<TransformXml Source="App.config" 
              Transform="App.$(Configuration).config" 
              Destination="$(OutputPath)\AppName.exe.config" />

这有什么不对吗?使用app.config和转换桌面应用程序时,没有太多帮助。我在网上看到的所有内容都是将内容转换为web配置文件。我认为这是安全的,或多或少是相同的。但是,我想确保通过使用转换后的App.config替换原始AppName.exe.config,我不会错过任何明显的副作用或问题。

wpf msbuild transformation
1个回答
1
投票

安装这个https://github.com/acottais/msbuild.xdt NuGet包,你就可以创建像web.config这样的转换。

还有其他几个Nuget包将像web.config一样转换app.config。

前几天我用过这个,效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.