Keep moving...
Do right thing, then do thing right.
posts - 61,comments - 71,trackbacks - 0

最近的一个SOA项目使用vs2010+IIS7+AppFabric+SQLSERVER2008,其中部署的时候摒弃以前那种单独建立一个setup project,生成msi的做法,直接使用vs2010的deployment package的功能,这个结合microsoft web deploy(msdeploy)可以直接在vs中进行部署,与msbuild结合,可以支持命令行部署,在自动构建之后可以做到自动部署。而在手动部署的时候,也可以通过命令行部署,由于有msbuild的强大整合能力,因此,对一系列的服务部署,数据库部署,只需要一条命令或执行一个bat即可。

但是在使用的过程中,碰到了几个小的细节,导致在做部署的时候浪费了不少时间,总结一下,可能对大家有点用处。

1.Configuration问题。

在web项目的属性里,如果在Package/Publishi Web页里,进行部署相关的设置时,一定要注意configuration的问题。由于开发环境是debug模式,而部署环境是release模式,那么在做基于部署的设置时,一定要为release模式做设置。假如你设置了WEB项目部署的IIS路径,你只在debug模式下设置,而没有为release模式设置,那么部署的时候,你会发现你的设置没有起作用,原因就在这里。

2.Copy Local的问题。

使用Package/Publish Web的时候,你可以直接在项目上build deployment package,它会自动在project folder\obj\Debug\Package\{project name}.zip\Content\D_C\{project full path}\obj\Debug\Package\PackageTmp\下生成部署所需要的所有东西,其中Bin文件夹中是所有引用的的dll,记住,这些dll的Copy Local要设为true,否则,这些dll不会被拷贝到上面的Bin目录下,相当于构建的部署包依赖于dev的环境,一旦部署到服务器上的时候,这些dll没有,那么程序运行必将报错。

当然例如一些约定的程序集,属于全局共享的,放到GAC中的,而且在服务器上事先准备好了的,那么可以忽略,否则,一定要注意这个问题,因为程序一旦部署到服务器上,查错就不那么容易了,一些关键的dll缺失,你很难定位到真正的错误原因。

3.Reference问题。

如果Web项目的实现依赖于具体的业务类项目,那么被依赖的项目中所用到的所有第三方dll,都要相应的加到Web项目的引用当中。否则在生成deployment package的时候,这些间接引用的dll不会被拷贝进去。

4.xpath之xmlns的问题。

更新配置信息,一般使用parameters.xml来更新web.config,如果你要更新的信息有自定义信息,例如unity中的某个instance的名称,而由于unity具有一个默认的xmlns = http://schemas.microsoft.com/practices/2010/unity ,那么在更新的时候会有问题,更新不到,由于在基于xpath进行select node的时候,如果node的存在namespace,需要XmlNamespaceManager,所以需要制定namespaces,而在parameters.xml中,我尝试增加namespaces信息:

<ItemGroup>
  <Namespaces Include="http://schemas.microsoft.com/practices/2010/unity">
   <Prefix>un</Prefix>
   <Uri>http://schemas.microsoft.com/practices/2010/unity</Uri>
  </Namespaces>
 </ItemGroup>

由于其生成*.SetParameters.xml时,格式如下:

<setParameter name="***" value="***" />

所以,即便是增加了namespaces信息,在build deployment package后生成的*.SetParameters.xml中也丢失掉了,所以,对于具有namespace的配置项下的内容,无法使用parameters.xml进行更新。对于这种情况,我一直没有找到好办法。

另外,在使用Microsoft.Sdc.Tasks的时候,如果用到XmlFile.*的任务时,可以提供Namespaces来解决这种情况。

其他的,过后再加进来。

posted on 2011-05-14 16:31 Bright Zhang 阅读(1558) 评论(1) 编辑 收藏