Система таргетинга 4.7 или 4.7.1 решит проблему. Это потому, что есть некоторые конфликты на стороне стандарта .net 2

й проект, который у нас есть с MongoDB, в какой-то момент будет иметь проблему с библиотекой System.Runtime.InteropServices, которая не загружается.

На этот раз ошибка интересна:

Внешнее исключение не может найти версию 4.3.0.0 библиотеки. Но внутреннее исключение не может найти версию 4.0.0.0

У кого-нибудь есть идеи по этому поводу?

Больше информации о проблеме:

Итак, NuGet имеет установленную 4.3.0.0

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="System.Runtime" version="4.3.0" targetFramework="net462" />
  <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
</packages>

packages.config подтверждает, что у меня установлена ​​4.3.0.0,

тем не мение,app.config которые всегда кажутся не синхронизированными с реальностью:

  <dependentAssembly>
    <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
  </dependentAssembly>

Добавлена ​​строка о версии 4.0.1.0

В той же строке .. csproj это чушь:

<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>x:\Packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
</Reference>

Поскольку он претендует на ссылку 4.0.1.0 с путем 4.3.0.0

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

Когда я пытаюсь загрузить вручную:

        var Name = new AssemblyName("System.Runtime.InteropServices.RuntimeInformation, Version=4.3.0.0");
        var Asm = Assembly.Load(Name);

это также терпит неудачу.

Я обнаружил, что System.Runtime.InteropServices.RuntimeInformation.dll НЕ копируется в папку сборки, даже если она включена в проект.

Я нашел неприятный обходной путь: если я включаю MongoDB в основной exe-файл, даже если я его не использую, он зависит от библиотеки Interop, и это вынуждает копировать библиотеку в папку сборки, а затем работают последующие вызовы ,

Ответы на вопрос(0)

Ваш ответ на вопрос