【问题标题】:Visual Web Part with referenced DLL not checking GAC具有引用 DLL 的可视 Web 部件不检查 GAC
【发布时间】:2012-10-29 08:59:05
【问题描述】:

我有一个带有可视 Web 部件(WebPartA 继承自 OtherWebPartC)的 SharePoint 项目 - 该 Web 部件引用了两个 DLL(ClassLibraryB 和 OtherWebPartC),它们包含在包中,设置为部署到 GAC。

当我部署项目时,DLL 已成功部署到 GAC,并且 Web 部件成功显示在 SharePoint 的库中。

但是,当我尝试将可视 Web 部件 (WebPartA) 添加到页面时,页面会中断 - 我启用了错误显示和堆栈跟踪 - 它说找不到 ClassLibraryB.dll。我使用 fuslogvw 和 procmon 确定它正在尝试从典型位置(虚拟目录/bin、临时 asp.net 文件夹)加载 DLL,即使 DLL 不在这些位置(但正如我所说,它已成功部署到 GAC)。

于是我手动将 ClassLibraryB.dll 和 OtherWebPart.dll 添加到虚拟目录/bin 中,并成功运行。

如何让 SharePoint 在 GAC 中查看 ClassLibraryB.dll 和 OtherWebPart.dll?还是我必须手动将 DLL 部署到站点的虚拟目录/bin?

【问题讨论】:

  • 您是否确认您的程序集在 GAC 中(不仅仅是您的解决方案已部署)?你是如何引用程序集的?
  • 是的 - 我已确认程序集在 GAC 中 - 我在项目中引用了 DLL,并将它们添加到项目中的包中。
  • 引用是在代码隐藏中使用还是在使用@Register 的页面/控件上使用?
  • 确保部署到 GAC 的程序集已签名并具有强名称。
  • 是的,他们已签名并具有强名称

标签: sharepoint web-parts gac


【解决方案1】:

尝试:

  • 将 WebPart/程序集部署目标更改为“WebApplication”(而不是 GAC);

  • 撤回解决方案并从 GAC 中删除相应的程序集;

  • 重新构建解决方案并将其与程序集一起重新部署到 SharePoint Bin 文件夹(选定的“WebApplication”部署目标)。

是否所有必要的程序集都复制到 Bin 文件夹中?解决方案在这种情况下有效吗?

【讨论】:

    【解决方案2】:

    只是提醒大家挖掘这些古老的问题...... 我今天偶然发现了这个问题,所以我决定发表评论以澄清事情。 大部分信息可取自this great article by Waldek Mastykarz

    1. 使用项目,您希望打包 Controls 项目,包括 SafeControls 条目。
    2. 双击Package项目项,包设计器将打开。
    3. 在包设计器中单击高级按钮。在“高级”视图中,单击“添加”按钮并选择“从项目输出中添加程序集”(VS17 中的选项不同,但它们相似)...菜单选项。
    4. 从源项目下拉列表中选择您的其他项目。
    5. 然后在“安全控制”部分中,单击“单击此处添加新项目”按钮以添加新的安全控制条目。
    6. 使用$SharePoint.Project.AssemblyFullName$ 标记,以便您可以指定要包含程序集的完全限定名称。

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      相关资源
      最近更新 更多