0

我创建了一个 Web 部件,并希望在 Sharepoint 中部署它。我想在 bin 中部署 Web 部件。

我还没有为 dll(webpart 代码)创建一个强名称。在 bin 文件夹中部署 webpart 是否必须使用强名称?

我已经引用了这个 msdn 链接来执行此操作。

http://technet.microsoft.com/en-us/library/cc263271.aspx

当我转到 WebPart 库并想要填充 Web 部件时,它没有出现在 WebPart 库中。

任何帮助将不胜感激。

4

2 回答 2

1

强名称不是 Sharepoint 开发的必需品,但它是您最简单的选择。

您还可以使用WSPBuilder(SharePoint WSP 工具)来部署您的 Web 部件

于 2009-11-04T11:55:37.600 回答
0

我通常对我的程序集进行强命名,因为我不想以后发现我的程序集需要一个强名称,以防该程序集以我最初预期的其他方式使用。

我也遇到了一些与 Sharepoint 中的事件相关的问题,其中反射用于执行基于类和程序集信息(可能存储在数据库中)的函数,所以如果你稍后添加一个强名称,那么你必须更新使用了旧事件(例如在列表中),否则您的函数将不会受到影响。另一方面,如果您有一个强名称,那么使用web.config 程序集重定向很容易

我喜欢您将程序集放在 bin 中的想法,这样您就可以使用为管理员提供更多控制的 CAS。

要解决此问题,您可以首先添加强名称并将程序集部署到 GAC,然后将 .webpart(或 .dwp)添加到 Web 部件库。如果可行,您可以尝试将程序集移动到 bin 文件夹,然后删除强名称。

您可能会考虑在功能中部署 webpart 并添加必要的代码以将 .webpart 文件动态添加到库中,这样您就不必担心文件,这可以通过使用功能接收器的代码来完成

using (SPWeb web = site.OpenWeb())
{
    web.AllowUnsafeUpdates = true;
    site.AllowUnsafeUpdates = true;    
    SPList list = web.Lists["Web Part Gallery"];
    SPFolder root = list.RootFolder;
    SPFile spFile = root.Files.Add("ContentEditor.dwp", s);
    spFile.Update();
}

或使用 caml xml

<?xml version="1.0" encoding="utf-8"?>
<Feature Id="8425EAF8-6GBE-4698-83C7-831CA8614D6D"
        Title="WebPart" 
        Description="Some description" 
        ImageUrl="GenericFeature.gif"
        Scope="Site" 
        xmlns="http://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementManifest Location="elements.xml" />
    </ElementManifests>
</Feature>

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Module
        Name="WebPart"
        List="113"
        Url="_catalogs/wp"
        RootWebOnly="TRUE">
        <File Url="WebPart.dwp" Type="GhostableInLibrary" />
    </Module>
</Elements>
于 2009-11-04T17:36:05.293 回答