Vs .Net Framework 灵活配置

背景:我们开发和部署项目时都是通过注释某些配置项

比如:

在调试时就注释掉生产的配置项,在生产时又要改回来,只有一个还好,如果多的话就会非常容易出错。

问题1:在发布时容易出错,需要控制发布时根据配置(debug 、release、etc) 自动生成对应的配置。

问题2:在调试时以最少修改切换配置。

以上两个问题拆解出下面的需求:

1、debug 配置和 release 配置分成两个文件。

2、保证debug 配置和 release 配置,配置项的数量相等。(需求 1 引发的二级需求)

3、可以看到所有配置项都有哪些。(需求 1 引发的二级需求)

4、在编译成功后自动应用指定的配置。

5、在发布成功后自动应用指定的配置。

6、最少修改切换配置。

搜集到的解决方案

1、使用 TransformFile发布时 转换 web.config 文件。ps:TransformFile 文件指如 App.config 存在子依赖文件 App.Debug.config 且 在.csproj 文件中被标记为 IsTransformFile  的特定配置文件。

2、使用 SlowCheetah 插件+ TransformFile 在编译是转换 *.config 文件。SlowCheetah 添加所有 *.config 文件的转换文件。

3、使用  configSource="other.config" 特性 使用其他 .config 文件替换 *.config 文件中的 appSettings 或 connectionStrings节点(可在调试中手动修改other.config )。

4、使用 生成事件-生成成功后事件 添加 Cmd 命令如: copy /y $(ProjectDir)App.$(ConfigurationName).config $(TargetPath).config 在生成成功后拷贝自定义配置文件覆盖输出的配置文件。

5、添加自定义配置 DebugRelease 继承 Debug 配合 2 添加 TransformFile 配合 5 在项目生成前事件拷贝 Release TransformFile 到 DebugRelease  TransformFile  文件中。实现调试生产环境。

7、添加一个 bat 文件手动调用修改 TransformFile 。

8、手动修改 项目属性-Release 配置-优化代码-取消勾选以 release 方式启动项目达到调试生产环境配置的效果。和 5 大同小异。  

9、参考 .net framework 配置文件架构 https://docs.microsoft.com/zh-cn/dotnet/framework/configure-apps/file-schema/ 使用配置文件 配置 指定语言提供程序设置 如:

<configuration>
    <system.codedom>
         <compilers> 
        <!-- zero or more compiler elements --> 
            <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" compilerOptions="/optimize" warningLevel="1" />
       </compilers> 
    </system.codedom> 
</configuration>    

  在 debug 情况也下会优化 cs 代码(compilerOptions="/optimize"),相当于 debug 配置的 release 效果 。

最后关于 Debug和 Release 

所谓配置 debug release ,它们仅仅是缺省的两个配置而已,自己也可以添加更多。

debug 和 release 的重要区别在于 debug 默认是不优化代码,release 反之,所以在调试中所见即所得。

原文地址:https://www.cnblogs.com/zhuwansu/p/9262561.html