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

时间:2016-01-07 02:58:22

标签: wpf msbuild transformation

我的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来确保我不会错过任何明显的副作用或问题。

1 个答案:

答案 0 :(得分:1)

安装此https://github.com/acottais/msbuild.xdt NuGet软件包,您将能够创建类似web.config的转换。

还有其他一些Nuget软件包,它们将像web.config一样转换app.config。

前几天我使用了它,效果很好。