在发布模式下构建时,有没有办法自动使用单独的app.config?
换句话说,我想用一个app.config进行测试,然后用另一个进行测试。
目前,我保留了一个名为app.config.production的单独副本,并在构建发布后手动覆盖bin \ Release \ Application.exe.config。
答案 0 :(得分:12)
我最近发布了对类似SO主题的极其迟来的回应: https://stackoverflow.com/a/27546685/2798367
为了清楚起见,我将在此重复一遍:
这对派对来说有些晚了,但我偶然发现了一种为web.transform
文件实施app.config
方法的好方法。 (即它使用命名空间http://schemas.microsoft.com/XML-Document-Transform
)
我觉得它很“好”,因为它是纯xml方法,不需要第三方软件。
根据您的各种构建配置,父/默认App.config文件来自。
这些后代只会覆盖他们需要的东西。
在我看来,这比必须保持x
个完整复制的配置文件的数量要复杂得多,比如在其他答案中。
此处发布了演练:http://mitasoft.wordpress.com/2011/09/28/multipleappconfig/
看,妈妈 - 我的IDE中没有明确的构建后事件!
答案 1 :(得分:7)
通过contet菜单卸载解决方案资源管理器中的项目。编辑.csproj文件。 将此字符串添加到文件中。
<PropertyGroup>
<AppConfig>App.$(Configuration).config</AppConfig>
</PropertyGroup>
答案 2 :(得分:5)
一种简单快捷的方法是创建第二个文件&#34; App.release.config&#34;并插入此预构建事件:
IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.config" "$(ProjectDir)App.debug.config"
IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.release.config" "$(ProjectDir)App.config"
这个帖子构建事件:
IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.debug.config" "$(ProjectDir)App.config"
这可能有点奇怪,但它允许您继续使用.Settings
文件作为调试设置,仍然链接到App.config
。必须手动构建App.release.config
,但切换此功能非常容易。
答案 3 :(得分:4)
我强烈建议使用SlowCheetah进行app.config转换。在这里访问这个nuget gem Visual Studio Gallery
答案 4 :(得分:1)
与最高答案类似,但是通过这种方法,如果csproj文件中不包含首选内容和intellisense,则您可以查看实际文件:
<Target Name="SetAppConfig" BeforeTargets="Compile">
<Copy SourceFiles="debug.config" DestinationFiles="app.config" OverwriteReadOnlyFiles="true" Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
<Copy SourceFiles="release.config" DestinationFiles="app.config" OverwriteReadOnlyFiles="true" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
</Target>
答案 5 :(得分:0)
我不知道这是否有帮助,但app.config会识别标准的MSBUILD替换字符串,例如$(Configuration)。
答案 6 :(得分:0)
一个干净的解决方案是将 2 个文件 App.Debug.config
和 App.Release.config
分组到 App.config
中,并根据编译时的配置将好的文件更改为 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>
</ItemGroup>
<Target Name="SetAppConfig" BeforeTargets="Compile">
<Copy SourceFiles="App.Debug.config" DestinationFiles="App.config" OverwriteReadOnlyFiles="true" Condition=" '$(Configuration)' == 'Debug' " />
<Copy SourceFiles="App.Release.config" DestinationFiles="App.config" OverwriteReadOnlyFiles="true" Condition=" '$(Configuration)' == 'Release' " />
</Target>
使用此解决方案,您将在 Visual Studio 中获得如下内容: