微信号:gh_98bfb3afe7eb

介绍:.net .net跳槽 c#跳槽 C#程序员 .net软件工程师 SQL Server 等等,本公众号为求职、发布求职信息、以及.net等相关技术的交流平台.

.net 实战 根据configuration选项生成不同的config文件

2017-01-09 23:59 DotNet开发跳槽

项目开发过程中都会遇到的问题,开发环境的配置肯定是和生产环境不一样的,
一直都是重复手动拷贝,但是配置太多拷贝的弊端就显现出来了,
为了解决这个问题可以有几种方案:

1.Web.config Transformation

Transformation的相关知识点可以参考下面的文章,

这个东西有个不好的地方,就是只有在publish的时候才执行,在开发调试期间是不起作用的,

所以一般应用在网站发布期间

https://msdn.microsoft.com/en-us/library/dd465326(v=vs.110).aspx

http://www.cnblogs.com/worksguo/archive/2009/08/29/1556307.html


2.MSBuild 在BuildBefore事件中应用XslTransformation

 示例代码: https://github.com/xlb378917466/MSBuild_BuildBefore

知识点学习:http://www.cnblogs.com/shanyou/p/3452938.html

 

这个功能很强大,这里使用了BuildBefore事件,这样在开发调试期间就可以获取到修改之后的配置,

    <Target Name="BeforeBuild">
    <XslTransformation Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'" XslInputPath="Debug.xslt" XmlInputPaths="WebTemplate.config" OutputPaths="Web.config" />
    <XslTransformation Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'" XslInputPath="Release.xslt" XmlInputPaths="WebTemplate.config" OutputPaths="Web.config" />
  </Target>

这里定义了两个xslt文件用来输出最终的web.config文件,当然你要自己定义一个原始的输入文件WebTemplate.config,

这个例子简单的APPSetting中的值根据实际的Configuration进行修改

1
2
3
<appSettings>
     <add key= "Mode"  value= "Release"  />
   </appSettings>

 Debug.Xslt

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version= "1.0"  encoding= "UTF-8" ?>
<xsl:stylesheet version= "1.0"  xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" >
<xsl:output indent= "yes"  />
  <xsl:template match= "@*|node()" >
    <xsl:copy>
      <xsl:apply-templates  select = "@*|node()"  />
    </xsl:copy>
  </xsl:template>
<xsl:template match= "/configuration/appSettings/add[@key='Mode']" >
  <add key= "Mode"  value= "Debug" />
</xsl:template>
</xsl:stylesheet>

 Release.Xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" />
 <xsl:template match="@*|node()">
   <xsl:copy>
     <xsl:apply-templates select="@*|node()" />
   </xsl:copy>
 </xsl:template>
<xsl:template match="/configuration/appSettings/add[@key='Mode']">
 <add key="Mode" value="Release"/>
</xsl:template>
</xsl:stylesheet>

 

来源:http://www.cnblogs.com/LittleFeiHu/archive/2017/01/09/6265908.html


 
DotNet开发跳槽 更多文章 SequoiaDB 关于 MongoDB 安全事件的一些思考 周末趣图:不懂这么多妹子爆照 .net点选验证码实现思路分享 我们给12306做了个估值1000亿的BP 我作为程序员辣么穷的黑历史
猜您喜欢 重新敲一遍代码,胜过拷贝粘贴 从土建挖掘机到数据挖掘机,三一重工能否“挖”出个大未来? HTML5/React Native代码编辑环境搭建 对浏览器村的第二次采访 1年工作经验用了10年,算不算10年工作经验?