在SharePoint中,用户控件和视觉网络部件是增强网站功能的重要组件。本文将详细介绍如何创建、部署以及在SharePoint中使用这些控件。
实现此功能的基本步骤如下:
接下来,将详细探讨这些步骤。
首先,创建一个新的解决方案,并添加一个新的ASP.NET Web应用程序,命名为'CustomUIControl'。确保在创建项目时选择了.NET Framework 3.5。由于将这个控件暴露给SharePoint,而SharePoint项目只能在3.5下创建,因此必须使用较低版本的框架来创建控件项目。
删除Default.aspx页面,并通过右键单击项目并选择“添加/新建项”来添加Web用户控件。将控件命名为CustomerControl.ascx。
像平常一样编写ascx页面的代码。
完成控件后,首先使用Visual Studio签名项目。要签名项目,请转到项目的属性,签名选项卡,勾选签名程序集并指向现有或发行新密钥。
使用Visual Studio构建项目将构建CustomUIControl.dll。需要使用Framework 2.0编译器和特殊设置来编译项目,以获得单独的ascx程序集。为了获得这个程序集,打开命令窗口并更改目录到2.0 Framework。确保以管理员身份运行。
使用以下命令编译项目:
aspnet_compiler -p c:\source\article\customuicontrol\customuicontrol -v customuicontrol -fixednames c:\source\articlebuild -keyfile c:\source\article\customuicontrol\customuicontrol\contstest.snk
解释每个路径的含义:
查看编译目录,将看到编译过程创建的几个文件。
需要CustomUIControl.dll和App_Web_customercontrol.ascx.cdcab7d2.dll这两个文件。后者包含将用于UI的Web控件部分。
将这两个程序集放入GAC。
以管理员身份从VS2010运行命令窗口。
运行以下命令在GAC中注册程序集:
gacutil /i c:\source\articlebuild\bin\customuicontrol.dll
gacutil /i c:\source\articlebuild\bin\app_web_customercontrol.ascx.cdcab7d2.dll
验证是否已将这两个程序集添加到GAC。可以在C:\Windows\assembly中找到注册的程序集。
添加一个新的ASP.NET Web应用程序来测试控件。
将这两个程序集引用添加到新项目中;确保在属性窗口中将复制本地设置为True。Web应用程序不必查看GAC,但如果有需要,可以修改web.config以从GAC添加这些程序集。
在Web应用程序中,选择想要放置控件的aspx页面,并添加一个标签来注册控件。
可以通过双击References文件夹中的App_Web_customercontrol.asxc.cdcab7d2.dll来查找标签的值。
如所见,对于注册标签:
<%@ Register TagPrefix="CC" Namespace="ASP" Assembly="App_Web_customercontrol.ascx.cdcab7d2" %>
程序集名称是App_Web_customercontrol.ascx.cdcab7d2,命名空间是ASP,页面上使用的控件名称是customercontrol_ascx。
将新标签添加到aspx页面:
<cc:customercontrol_ascx runat="server" ID="test1" />
运行项目以验证控件的行为是否符合预期。
将一个新的SharePoint特性项目添加到解决方案中。
在SharePoint2010项目下添加一个新的Visual Web Part,并将其命名为SPCustomerPart。
将Web部件重命名为CustomerWebPart,将ascx控件重命名为CustomerWebPartUserControl.ascx。
解决方案资源管理器应该类似于下面的屏幕截图:
将CustomUIControl.dll和App_Web_customercontrol.ascx.cdcab7d2.dll添加到SharePoint项目中,在属性窗口中将复制本地设置为False。
需要确保程序集在SharePoint项目的web.config中被引用;否则它将不知道在哪里找到它。
定位web.config,在默认配置下,位于C:\inetpub\wwwroot\wss\VirtualDirectories\80。
打开web.config文件,并添加程序集注册到文件中:
可以在GAC c:\windows\assembly中查找之前注册的程序集的版本和PublicKeyToken。
回到SharePoint项目,打开CustomerWebPartUserControl.ascx,并添加注册标签和用户控件到页面上:
这应该看起来完全像Web应用程序标签,或者如果愿意,可以在SharePoint的web.config中添加一个标签,那样就不需要页面上的Register标签了。
此时,应该能够运行特性并将其添加到SharePoint页面上。
当验证特性按预期工作后,可以部署特性。
在命令窗口中,将目录更改为c:\program files\common files\microsoft shared\web server extensions\14\bin或浏览到stsadm.exe所在的位置。
运行以下命令进行部署:
stsadm -o addsolution -filename [full path your.wsp]
stsadm -o deploysolution -name [no path just name.wsp] -allowgacdeployment -immediate -url [your url]