VS2010之 – Web Development(二)--转换生成发布时的Web.config文件

通常情况下, 我们在开发环境使用VS进行开发, 开发完成后需要发布到测试环境进行测试, 由于开发环境与测试环境的不同. 通常情况下在发布到测试环境时需要手动修改Web.config文件, 通常情况下会修改到文件中的一些参数的值. 除了一些连接串的配置还会涉及到环境中文件路径的配置和服务端口的配置.

 

VS2010中提供了新的web.config的转换模型, 通过这个转换模型可以在项目发布的时候自动生成生产环境的web.config文件.

 

下面将介绍怎样通过配置在发布时自动生成生产环境的web.config文件.

1. 打开上一节中创建好的一个WebApplication

2. 选择菜单中的 Build -> Configuration Manager. 会出现Configuration Manager对话框

3. 选择"Activie solution configuration"下面的下拉框选择 New Solution Configuration 对话框

4. 在Name区域写入"Staging" 并且在 Copy setting from下拉框中选择 Release. 并且保证"Create new projcetconfigurations" 选项框保持选中状态. 如下图所示. 点击OK 完成此项配置

 

5. 打开项目在Solution Explorer(解决方案浏览器)中可以看到, 当前的web.config文件与之前VS版本中的web.config文件不同的是, web.config文件是可以展开的, 点击展开可以看到当前的web.config下面还有两个文件. 均按照web.<configuration>.config的命名规则来命名.

这些扩展文件根据环境的变化而不同. 默认情况下所有的Web应用程序都包括 Debug和Release两个扩展配置文件. 开发人员可以通过Visual Studio创建新的类型的配置文件. 前面的步骤我们已经创建了一个新的类型的扩展配置文件. 此时邮件选择web.config 选择"Add Config Transforms",现在会自动将刚才新类型的扩展配置文件添加进来.

6. 下面我们需要在WebFrom文件中添加一个Label, label中包括环境变量(如下面代码所示)

 

Current Environment: <asp:Label ID="EnvName" Text="Environment Name" runat="server" />

 

 

 

7. 下面我们需要实现一个功能, 在Web.config 文件中添加一个标签, 让这个标签中的值可以填充到前面的Label中.

8. 在Web.config中添加一个<appSettings> 里面添加一个key为EnvirnmentName的变量, 值为Development

9. 右键选择Default.aspx 选择ViewCode. 打开后台代码

10. 在Page_Load方法中添加一段代码, 在Page_Load事件中实现读取Web.config文件中的"EnvironmentName"的值添加到Label中.

11. 执行项目, 刚才的Development填写到了Label中展示到了WebPage中.

 

 

12.下面我们将模仿真实的开发场景, 在Web.config中添加一个数据库连接串, 并且将刚才的Staging配置好, 演示怎样在发布的时候自动生成对于环境的web.config文件.

13. 按下面的代码, 在web.config文件中添加一个数据库连接字符串

 

 

 <connectionStrings>
 <add name="LoggingConnectionString" connectionString="server=(local);database=Logger;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
 </connectionStrings>

 <connectionStrings> <add name="LoggingConnectionString" connectionString="server=(local);database=Logger;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/> </connectionStrings>

 

14.  打开web.config下面的 web.Staging.config文件.

 15.  转换文件是一个XML格式的文件, 文件中描述了特殊的行为(添加, 删除, 更新)并且文件中不包含节点,选项和属性. 文件包含了对XML Document Transform 命名空间的引用. 文件中包括两个attributes: Transform Locator.  Transform中标记了需要修改的节点和属性.

16. 查看Staing 配置文件转换文件已经存在了一个修改节点"system.web"节点标记remove带有debug的属性.

 

·         XML

·         <?xml version="1.0"?>

·          

·         <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transfrom">

·          

·         ...

·          

·         <system.web>

·         <compilation xdt:Transform="RemoveAttributes(debug)" />

·         </system.web>

·         </configuration>

 

system.web节点下面添加下面的Code

·         XML

·         <appSettings>

·         <add key="EnvironmentName" value="Staging" xdt:Transform="SetAttributes(value)" xdt:Locator="Match(key)" />

·         </appSettings>

 

 

当发布的时候, 上面的转换文件将告知MSBuild进程, 找到EnvironmentName节点并且将其值替换成staging文件中哦你高的部分.

17. 转换数据库连接字符串的XML部分如下, 同样添加一个connectionStrings. 其中的内容配置成测试环境的数据库连接字符串的值.

其中的 xdt:Transform="Replace" 将替换第一个匹配的节点

Xdt:Transform="SetAttribute(attributeName)" 表示创建或者修改已经存在的属性

 

 

18. 上面已经将转换的配置文件创建完成, 下面演示怎样通过命令行来生成发布时的web.config文件.

19. Start -> All Programs -> Microsoft Visual Studio 2010 -> Visual Studio Tools. 打开Visual Studio Command Prompt

 

将路径切换到当前的项目根目录下. 输入下面的命令

 

 

MSBuild HTMLLab.csproj /t:TransformWebConfig /p:Configuration=Staging

21. 此时MSBuild将便宜当前的项目并且按照Staging trasform rules来转换web.config文件. 最后的输出文件将放置到 项目根目录\obj\Staging\TransformWebConfig\ 文件夹中

打开生成的web.config文件, 查看连接字符串已经按照Staging 文件替换成了测试环境的连接字符串.

 


 

 

posted @ 2010-06-11 23:51  cat's blog  阅读(2969)  评论(0编辑  收藏  举报