经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C# 发布控制台应用程序 App.config自动替换
来源:cnblogs  作者:码农小周  时间:2018/10/17 9:10:54  对本文有异议

在做项目的过程中,一般都有好几套环境,如Dev环境,QA环境等,通常情况下,不同环境的某些配置文件值是不一样的,部署时手动修改的方式管理多套环境的配置文件是很累的,而且很容易出错,最好的方式是部署时根据选择的配置管理器自动生成不同的配置。

在新建的Web 应用程序中,我们会看到Web.config是下面这样的,而且发布时会自动选择Web.Release.config配置的值,具体可参考之前写的另一篇博客 《Web.config 自动替换值》

但是其它类型的项目,比如控制台应用程序,部署时如何实现自动替换呢?

  1. 新建App.Debug.config,App.Release.config配置文件

  2. 在文件资源管理器中找到项目文件,用记事本软件(如Notepad++)打开

  3. 添加PropertyGroup配置

    1. <PropertyGroup>
    2.    <ProjectConfigFileName>App.config</ProjectConfigFileName></PropertyGroup>
  4. 在ItemGroup中找到App.Debug.config和App.Release.config,修改为如下

    1. <None Include="App.config" /><None Include="App.Debug.config">
    2.    <DependentUpon>App.config</DependentUpon></None><None Include="App.Release.config">
    3.    <DependentUpon>App.config</DependentUpon></None>
  5. 在最后一个Import标签后添加如下标签(如编译不通过,注意修改路径,我本机装的是VS2017

    1. <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.targets" />
  6. 在 Import 标签后面添加 Target 标签

    1. <Target Name="AfterBuild">
    2.    <TransformXml Source="@(AppConfigWithTargetPath)" Transform="$(ProjectConfigTransformFileName)" Destination="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" />
    3.  </Target>
  7. 在Visual Studio 中打开项目,重新加载解决方案,会看到App.config和Web 应用程序的Web.config已经一样了

         

 接下来的使用方式就和Web 应用程序里一样了,打开App.Release.config,修改为如下:

  1. <?xml version="1.0" encoding="utf-8" ?><configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  2.   <appSettings><add key="Environment" value="QA" xdt:Transform="Replace" xdt:Locator="Match(key)" />
  3.   </appSettings></configuration>

 部署时,当选择Release模式时,生成的配置如下:

  1. <add key="Environment" value="QA" />

 当选择Debug模式时,生成的配置仍是App.config中的配置,如下:

  1. <add key="Environment" value="Dev" />

 参考文章:1.在部署 C#项目时转换 App.config 配置文件

      2.Web.config 自动替换值

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号