MOSS2007 解决方案部署(关于“包含web应用程序范围的资源”与“不包含web应用程序范围的资源”)

   今天在群里,有人提了这样一个问题,他在MOSS2007部署解决方案(Solution)的时候,提示:"此解决方案不包含web应用程序范围的资源,无法将其部署到特定的web应用程序",最后解决了该问题,同时也得出了一些结论,分析如下:

    1、解决方案不包含web应用程序范围的资源

    在写解决方案的定义文件(manifest.xml)的时候,当引用了dll文件的时候,有这样的选项(DeploymentTarget):

    <Assemblies><Assembly Location="Test.dll" DeploymentTarget="GlobalAssemblyCache" /></Assemblies>

    这个时候,如果选择的是:DeploymentTarget="GlobalAssemblyCache"(将dll部署到GAC中)并且<Assembly>没有子节点<SafeControls>时。则解决方案是不包含任何web应用程序范围的资源的,如果这个时候通过addsolution命令把解决方案加入后,在解决方案管理中可以看到(如下图):

 

    在这样的情况下如果通过命令行DeploySolution命令部署解决方案的时候,如果指定了某个web应用程序的-url参数,则会出现"此解决方案不包含web应用程序范围的资源,无法将其部署到特定的web应用程序"的错误提示,这个时候是没有办法把解决方案部署到特定的Web应用程序中的,我们可以通过解决方案管理中心进行全局部署,如果需要使用命令行,则正确的部署命令应该是

    Stsadm –o Deploysolution -name<solutionname> -local(or -immediate) -allowgacdeployment (必须)

    则该解决方案部署位置为“全局部署”,无法部署到特定的web应用程序(如下图)

    2、解决方案包含Web应用程序资源

    对于解决方案包含Web应用程序资源的情况,目前发现两种方式(不知道还有没有其他方式,继续调查)将包含Web应用程序资源:

    A、将解决方案定义文件中的<Assemblies><Assembly Location="Test.dll" DeploymentTarget="WebApplication" /></Assemblies>节点中属性DeploymentTarget设置为"WebApplication"(即将dll部署到应用程序虚拟目录的bin目录下)

    B、添加<Assembly Location="Test.dll" DeploymentTarget="WebApplication" />的子节点<SafeControls><SafeControl Assembly="<name>, Version=<version>, Culture=neutral, PublicKeyToken=<token>" Namespace="<namespace>" Safe="True" TypeName="*"/></SafeControls>

    对于以上两种方式,当通过addsolution添加解决方案包后,通过管理中心解决方案管理中可以看到(如下图):

    在这样的情况下,如果通过命令行DeploySolution部署解决方案的时候,并且不指定web应用程序的-url参数,则会出现"此解决方案包含 Web 应用程序范围的资源,必须将其部署到一个或多个Web应用程序。"的提示,对于该提示,我们可以不用理会,直接通过解决方案管理手工将其部署到特定的Web应用程序。如果需要通过命令行deploysolution命令进行部署,则需要指定-url参数。

    A配置方法:Stsadm –o Deploysolution -name<solutionname> -local(or -immediate) –allowgacdeployment(可选) -url <WebApplicationUrl>

    B配置方法: Stsadm –o Deploysolution -name<solutionname> -local(or -immediate) –allowgacdeployment(必须) -url <WebApplicationUrl>

    则该解决部署位置为特定的Web应用程序,如下图所示:

 

    总结:
    对于不包含Web应用程序范围的资源的解决方案,无法部署到特定的Web应用程序,只能做全局部署。

    对于包含Web应用程序范围的资源的解决方案,能够部署到特定的Web应用程序。

    在进行解决方案部署的时候,如果使用命令行进行部署,需要根据是否包含web应用程序资源范围的资源选择是否使用-url参数。

    另外,如果将dll部署到GAC中,即选择DeploymentTarget="GlobalAssemblyCache"的部署方式,则部署命令行必须包含–allowgacdeployment参数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值