使用vs 2010的deployment package时需要注意的几个细节
最近的一个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不会被拷贝进去。
其他的,过后再加进来。
作者: Bright Zhang 发表于 2011-05-14 16:31 原文链接