1

我的解决方案中有四个项目:

  1. 类库,(.NET 3.5) 称为 Common.dll
  2. 具有列表定义的名为SharePointStrucutre的 SharePoint 项目。
  3. 包含 SharePoint 作业的 SharePoint 项目。

它们都引用了两个包中的 Common.dll

4 带有 WebPart 的 SharePoint 项目。我无法让它与 Common.dll 一起工作,即使我已将它添加到 web.config 中的 SafeControl 部件 - WebPart 只是给我消息:这种类型不安全,无法导入。所以我最终只是将代码从 Common.dll 复制到第四个项目。(瘸!)

最糟糕的是,在我的本地设置中,一切正常(WebPart 添加时没有任何类型安全消息,EventReceiver 工作正常)。仅当我部署到实时系统时才会出现问题。

问题:SharePointStrucutre项目中,我有执行 Common.dll 代码的 SPItemEventReceiver。它失败了!例外:

System.IO.FileNotFoundException: Could not load file or assembly 'Common, Version=1.0.0.9, 
Culture=neutral, PublicKeyToken=0dbfee127d760dde' or one of its dependencies. The system cannot find 
the file specified.
File name: 'Common, Version=1.0.0.9, Culture=neutral, PublicKeyToken=0dbfee127d760dde'

我检查了 GAC,这个程序集就在那里,一切都部署得很好。

问题:

  1. 分离 SharePoint 项目并拥有公共库是否是正确的决定?在我将它作为一个项目之前,它会导致升级和破坏已经创建的列表出现问题。
  2. 如何以正确的方式引用dll?所以我不会有这种例外

重要更新

在我的SharePointStrucutre中,我有在 Common.dll 上中继的代码 (HttpModule),它可以工作。仅在列表事件接收器中存在问题。只有在那里我收到无法加载 dll 的消息。

我将不胜感激任何帮助。

谢谢

4

1 回答 1

1

一次一个问题。让我们尝试修复安全控件。

通常这个错误只是因为你需要对项目进行签名。所以...

  1. 删除您复制的所有代码以解决此问题
  2. 从您的解决方案窗格中选择类库项目(通用)
  3. 右键单击项目a选择属性
  4. 搜索您可以在其中签署项目的选项卡。
  5. 您将看到一个下拉列表,其中包含两个新选项或添加现有选项(或类似选项)。我通常选择我的 sp 项目已经使用的密钥,但请自行选择。

完成后,您可以在任何 sp2010 项目中使用此库。

现在,转到您的 sharepoint 项目,即带有 webpart 的项目,添加引用,应该不会出现任何消​​息。

最后但并非最不重要的一点是,在解决方案窗格中选择包,使用包设计器打开它并选择高级。在这里,您必须通过选择“添加输出程序集”或类似选项来从类库中添加 dll。您必须选择将文件部署到何处,通常是部署到 GAC 中。

我认为所有这些步骤应该会让你的问题消失......祝你好运!;)

于 2013-08-28T19:00:12.193 回答