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

有什么帮助吗?

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

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 

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

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

  2. 单击底部区域中的“高级”

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

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

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

问题解决了!

我认为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。

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

感谢您的支持。

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

在此处输入图像描述

请尝试取消引用DLL,然后再次引用它并重建项目。 还要检查以确保版本与项目Web配置中的版本匹配

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

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

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

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

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

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

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

取消选中“发布期间预编译”框

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

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

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

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