0

我有一个带有可视 Web 部件的 SharePoint 项目(WebPartA 继承自 OtherWebPartC) - 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?

4

2 回答 2

0

尝试:

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

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

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

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

于 2013-01-17T20:20:38.033 回答
0

只是提醒大家挖掘这些古老的问题......我今天偶然发现了这个问题,所以我决定发表评论以澄清事情。大部分信息可以从Waldek Mastykarz 的这篇精彩文章中获取

  1. 使用项目,您想打包Controls项目,包括SafeControls条目。
  2. 双击Package项目项目,包设计器将打开。
  3. 在包设计器中单击高级按钮。在“高级”视图中,单击“添加”按钮并从项目输出中选择“添加程序集” (VS17 中的选项不同,但它们相似) ...菜单选项。
  4. 从源项目下拉列表中选择您的其他项目。
  5. 然后在 Safe Controls 部分中,单击 Click here to add a new item 按钮以添加新的 Safe Controls 条目。
  6. 使用该$SharePoint.Project.AssemblyFullName$标记,以便您可以指定要包含程序集的完全限定名称。
于 2022-02-07T23:10:09.697 回答