解决jenkins自动构建发布的问题,统一从git/svn库中获取项目文件,根据不同配置编译发布到多个运行环境中。

转自:https://www.cnblogs.com/hugogoos/p/6426887.html

调试,发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等。如果常常有调试,发布的需求,就需要常常修改web.config文件,这往往是一件非常麻烦的事情。

  Web.Config Transformation能够在不同的发布环境下,产生不同的web.config文件,非常方便和实用。

  在新建的Web项目中有个默认的web.config, 还可以定义格式为web.[name].config文件, 这个配置文件定义的规则, 在发布的时候, 会对web.config文件进行修改。

  默认项目中, 会创建Web.Debug.config和Web.Release.config文件,分别对应于Debug和Release环境。

  假如我们要常常发布到测试服务器上,测试服务器和开发时候的connectionstring是不同的,看看如何使用Web.Config Transformation来解决这个问题。

  1,首先添加Test配置

  菜单Build->Configuration Manager, 就能看到如下的配置窗口, 添加一个新的配置Test.

也可以从这而进入添加

  2,添加Test config Transformation文件

  在web.confg上,点击右键,Add Config Transform, VS就会为刚刚新建的Test配置新增Transformation文件 Web.Test.config

  3. 修改Web.Test.config文件

  下面的Web.Test.config中能够替换web.config中的connectionstring, 关键是这一段

  这段代码要释放出来的。

<add name="MyDB"   connectionString="Data Source=TestSQLServer;Initial Catalog=MyTestDB;Integrated Security=True"   xdt:Transform="Replace" xdt:Locator="Match(name)"/>

  xdt:Transform="Replace", 指的是用来做替换操作

  xdt:Locator="Match(name), 指的是匹配规则,这里是匹配name

  意思是用Web.Test.config中的这个配置节用来替换web.config中name为MyDB的配置

  4. 检查发布的结果

  选择在Test配置下publish网站,你能看到最终的web.config文件,已经实现了替换connection string.

  到这里已经就完成了多环境发布配置问题了,而不需要每次发布都要修改配置。

  这只是解决了发布时的问题,细心的同学应该发现我上面还提到了调试。

  其实有时候为了还原bug可能要链接不同的环境进行测试,怎么样可以在程序编译的时候就进行选择不同的配置呢?

  首先找到当前项目

  用记事本打开拉到最下面:

  加入红框中的这段话就可以了。

  先看看原始的配置

  web.config的配置为:

  web.debug.config的配置为:

  web.Test.config的配置为:

  这时只要选择

  选择重新生成解决方案,

  选择替换,web.config配置就会被替换为web.test.config中的配置了,如下图web.config的配置:

  connectionString的值替换为Test中的配置了。

<Target Name="BeforeBuild">

    <TransformXml Source="Web.Debug.config" Transform="Web.$(Configuration).config" Destination="Web.config" />

  </Target>

  这句话的意思就是以Web.Debug.config里面的配置为模板,生产配置存放到web.config里面

  如下图在Debug新加一个键值

  在选择Test重新生成一次

  发现多了一个Debug配置的Key.

  其实在编译时支持改变配置文件会有副作用的可能会对版本控制有影响,比如,你刚改了web.config,然后你用了一个debug的配置去编译,你的web.debug.config就会自动覆盖web.config,然后你之前的修改就没了。比较理想的方式是需要一个第三方的web.base.config,所有的环境配置文件,例如web.debug.config,都基于web.base.config去修改,就是以web.base.config为模板,web.config成为修改后的目标文件,本身是只读的,不允许修改,只允许生成,同时也不签入到版本库。

以下为自己尝试使用的方式:

项目文件中增加配置:

<Target Name="BeforeBuild">
<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>

jenkins中 增加MSBuild配置:

MSBuild Build File
Test.csproj
CommandLine Arguments
/t:Rebuild /P:Configuration=Release /p:VisualStudioVersion=15.0 /p:DeployOnBuild=True;PublishProfile=Test.pubxml

Configuration=Release / Test ,不同环境配置不同。

有兴趣的同学可以自行去查询 Web.Config Transformation的具体语法。https://www.cnblogs.com/worksguo/archive/2009/08/29/1556307.html

.NET Framework 项目多环境下配置文件web.config的更多相关文章

  1. ASP.NET 多环境下配置文件web.config的灵活配置

    调试,发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有调试,发布的需求,就需要常常修改web.config文件,这往往 ...

  2. ASP.NET 多环境下配置文件web.config的灵活配置---转

    注意:本功能在.Net Core中已经不可用,暂时需手动修改web.config中的信息,或者将其设置在appsettings.XXX.json中,然后再使用web.config中的环境变量来制定使用 ...

  3. .NET下对Web.config与App.Config的增删改操作的代码

    把代码过程常用的内容做个收藏,下边代码段是关于 .NET下对Web.config与App.Config的增删改操作的代码. <?xml version="1.0" encod ...

  4. centos6.5环境下的web项目mysql编码方式导致的中文乱码问题

    最近在centos6.5下部署web项目时网页出现中文乱码的问题,在排除掉php之后,把问题锁定在mysql的编码方式上. 解决方法如下: 首先进入mysql命令行,输入命令:SHOW VARIABL ...

  5. 使用DOSGi在OSGi环境下发布Web Services

    前言 Apache CXF是一个开源的服务框架项目,而Distributed OSGi子项目提供了基于OSGi远程服务规范的分布式组件实现.它使用Web Services,HTTP上的SOAP手段实现 ...

  6. idea环境下SpringBoot Web应用引入JSP

    1. 环境 开发环境:idea2019.3 jkd版本:1.8 springboot版本:2.6.2 2. 引入JSP的步骤 2.1 新建工程,引入依赖 这里只是解析jsp,因此只需要引入spring ...

  7. 用Python+Django在Eclipse环境下开发web网站【转】

    一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...

  8. 【转载】django在eclipse环境下建web网站

    一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...

  9. 用Python+Django在Eclipse环境下开发web网站

    一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...

随机推荐

  1. 【转】模糊测试(fuzzing)是什么

    一.说明 大学时两个涉及“模糊”的概念自己感觉很模糊.一个是学数据库出现的“模糊查询”,后来逐渐明白是指sql的like语句:另一个是学专业课时出现的“模糊测试”. 概念是懂的,不外乎是“模糊测试是一 ...

  2. docker试水

    1.清理旧版本yum remove docker \                  docker-common \                  docker-selinux \        ...

  3. python2 手动安装更新pip

    现在对于python2版本,直接修改python.exe名字为python2.exe,命令python2 -m pip install --upgrade pip --force-reinstall可 ...

  4. setup_function和teardown_function

    setup_function和teardown_function 所有用例开始和所有用例结束只调用一次

  5. JAVA中生成指定位数随机数的方法总结

    JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 public static String getRandom1(int len) { int rs = ( ...

  6. 【C/C++开发】C++11的模板类型判断——std::is_same和std::decay

    C++11的模板类型判断--std::is_same和std::decay 问题提出:有一个模板函数,函数在处理int型和double型时需要进行特殊的处理,那么怎么在编译期知道传入的参数的数据类型是 ...

  7. spark笔记 环境配置

    spark笔记 spark简介 saprk 有六个核心组件: SparkCore.SparkSQL.SparkStreaming.StructedStreaming.MLlib,Graphx Spar ...

  8. c#内存泄漏分析

    背景 给客户开发了一个WPF应用,每隔一段时间就会很卡,推测是内存泄漏引起.需要监测内存使用情况. 使用的工具 Ants Memory Profiler 百度网盘下载地址 使用教程 入门使用 参考文档 ...

  9. [转帖]Java中重写和重载与多态的关系

    Java中重写和重载与多态的关系 2019-09-05 00:57:41 留下一天今天 阅读数 67  收藏 更多 分类专栏: java进阶之路   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  10. spring data jpa碰到的坑

    1.不能从别的类的repository那里 执行另一个类的sql,这样映射会失败. 2.有entity,就要有repository,并且还要有id注解 3.还要多表联查未测试,估计要用map去映射出来 ...