【问题标题】:Could not load file or assembly '' or one of its dependencies无法加载文件或程序集“”或其依赖项之一
【发布时间】:2012-01-14 09:59:57
【问题描述】:

有什么帮助吗?

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

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

【问题讨论】:

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


    【解决方案1】:

    要使 Visual Studio 在 GAC 解决方案中添加第 3 方程序集甚至您自己的程序集,请执行以下操作:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      问题解决了!

      我认为 Visual Studio 正在将 DLL 复制到 GAC,但显然不是。所以我手动将它复制到那里并且它可以工作。

      不过有一个问题,当我部署共享点应用程序时,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 中。

      感谢您的支持。

      【讨论】:

      • 如果您希望 Visual Studio 执行此操作,请确保将引用的属性“复制本地”设置为 true
      • 注意:永远不要触摸 Windows\Assembly 文件夹,手动复制它是一个非常糟糕的主意。使用 gacutil /i 安装 DLL 并使用 gacutil /u 删除它。 /i 采用完整路径,而 /u 采用不带扩展名的 dll 名称。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 嗨拉法玛,感谢您的回复。我取消引用它并再次重新引用它,但它不起作用。在 webconfig 中,我必须查看类库 dll 还是使用 dll 的项目?我在 webconfig 中没有找到对此命名空间 FOD.Intranet.Lib 的任何引用。
        【解决方案5】:
        • 版本号是否匹配?
        • 看到您尝试加载 .lib 文件而不是 dll,这很奇怪。也许您想加载一个 dll?
        • 要调试此类问题,请尝试Fusion Logging
        • 您说您只使用一个库,但该库可能有一些您不知道的依赖关系。 This SO question 处理列出托管 .NET 程序集的依赖项。

        【讨论】:

        • 嗨 Dario_ramos,我正在加载一个 dll,但程序集的名称是 FOD.Intranet.Lib.dll
        • 那不是问题所在。我会尝试融合日志记录
        • 我创建了一个演示库,它有一个将两个数字相加的方法,我从一个共享点项目中引用它。我得到了与上述相同的错误。现在,当我使用 asp.net 项目时,它工作正常。它不会抱怨 dll。
        • 你的 Sharepoint 项目配置一定有问题。不太了解 Sharepoint,但您可能想了解 dll 查找在 Sharepoint 中的工作原理
        • 感谢达里奥的帮助。我会进一步研究它,但这让我抓狂。
        【解决方案6】:

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

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

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

          • 嗨,Maks,我在用户控件中使用 Import 语句。我需要访问 .ascx 文件中的库。
          • 所以这实际上是一个依赖项。您必须将此库 (FOD.Intranet.Lib) 放入解决方案中。如果您在将自定义程序集添加到 wsp 时需要帮助,请告诉我。
          • 当我添加对程序集的引用时,我看到 Visual Studio 将它复制到 Bin 文件夹中,我在 Visual Studio 的引用文件夹中看到它。我做错了什么?
          • 请看这篇文章。 blog.mastykarz.nl/… 它提供了如何将程序集添加到包中的分步指南。你的情况更简单。你必须添加一个现有的程序集而不是项目输出。并检查 GAC 的部署目标。而且您不必添加 SafeControls。
          【解决方案8】:

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

          例如:如果我的 dll 在 3.5 .net 框架中编译并且我的操作系统版本是 64 位 Windows,它将位于以下位置

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

          苦苦挣扎了 4 天来弄清楚这个问题

          【讨论】:

            【解决方案9】:

            出现此错误是因为您的 dll 文件和项目文件位于不同的文件夹中。

            添加 Visual Studio 3rd 方程序集,如 SelectPdf.dllSelectHtmlToPdf.dll 等。

            你只需要把你的 dll 文件放在同一个文件夹中并添加对这个文件的引用。

            步骤:创建文件夹名称externaldll,并将所有dll文件放在这里。

            【讨论】:

              猜你喜欢
              • 2021-12-12
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多