SPItemEventReceiver和其他程序集中的代码

本文关键字:集中 代码 程序集 程序 其他 SPItemEventReceiver | 更新日期: 2023-09-27 18:29:15

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

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

它们都引用Common.dll,在两个包中

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

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

问题:在项目SharePointStructure中,我有执行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?所以我不会有这种例外

重要更新

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

如果有任何帮助,我将不胜感激。

感谢

SPItemEventReceiver和其他程序集中的代码

一次一个问题。让我们试着修理一下安全控制装置。

通常,这个错误只是因为你需要签署项目。所以…

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

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

现在,转到您的sharepoint项目,即带有Web部件的项目,添加引用,就不会出现任何消息。

最后,但同样重要的是,在解决方案窗格中选择包,用包设计器打开它,然后选择advance。在这里,您必须通过选择"从中添加输出程序集"或类似选项来从类库添加dll。您必须选择将文件部署到哪里,通常部署到GAC中。

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