«FileNotFoundException - Не удалось загрузить файл или сборку» из библиотеки проекта, даже если используется LoadFrom () - PullRequest
0 голосов
/ 28 января 2020

У меня есть проект VS2017, составленный из:

- Main console application `App.exe`, compiled in .NET Framework 4.6.1
--- (referenced by `App.exe`) Custom dynamic library `LibOne.dll`, compiled in .NET Standard 2.0
----- (referenced by `LibOne.dll`) Another dynamic library `LibTwo.dll`, compiled in .NET Framework 3.5

По умолчанию оба LibOne.dll и LibTwo.dll копируются в папку App.exe при компиляции. Вместо этого мне нужно запретить копирование LibTwo.dll, чтобы программа искала его по другому пути системы, C:\Path_To_LibTwo.

Так что я установил «Копировать локально» и «Специфи * 1034». * Версия "в ЛОЖЬ для LibTwo.dll, как в приложениях, так и в проектах LibOne, теперь программа выдает эту ошибку именно тогда, когда я вызываю метод LibOne.dll:

An unhandled exception of type 'System.IO.FileNotFoundException' occurred in App.exe
Could not load file or assembly 'LibTwo, Version=12.4.0.61, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

Это le git, но проблема все еще существует, даже если:

  • C:\Path_To_LibTwo (где содержится LibTwo.dll) был добавлен в PATH системы
  • Я добавил эту строку в качестве первого шага мое приложение: System.Reflection.Assembly.LoadFrom(@"C:\Path_To_LibTwo\LibTwo.dll"); (Примечание: эта строка правильно возвращает сборку LibTwo, поэтому она найдена)

ОБНОВЛЕНИЕ : я добавил это в App.config:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
        <assemblyIdentity name="LibTwo" culture="neutral" publicKeyToken="null" />
        <codeBase href="file:///C:/Path_To_LibTwo/LibTwo.dll" />
    </dependentAssembly>
</assemblyBinding>

А теперь ошибка другая:

Could not load file or assembly 'LibTwo, Version=12.4.0.61, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
The private assembly was located outside the appbase directory. (Exception from HRESULT: 0x80131041)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...