是否可以让两个Web部件具有相同的DLL,但同时在Sharepoint中部署两个.webpart文件?
背景: 我正在开发一个应用程序,它将生成一个包含Web部件(ASP.NET 2.0 Web部件)的“.cab”文件。之后,用户应该能够在SharePoint服务器中部署此“.cab”文件。
我的应用程序已包含Web部件的DLL。此Web部件的“行为”取决于“.webpart”文件的属性,该文件将在我的应用程序运行时生成(其内容将根据特定用户选择而更改) 生成“.webpart”文件后,它将文件打包到Manifest.xml和DLL的“.cab”文件中。
想象一下,用户使用我的应用程序创建了两个“cab”文件。他希望将它们部署到SharePoint中。
为了对此进行测试,我使用我的应用程序创建了这两个“.cab”文件,并在SharePoint中执行:
$> STSADM.EXE -o addwppack <cab filename #1>
$> STSADM.EXE -o addwppack <cab filename #2>
$> STSADM.EXE -o deletewppack <cab filename #1>
执行第三个命令后,Web部件#2没有DLL。 当我安装Web部件#2时,SharePoint会覆盖Web部件#1的DLL文件 这里的问题是两个文件的DLL被复制到相同的位置。该位置是DLL的程序集名称。如果不重新编译,我就无法更改程序集名称(我认为)。
是否有独立部署两个cab文件,即使它们共享同一个DLL?
答案 0 :(得分:0)
您可以将应用程序拆分为两部分:一个仅包含您的dll的“库”。还有一些只部署.webpart文件的东西。 用户必须始终保持“库”部分的安装..
此外,您可能希望查看安装'wpppack'的替代方法.. .webpart文件只不过是您网站中库中的文件..可能比安装.cab更容易添加在服务器上。
答案 1 :(得分:0)
这应该不是问题。 .webpart文件只指向程序集中的类,并为该类的特定实例提供配置值。如果您想从webpart库中获得webpart的多个配置,您可以通过上传多个引用同一类的.webpart文件来实现。例如,listview webpart的每个实例都可以导出到.webpart文件,但它们都使用相同的webpart类。检查this blog posting以获取有关.webpart文件内容的更多信息。