Не удалось загрузить файл или сборку '' или одну из ее зависимостей

16

Любая помощь пожалуйста?

У меня есть только одна библиотека, и это сводит меня с ума. это ошибка, которую я получаю. Я не использую никаких других зависимостей.

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
Теги:
sharepoint
sharepoint-2010

9 ответов

16
Лучший ответ

Проблема решена!

Я думал, что Visual Studio копирует DLL в GAC, но, скорее, нет. Поэтому я скопировал его вручную, и он работает.

Один вопрос: нормальная ли визуальная студия не копирует ее в gac при развертывании приложения sharepoint?

Для тех, кто хотел бы знать, как скопировать ddl в GAC

существует два способа скопировать dll в GAC:

1) copy the dll manually

a)Open c:\windows\assembly directory in windows explorer
b)Open another instance of windows explorer and go to the place where your dll is located, 
usually in the bin folder. (so now you will have two windows open)
c)select the dll you would like to copy to gac and drag it inside the assembly directory, c:\windows\assembly


2) use VS to deploy it for you to GAC.
a) in your sharepoint project double click on "Package".
b) Package.Package will open. Look bottom left of your screen and click on "Advanced", 
c) then click on "Add", then select "Add Assembly from project output...". 
d) In the Source project dropdownlist select the project and then click OK. 
e) finally deploy the solution and the dll will be in the gac.

Благодарим вас за поддержку.

  • 3
    Вы должны принять свой собственный ответ!
  • 0
    если вы хотите, чтобы Visual Studio делал это, убедитесь, что для свойства 'copy local' ссылки установлено значение true
Показать ещё 1 комментарий
27

Чтобы сделать Visual Studio добавлением сторонней сборки или даже вашей собственной сборки из другого проекта в решении для GAC, сделайте следующее:

  • Откройте пакет Package.package из папки Пакета в проекте SharePoint.

  • Нажмите "Дополнительно" в нижней области.

  • Нажмите "Добавить" и выберите, какой тип сборки вы хотите добавить.

  • В диалоговом окне выберите dll файл, chec GAC или BIN, добавьте безопасные элементы управления и при необходимости введите ресурсы ресурсов класса. Нажмите "ОК".

Ваша сборка будет упакована в WSP, определенную в манифесте и развернутую каждый раз.

  • 2
    Вы спасатель жизни! Большое спасибо!
0

Для сборок, не входящих в состав GAC, и которые упоминаются в сборке, иногда эта ошибка также возникает, если целевая платформа не соответствует. Поэтому сопоставьте тип платформы сборки с тем, где он используется.

Изображение 137693

0

для ребят, которые все еще рассматривают этот вопрос, нужно знать там есть разные GACutils, поэтому вам нужно убедиться, что ur с использованием правильного GACUTIL для развертывания DLL для исправления GAC

например: если моя dll была выполнена в 3.5.net framework, а моя версия ОС - 64-битные окна, она будет находиться ниже

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

Борясь за 4 глупых дня, чтобы понять это

0

Если ошибка произошла, когда публикация в Visual Studio 2012 отмените проверку параметра "Прекомпилировать во время публикации" в мастере публикации и повторите попытку.

Изображение 137692

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" %>
  • 0
    Привет, Макс, я использую оператор импорта в пользовательском элементе управления. Мне нужно получить доступ к библиотеке в файле .ascx.
  • 1
    Так что это на самом деле зависимость. Вы должны поместить эту библиотеку (FOD.Intranet.Lib) в решение. Пожалуйста, дайте мне знать, если вам нужна помощь с добавлением пользовательской сборки в WSP.
Показать ещё 2 комментария
0

Предполагая, что у вас есть доступ к серверу SharePoint, попробуйте следующее. Некоторые случайные мысли и никакого конкретного порядка.

  • Разверните узел в GAC или скопируйте dll в папку bin вашего веб-приложения.
  • Добавьте информацию о сборке в раздел сборки web.config и раздел "Безопасные элементы управления".
  • Если вы разрабатываете веб-часть, обязательно добавьте ее ссылку в разделе безопасных элементов веб-частей (хотя я не думаю, что это ваша проблема).
  • Подписание сборки с сильным именем может помочь в некоторых случаях.
  • Если у вас есть пользовательские зависимости, вам необходимо выполнить те же действия для всех зависимостей (кроме инфраструктуры .NET и связанных с SharePoint).

Вы разрабатываете свой проект SharePoint (вы имеете в виду веб-часть?), используя визуальную студию? Вы ссылаетесь на него в своем проекте SharePoint? Вы должны предоставить нам более подробную информацию о вашей среде разработки, чтобы определить проблему.

0

Пожалуйста, попробуйте не ссылаться на DLL, а затем повторно ссылайтесь на нее и перестройте проект. Также проверьте, соответствует ли версия тем, что находится в веб-конфигурации проекта.

  • 0
    Привет Лафама, спасибо за ваш ответ. Я разыменовываю его и снова ссылаюсь на него, но он не работает. В webconfig я должен увидеть библиотеку классов DLL или проект, который использует DLL? Я не нашел никакой ссылки на это пространство имен FOD.Intranet.Lib в webconfig.
0
  • Соответствует ли номер версии?
  • Странно видеть, что вы пытаетесь загрузить .lib файл вместо dll. Возможно, вы захотели загрузить dll вместо этого?
  • Чтобы отладить такие проблемы, попробуйте Fusion Logging
  • Вы говорите, что используете только одну библиотеку, но эта библиотека может иметь некоторые зависимости, о которых вы не знаете. Этот вопрос SO посвящен перечислению зависимостей управляемой сборки .NET.
  • 0
    Привет Dario_ramos, я загружаю DLL, но имя сборки FOD.Intranet.Lib.dll
  • 0
    Это не проблема, тогда. Я бы попробовал фьюжн
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню