创建部署到选定Web应用程序但将程序集复制到GAC的解决方案

时间:2010-11-03 11:13:59

标签: sharepoint visual-studio-2010 sharepoint-2010

使用VisualStudio 2010创建SharePoint2010解决方案,我想将我的解决方案部署到选定的WebApplications(而不是所有)。我可以通过将Assembly Deployment Target(Project Property)切换到WebApplication来实现此目的。但是,该程序集将不会部署到GAC。

是否有允许部署到特定Web应用程序的设置,但是将程序集部署到GAC?

编辑:也许问题很难理解,所以这里有一个例子:

在SharePoint场中,每个客户都有一个WebApplication。由特定客户订购的自定义功能应仅可在客户的WebApp上使用。该功能不应出现在SiteCollection功能或其他WebApp的WebSite功能中。

但是,要素范围必须是仅在部分客户门户网站中激活的网站或网站。

4 个答案:

答案 0 :(得分:3)

我不太确定你的最终目标是什么,但你可能想要记住:

将Assembly Target设置为Web应用程序时,已编译的程序集(.dl)将部署到Web应用程序的Bin文件夹而不是GAC

VS.Net部署解决方案(.wsp)的Web应用程序由项目的“Site Url”属性决定。

除非您正在创建沙盒解决方案,否则您在服务器上部署的功能可供所有Web应用程序使用,无论您部署WSP的Web应用程序如何。有时,您可能仍希望将WSP部署到特定Web应用程序,因为WSP可能会根据您的WSP内容执行以下操作。例如,它可以将程序集部署到Web应用程序的bin文件夹,它可以将.resx文件复制到Web应用程序的文件夹中,它可以修改web.config以插入功能所需的条目等。

如果要将WSP部署到多个Web应用程序,有几个选项,仅举几例:使用VS.Net的post build命令,使用集中管理,使用STAADM或使用Powershell。

如果您使用的是SharePoint 2010,则可以选择将解决方案严格部署到单个网站集,这不会影响同一Web应用程序中的其他网站集或其他Web应用程序中的其他网站集。这些被称为“沙盒解决方案”。它们非常适合托管各种客户共享同一个农场的场景。绝对是SharePoint 2010最大的增强之一。同样,它们属于网站集而不属于Web应用程序(可以有多个网站集)。沙盒解决方案有一些限制(有充分理由)。更多信息?请参阅以下链接:

http://msdn.microsoft.com/en-us/magazine/ee335711.aspx

http://technet.microsoft.com/en-us/library/ee721992.aspx(包括限制)

http://msdn.microsoft.com/en-us/sharepoint/ee513156.aspx(视频培训)

答案 1 :(得分:3)

好的,现在我明白了:只要WSP包含SafeControl元素,SharePoint就会要求部署WebApplication。因此,如果向VS项目添加虚拟Web部件或直接向VS中的包添加SafeControl元素,则WSP将不会自动全局部署。

答案 2 :(得分:0)

只是一个想法 - 为什么不控制Web应用程序上的功能激活而不是部署。

答案 3 :(得分:0)