zoukankan      html  css  js  c++  java
  • ASP.NET站点部署相关

    汤姆大叔的部署指南:http://www.cnblogs.com/TomXu/archive/2011/11/25/2263050.html

    中文目录:

    1. 部署介绍 --(英文版连接
    2. 部署SQL Server Compact数据库 --(英文版连接
    3. 使用Web.Config文件的Transformations --(英文版连接
    4. 配置项目属性 --(英文版连接
    5. 部署到IIS上作为测试环境 --(英文版连接
    6. 设置文件夹权限 --(英文版连接
    7. 生产环境部署 --(英文版连接
    8. 部署Code-Only更新 --(英文版连接
    9. 部署数据库更新 --(英文版连接
    10. 迁移至SQL Server (英文版连接
    11. 部署SQL Server数据库更新 --(英文版连接
    12. Troubleshooting --(英文版连接

    Web.Config替换相关:

    Web.config变换是启动设定,所以你的每个编译链接设置都有一个设置“delta”(默认的是Debug和Release)。当你建立你的解决方案(比如当你发布一个包的时候)你原始的Web.config会根据你的Web.debug.config文件中的设置变换(以debug设置为例)。

      有很多日志和MSDN可供你参考,但是我想我应该写一个简明扼要的帖子,它可以让你熟悉怎样进行一些常见的web.config变换。

      首先,回顾一下XDT的简单知识(那个人很伟大)

      因为它属于web.config替换,所以你得知道每个XML元素可以有两个xdt属性:xdt:Tranform 和 xdt:Locator。

      变换属性:你想对XML元素干什么?
      你可能想替换它,可能想设置一个属性(SetAttribute),或者移除一个属性(RemoveAttribute),等等。

      属性定位:需要变换的元素在哪里?

      你可能想要转换一个符合特殊属性值的元素。

      例1:替换所有的AppSettings

      这是一个极端的情况,只能在你想替换web.config的整个部分的时候用。这种情况我将替换web.config中所有的AppSettings并在web.release.config中进行新的设定(这句英文可能有问题,语法不通顺!)。下面是我的基线web.config appSettings:

    1. <appSettings>
    2. <add key="KeyA" value="ValA"/>
    3. <add key="KeyB" value="ValB"/>
    4. </appSettings>

      现在在我的web.relaese.config文件里面,我应该创建一个appSettings程序,但是我把属性xdt:Transform设置成了”Replace”因为我想替换整个元素。我没有必要用xdt:Locator属性,因为没有什么东西需要去定位—我只是想清除原来的内容并替换所有的东西。

    <appSettings xdt:Transform="Replace">
    <add key="ProdKeyA" value="ProdValA"/>
    <add key="ProdKeyB" value="ProdValB"/>
    <add key="ProdKeyC" value="ProdValC"/>
    </appSettings>

      请注意在这个web.release.config文件里我的appSettings程序段有三个键而不是两个,而且他们也不尽相同。现在让我们看看当我们发布的时候在产生的web.config文件中发生了什么:

    <appSettings>
    <add key="ProdKeyA" value="ProdValA"/>
    <add key="ProdKeyB" value="ProdValB"/>
    <add key="ProdKeyC" value="ProdValC"/>
    </appSettings>

      正如我们所预料的-- web.config appSettings被web.release config中的值替换了。这很简单!

      例2:替换一个特定的AppSetting的值

      例1可以说是一杆子打倒一片的做法,那么怎么做一点更加实际的东西呢?让我们回到原始的AppSettings web.config例子:

    <appSettings>
    <add key="KeyA" value="ValA"/>
    <add key="KeyB" value="ValB"/>
    </appSettings>

      这次我们想要用更加适合产品环境的值来代替KeyB的键值。我们需要用到xdt:Transform 和 xdt:Locator两个属性。

      我们的办法是定义一个appSettings程序段。开头如下:

    <appSettings>
    <add key="KeyB" value="ProdValA" />
    </appSettings>

      现在我们要添加变换,我们想替换任何跟这个键(KeyB)符合的appSetting。

    <appSettings>
    <add key="KeyB" value="ProdValA" xdt:Transform="Replace"
    xdt:Locator="Match(key)" />
    </appSettings>

      一旦我们发布,最后生成的Web.config文件看起来如下:

    <appSettings>
    <add key="KeyA" value="ValA"/>
    <add key="KeyB" value="ProdValA"/>
    </appSettings>

      非常棒—我们替换了keyB键却保留了keyA键(和其他任何键,如果他们存在的话)。

      例3:Compilation Debug设置成”true”

      这个情况简单,因为微软公司把即开即用的软件基础架构给了我们—但是我还是想把它在这里再写一遍,因为它阐明了一个常见的情况,而且表明如果有更多的变换,那么就把Compilation Debug设置成”true”。

    <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
    </system.web>

      也有很多方法去进行设定SetAttributes,移除元素,插入元素,等等。

      学无止境

      显然,这只是些浅显的介绍,但是这就是现在我所需要涉及的深度。在我下次写帖子之前,你可以去看看web.config 变换的msdn参考文献,地址是:

      http://msdn.microsoft.com/en-us/library/dd465326%28VS.100%29.aspx

    详细的替换信息:http://msdn.microsoft.com/zh-cn/library/dd465326(VS.100).aspx

  • 相关阅读:
    LVGL初步移植
    为什么javac后加.java,java后不加.class?
    为什么内部类可以访问外部类的私有属性?
    Optional类与使用==判断null有什么区别?使用Optional类有什么优势?
    注释中的Unicode编码也会被转义
    用反射编写泛型数组
    JDBC与JPA--初学JPA
    抽象类与接口
    面向对象——多态
    面向对象——封装(隐藏)
  • 原文地址:https://www.cnblogs.com/ceci/p/4202985.html
Copyright © 2011-2022 走看看