SharePoint:部署WSP是否会在Gac中安装DLL?

6

我想知道,如果我使用stsadm命令部署一个WSP:

 stsadm -o addsolution –filename myWSP.wsp

这是否也会将所需的DLL(已包含在WSP中)安装到GAC中?还是这是另一个手动过程?
3个回答

10

这取决于解决方案的 manifest.xml 中的 DeploymentTarget 属性。如果您自己维护此文件,则使用以下语法将代码部署到 GAC:

<Assemblies>
   <Assembly DeploymentTarget="GlobalAssemblyCache" 
             Location="MyGAC.dll" />
</Assemblies>
如果您正在使用工具创建解决方案,则取决于该工具。WSPBuilder默认部署到GAC,但可以进行其他配置。请参阅Tobias Zimmergren的此文章中的“将程序集范围设置为BIN而不是GAC(包括代码访问安全性生成)”部分,了解如何部署到bin

谢谢Alex,我使用WSP Builder,所以我认为我正在获得这个好处。 - JL.

4

如果您使用VS构建软件包,请打开“Package”并单击底部的“高级”选项卡。您可以在这里添加其他程序集并指定部署目标。我强烈建议您这样做,而不是直接更新XML…但这只是我的个人意见。


我可以确认在Visual Studio 2010中这对我有效。我认为这是最完整的答案,提供了一个可维护的、开箱即用的解决方案。 - Tom Resing

2

正如命令addsolution所说的那样,它只会将解决方案添加到解决方案存储中。你需要调用命令deploysolution来获取放置物品的东西。以下是你需要调用的命令:

stsadmin -o deploysolution -name [solutionname] -allowgacdeployment

请注意,allowgacdeployment是将文件放置到GAC中的必要条件。您可以使用此命令获得更多帮助。
STSADM.EXE -help deploysolution

有一个通过用户界面完成的备选方案。前往中央管理 -> 运营 -> 解决方案管理选择解决方案并点击部署。这将是更简单快捷的方式来完成此操作。


1
我认为重要的是要说清楚解决方案的清单文件必须定义该程序集应部署到全局程序集缓存 (GAC),而不是 Web 应用程序的 bin 文件夹中。可以通过 <Assembly> 节点的 DeploymentTarget 属性来定义这一点。 - Flo
2
是的,我同意。如果你想让它变得非常简单,你可以使用 http://www.codeplex.com/wspbuilder ,在那里你需要将程序集放入名为 GAC 的文件夹中,这样属性就会被该工具处理。 - Kusek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接