无法加载文件或程序集''或其依赖项之一

时间:2011-12-06 20:01:51

标签: c# asp.net sharepoint sharepoint-2010

请帮忙吗?

我只有一个图书馆,这让我发疯。这是我收到的错误。 我没有使用任何其他依赖。

Could not load file or assembly 'FOD.Intranet.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=039c1f3a4c719e82' or one of its dependencies. The system cannot find the file specified. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'FOD.Intranet.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=039c1f3a4c719e82' or one of its dependencies. The system cannot find the file specified.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[FileNotFoundException: Could not load file or assembly 'FOD.Intranet.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=039c1f3a4c719e82' or one of its dependencies. The system cannot find the file specified.]
   NewCollection.VisualWebPart1.VisualWebPart1UserControl.TodaysNews() +0
   NewCollection.VisualWebPart1.VisualWebPart1UserControl.Page_Load(Object sender, EventArgs e) +52
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
   System.Web.UI.Control.OnLoad(EventArgs e) +132
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Control.AddedControl(Control control, Int32 index) +350
   NewCollection.VisualWebPart1.VisualWebPart1.CreateChildControls() +155
   System.Web.UI.Control.EnsureChildControls() +146
   System.Web.UI.Control.PreRenderRecursiveInternal() +61
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3394

9 个答案:

答案 0 :(得分:28)

要使Visual Studio将第三方程序集甚至您自己的程序集从解决方案中的其他项目添加到GAC,请执行下一步:

  1. 从SharePoint项目的Package文件夹中打开Package.package。

  2. 点击底部区域的高级。

  3. 单击“添加”,然后选择要添加的程序集类型。

  4. 在对话框中选择dll文件,chec GAC或BIN,添加安全控件和 如果需要,可以输入类资源单击“确定”。

  5. 您的程序集将打包到WSP,在清单中定义并每次部署。

答案 1 :(得分:16)

解决了问题!

我认为Visual Studio正在将DLL复制到GAC中,但显然不是。所以我手动复制它,它的工作原理。

但有一个问题是,在部署sharepoint应用程序时,Visual Studio不会将其复制到GAC这是正常的吗?

对于那些想知道如何将dll复制到GAC的人

有两种方法可以将dll复制到GAC:

  1. 手动复制dll

    1. 在Windows资源管理器中打开c:\ windows \ assembly目录
    2. 打开另一个Windows资源管理器实例,然后转到dll所在的位置, 通常在bin文件夹中。 (所以现在你将打开两个窗户)
    3. 选择要复制到gac的dll并将其拖到程序集目录中,c:\ windows \ assembly
  2. 使用VS将其部署到GAC。

      在您的sharepoint项目中
    1. 双击“Package”。
    2. Package.Package将会打开。查看屏幕左下角,然后单击“高级”,
    3. 然后单击“添加”,然后选择“从项目输出添加装配...”。
    4. 在“源项目”下拉列表中,选择项目,然后单击“确定”。
    5. 最终部署解决方案,dll将在GAC中。
  3. 感谢您的支持。

答案 2 :(得分:1)

对于不在GAC中的程序集以及在构建中引用的程序集,如果平台目标不匹配,有时也会发生此错误。因此,将组装平台类型与正在使用的类型匹配。

enter image description here

答案 3 :(得分:0)

  • 版本号是否匹配?
  • 看到你正在尝试加载.lib文件而不是dll,这很奇怪。也许你想加载一个dll?
  • 要调试此类问题,请尝试Fusion Logging
  • 您说您只使用了一个库,但该库可能有一些您不知道的依赖项。 This SO question涉及列出托管.NET程序集的依赖关系。

答案 4 :(得分:0)

请尝试取消引用DLL,然后重新引用它并重建项目。另外,检查以确保版本与项目Web配置中的内容匹配

答案 5 :(得分:0)

假设您有权访问SharePoint服务器,请尝试以下操作。一些随意的想法,没有特定的顺序。

  • 将程序集部署到GAC或将dll复制到Web应用程序的bin文件夹
  • 在web.config程序集部分和安全控件部分添加程序集信息。
  • 如果您正在开发Web部件,请确保在Web部件的安全控件部分添加其引用(虽然我不认为这是您的问题)
  • 在某些情况下,使用强名称对程序集进行签名可能会有所帮助。
  • 如果您有自定义依赖项,则需要对所有依赖项执行相同的步骤(除了.net框架和SharePoint相关)

您是否正在使用visual studio开发SharePoint项目(您的意思是Web部件吗?)?您是否在SharePoint项目中引用它?您需要向我们提供有关开发环境的更多详细信息,以便能够查明问题。

答案 6 :(得分:0)

如果您使用的是代码Page.Load(“control_path ...”)。确保您加载的实际ascx文件没有包含异常消息中的程序集的任何指令

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

答案 7 :(得分:0)

如果在Visual Studio 2012中发布时出错,请在发布向导中取消选中“发布时预编译”选项,然后重试。

Un-check the "Precompile during publishing" box

答案 8 :(得分:0)

对于仍然在研究这个问题的人来说,你需要知道的一件事是 有不同的GACutils,所以你需要确保你使用正确的GACUTIL部署DLL来纠正GAC

例如:如果我的dll符合3.5 .net框架,我的操作系统版本是64位窗口,它将位于以下位置

C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64

挣扎了4个愚蠢的日子来解决这个问题