System.IO.FileNotFoundException: Не удалось загрузить файл или сборку [дубликат]

Мне нравится этот код:

function getClientIP() {

    if (isset($_SERVER)) {

        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
            return $_SERVER["HTTP_X_FORWARDED_FOR"];

        if (isset($_SERVER["HTTP_CLIENT_IP"]))
            return $_SERVER["HTTP_CLIENT_IP"];

        return $_SERVER["REMOTE_ADDR"];
    }

    if (getenv('HTTP_X_FORWARDED_FOR'))
        return getenv('HTTP_X_FORWARDED_FOR');

    if (getenv('HTTP_CLIENT_IP'))
        return getenv('HTTP_CLIENT_IP');

    return getenv('REMOTE_ADDR');
}
193
задан abatishchev 29 August 2012 в 10:54
поделиться

30 ответов

  1. Проверьте, ссылаетесь ли вы на сборку, которая, в свою очередь, ссылается на старую версию единства. Например, предположим, что у вас есть сборка под названием ServiceLocator.dll, для которой требуется старая версия сборки Unity, теперь, когда вы ссылаетесь на ServiceLocator, вы должны предоставить ей старую версию Unity, и это создает проблему.
  2. Может быть папкой вывода, в которой все проекты строят свои сборки, имеет старую версию единства.

Вы можете использовать FusLogVw , чтобы узнать, кто загружается старые сборки, просто определите путь для журнала и запустите свое решение, затем проверьте (в FusLogvw) первую строку, где загружена сборка Unity, дважды щелкните ее и посмотрите на вызывающую сборку, и здесь вы идете.

93
ответ дан Slime recipe 18 August 2018 в 05:51
поделиться
  • 1
    Где находится файл журнала FuseLogVw – Stiger 1 August 2014 в 04:41
  • 2
    Чтобы избежать необходимости находить файл журнала, вы можете указать собственный путь к журналу: «Настройки», установите флажок «Включить настраиваемый путь к журналу», введите собственный путь к журналу и обновите его. – RedGreenCode 21 January 2015 в 20:46

, если вы получаете это сообщение об ошибке, открыв приложение на вашем Windows XP, это означает, что сначала вы установили это приложение из-за того, что он не работает без сетевой среды 4 и пакета обновления 3. вы установили оба, и снова вы получаете эту ошибку, поэтому вам нужно снова установить это приложение, но сначала удалить из add и remove

, если это не работает, пожалуйста, не злоупотребляйте мной. я также младший

1
ответ дан basit durrani 18 August 2018 в 05:51
поделиться

Попробуйте очистить папки Debug и Release в вашем решении. Затем удалите и снова добавьте единство.

40
ответ дан BlaM 18 August 2018 в 05:51
поделиться
  • 1
    Эта проблема может быть вызвана множеством вещей ... ваше решение решило мои проблемы и могло бы решить и другие. – Scott Rippey 29 September 2011 в 02:19
  • 2
    @ScottRippey Это сработало для меня. Сначала я удалил все файлы .pdb, а затем перезагрузил мой проект и перестроил его. – botenvouwer 12 February 2014 в 10:26
  • Перейти к: Решение -> Пакет
  • Нажмите вкладку «Дополнительно» (найдите ниже страницы)
  • Добавьте вашу dll в дополнительные сборки (таким образом мы можем добавить внешние DLL в sharepoint).
5
ответ дан Community 18 August 2018 в 05:51
поделиться
  • 1
    У меня нет «Solution - & gt; Пакет & quot; в моем проекте VS2010 – Muflix 1 July 2015 в 14:11

Эта проблема произошла со мной, когда одна из моих зависимых библиотек составляла DLL с «Any CPU», когда родительская библиотека ожидала компиляцию «x64».

3
ответ дан Creamstout10 18 August 2018 в 05:51
поделиться

В редакторе решений щелкните правой кнопкой мыши по проекту (а не по решению), на вкладке сборки выберите Платформа цели: «Любой процессор».

7
ответ дан Engin Aydoğdu 18 August 2018 в 05:51
поделиться

У меня было это сегодня, и в моем случае проблема была очень странной:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0" newVersion="3.1.0.0" />
  </dependentAssembly>0.

Обратите внимание на блуждающих символов в конце XML - так или иначе они были перенесены с номера версии на конец этого блока XML!

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
  </dependentAssembly>

Изменен и выше, и вуаля! Все снова работало.

2
ответ дан garryp 18 August 2018 в 05:51
поделиться

Вы должны удалить файл appname.dll из выходной папки. Отладка и удаление папок. Перестроить и скопировать в файл регенерированной DLL-файл.

2
ответ дан gucci 18 August 2018 в 05:51
поделиться

На 99% Не удалось загрузить файл или сборку или одна из проблем с зависимостями вызвана зависимостями! Я предлагаю вам выполнить следующие действия:

  1. Загрузить Dependency Walker из http://www.dependencywalker.com/
  2. Запустите Уклонение зависимостей и откройте dll (в моем случае NativeInterfaces.dll)
  3. Вы можете увидеть одну или несколько dll с ошибкой в ​​красном Ошибка открытия файла. ..
  4. Это означает, что эта DLL отсутствует в вашей системе; в моем случае имя dll - MSVCR71.DLL
  5. Вы можете скачать пропуски dll из google и скопировать на правильный путь (в моем случае c:\windows\system32)
  6. На этом этапе вы должны зарегистрируйте новую dll в GAC (глобальный кэш сборок): откройте терминал DOS и напишите:
    cd \Windows\System32
    regsvr32 /i msvcr71.dll
    
  7. Перезагрузите приложение!
12
ответ дан H. Pauwelyn 18 August 2018 в 05:51
поделиться
  • 1
    Dependency walker замечательный, но копирование случайных DLL из Интернета в Windows - это ... менее здорово. Лучше попытаться найти установщика, который предоставляет эти DLL. – RJFalconer 13 October 2016 в 12:34
  • 2
    Я ничего не показывал для меня. – Edward Olamisan 19 January 2017 в 00:02
  • 3
    Я получил несколько файлов (API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL), которые не были найдены, и привели меня к этому вопросу stackoverflow . В основном имейте в виду, можно посмотреть на ложные положительные для некоторых файлов, ссылка обеспечивает более подробную информацию. – cheriejw 15 May 2018 в 01:00

У меня была аналогичная проблема. ** Ответ Juntos правильный **, но вы должны отметить один важный совет!

Для единства 2.1.505.2 указаны различные AssemblyVersion и AssemblyFileVersion:

enter image description here [/g1]

AssemblyFileVersion используется nuget, но CLR не заботится об этом! CLR будет использовать только AssemblyVersion!

Поэтому перенаправления должны применяться к версии, указанной в AssemblyVersion: 2.1.505.0

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>

См. Также: . Каковы различия между AssemblyVersion, AssemblyFileVersion и AssemblyInformationalVersion?

9
ответ дан Ievgen Naida 18 August 2018 в 05:51
поделиться

Проверьте файл Web.config / App.config в своем проекте. Посмотрите, верны ли номера версий.

<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />

Это сработало для меня.

10
ответ дан Jaseem Abbas 18 August 2018 в 05:51
поделиться
  • 1
    Это сработало для меня, хотя это был web.config, а не app.config – samneric 12 January 2018 в 03:50

Вы говорите, что у вас много проектов в вашем решении ... ну, начните с одного в верхней части порядка сборки. Получите это, чтобы построить, и как только вы это выясните, вы можете применить одно и то же исправление к остальным.

Честно говоря, вам, вероятно, просто нужно обновить свою ссылку. Похоже, что вы либо обновили свою версию, либо не обновили ссылки, либо это относительный путь, если вы держите свое решение в контроле источника. Просто подтвердите свои предположения и снова добавьте ссылку.

3
ответ дан Joel Martinez 18 August 2018 в 05:51
поделиться

Microsoft Enterprise Library (ссылка на .NetTiers) была нашей проблемой, которая, в свою очередь, ссылалась на более старую версию Unity. Чтобы решить проблему, мы использовали следующее переадресацию привязки в файле web.config:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

. Кроме того, вам может потребоваться просто обновить корпоративную библиотеку до последней версии.

13
ответ дан Junto 18 August 2018 в 05:51
поделиться

Откройте диспетчер IIS

Выберите пулы приложений

, затем выберите пул, который вы используете

перейдите к дополнительным настройкам (с правой стороны)

Измените флаг Включить 32-битное приложение false на true.

61
ответ дан kranthi 18 August 2018 в 05:51
поделиться
  • 1
    IIS - & gt; выберите каждый ApplicationPool - & gt; Основные настройки - & gt; проверьте, выбрана ли последняя структура в разделе «Версия .NET Framework», падать – Martin 19 November 2013 в 08:58
  • 2
    Вы также можете щелкнуть правой кнопкой мыши свой проект в VS. и удалите предпочтительную 32-битную галочку – eran otzap 12 October 2014 в 07:57
  • 3
    Благодарю. Это сработало. Ну, это было уже правда в моем случае, просто для попытки. Я сделал это ложно, и это сработало. – meekash55 27 January 2017 в 11:10

Мое решение для .NET 4.0 с использованием Enterprise Library 5 заключалось в том, чтобы добавить ссылку на:

Microsoft.Practices.Unity.Interception.dll

2
ответ дан MacGyver 18 August 2018 в 05:51
поделиться

Несмотря на то, что исходный вопрос был опубликован 5 лет назад, проблема все еще сохраняется и довольно раздражает.

Общее решение - это тщательный анализ всех ссылочных ассемблеров, чтобы понять, что происходит не так. Чтобы упростить эту задачу, я создал инструмент (расширение Visual Studio), который позволяет выбирать сборку .Net (.ddl или .exe-файл) и получать график всех ссылочных ассемблеров с прорисованными конфликтующими или пропущенными ссылками.

Инструмент доступен в галерее Visual Studio: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734

Пример вывода:

10
ответ дан marss 18 August 2018 в 05:51
поделиться
  • 1
    Не работает с версиями сообщества Visual Studio – Draex_ 8 September 2017 в 18:29
  • 2
    Я считаю, что должна быть другая проблема, не связанная с выпуском Visual Studio. Я тестировал расширение на VS 2017 и VS 2015 Community. Фактически он был разработан с помощью версии VS 2017 Community. – marss 9 September 2017 в 19:22
  • 3
    Ага. У вас есть какие-либо другие расширения? На этой странице говорится, что DGML не поддерживается в VS Community: msdn.microsoft.com/en-us/library/hh871439.aspx#VersionSupport – Draex_ 9 September 2017 в 20:17
  • 4
    В редакторе сообщества нет инструментов архитектуры, но сам редактор DGML доступен. Вы можете установить его, выбрав «Установить редактор DGML». под "Индивидуальные компоненты" - & GT; «Инструменты кода» через установщик Visual Studio - & gt; изменять – marss 16 October 2017 в 18:37

Другая возможная причина: убедитесь, что вы случайно не дали обоим проектам одно и то же имя сборки в свойствах проекта.

1
ответ дан nathanchere 18 August 2018 в 05:51
поделиться

В моем случае ни один из предложенных ответов не работал.

Вот что сработало для меня:

  1. Удалить ссылку
  2. Переименовать DLL
  3. Импортировать ссылку снова

Второй шаг был важен, по-видимому, так как он не работал без него.

2
ответ дан Nicolas Raoul 18 August 2018 в 05:51
поделиться

I «Задать в качестве стартового проекта» разгруженную / необоснованную библиотеку / проект.

Затем развернул ее.

Это сработало!

Я думаю, 't нашел .dll, потому что он не был в сборке сначала.

2
ответ дан nirav 18 August 2018 в 05:51
поделиться

После работы для меня.

  • Удалите временные файлы C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files, затем щелкните правой кнопкой мыши на Temporary Asp.net Files > свойства> безопасность и общий доступ к управлению IIS и всем пользователям, запускающим мой проект
2
ответ дан onlyme 18 August 2018 в 05:51
поделиться

Для меня восстановление игры единства без работы с Unity C # Project Checkmark.

2
ответ дан Praful Rudra 18 August 2018 в 05:51
поделиться

Хорошо, это может показаться очень глупым, но вот как я решил проблему, попробовав все другие решения и проведя ночь на эту глупость.

Я получал ту же ошибку с некоторой DLL, отсутствующей в Bin Folder. Я попытался удалить, восстановить все из Team Foundation Server, но не работал. Получил копию папки Bin с моей офис-мателокальной машины и заменил ее. Это тоже не сработало. Наконец, я вручную перешел на FTP-сервер, получил копию DLL, которая отображалась как отсутствующая, и затем она начала показывать, что следующий файл в последовательности списка файлов отсутствует.

Итак, я ftped server Получил все Bin Folder, вручную заменил каждый файл по одному. (Не Ctrl + All и заменить .. Я пробовал: он не работал.) И как-то это сработало ...

1
ответ дан rak 18 August 2018 в 05:51
поделиться

После работы для меня.

  • Удалить временные файлы C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Временные файлы ASP.NET
  • Закрыть VSTS и Open Again
  • Удалить и добавить те же DLL (Примечание: вы добавляете одинаковые совпадающие версии)
15
ответ дан Riddhi M. 18 August 2018 в 05:51
поделиться

Для меня ни один из других решений не работал (включая стратегию очистки / восстановления). Я нашел другое решение для решения проблемы, которое заключается в закрытии и повторной открытии Visual Studio.

Я полагаю, это заставляет Visual Studio повторно загружать решение и все проекты, перепроверяя зависимости в этом процессе.

45
ответ дан Robotnik 18 August 2018 в 05:51
поделиться
  • 1
    Если вы не верите, что это сработает, по крайней мере, попробуйте. Я не мог в это поверить, пока не сделал. – Ben Cull 27 January 2015 в 14:40

Я также получил эту ужасную ошибку и нашел решение для этого ...

  1. Щелкните правой кнопкой мыши по имени решения
  2. Нажмите «Чистое решение»
  3. ]
  4. Перезапустить Visual Studio
  5. Перейти к проекту Свойства >> Сборка
  6. Изменить конфигурацию для выпуска
  7. Начать отладку (F5)

1), 2)

4), 5)

Надеюсь, это вам тоже поможет.

5
ответ дан Roshana Pitigala 18 August 2018 в 05:51
поделиться

Спасибо Riddhi M. После этого работал для меня.

Удалить временные файлы C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Временные файлы ASP.NET Закрыть VSTS и открыть снова Удалить и добавить те же DLL (Примечание: вы добавляете одинаковые совпадающие версии)

4
ответ дан Sridhar Kommana 18 August 2018 в 05:51
поделиться
  • 1
    Провел так много времени, и я не могу поверить, что это был ответ. Обычно это хорошее решение, когда вы видите какое-то странное поведение в VS. Спасибо. – Bonez024 23 March 2018 в 21:12

Попробуйте проверить, установлено ли для свойства «Копировать в локальное» значение true, а для конкретной версии установлено значение «Истина». Это относится к приложениям в Visual Studio.

2
ответ дан Srinivas Somasundaram 18 August 2018 в 05:51
поделиться

В моем случае в папке bin была не ссылочная dll под названием Unity.MVC3, я безуспешно пытался найти любую ссылку на это в visual studio, поэтому мое решение было так просто, как удалить эту DLL из папки bin.

4
ответ дан Totodile 18 August 2018 в 05:51
поделиться

Следите за противоречивыми ссылками. Даже после чистых и перестроенных противоречивых ссылок все еще будет возникать проблема. Моя проблема заключалась между Афором и Согласием. Я удалил обе ссылки и повторно добавил ссылки, переучивая конкретную ссылку (в частности, мой случай, просто Accord).

2
ответ дан user3791372 18 August 2018 в 05:51
поделиться

Не уверен, что это может помочь.

Проверьте соответствие имени Assembly и пространства имен Default в свойствах в ваших ассамблях. Это разрешило мою проблему, которая дала ту же ошибку.

4
ответ дан zero323 18 August 2018 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: