Подтвердить что ты не робот

Не удалось загрузить файл или сборку "Microsoft.Data.Edm"

Мы используем пакет NuGet для хранения Windows Azure версии 4.1.0, это зависит от Microsoft.Data.OData и добавило этот пакет, а также dll Microsoft.Data.Edm. Когда мы создаем и запускаем приложение, мы иногда получаем следующую ошибку:

Could not load file or assembly 'Microsoft.Data.Edm' or one of its dependencies. The
located assembly manifest definition does not match the assembly reference. (Exception
from HRESULT: 0x80131040)

Мы имеем следующую переадресацию связывания в web.config, а также проверили, и это единственная версия Microsoft.Data.Edm, на которую ссылаются любые проекты в решении.

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
  </dependentAssembly>

Иногда, когда я смотрю в папку bin, я нахожу DLL-версию Microsoft.Data.Edm v 5.6.0. Я прошел через все проекты, и я не могу найти ссылку на Microsoft.Data.Edm, кроме как с клиентом хранения, и это определенно 5.6.1.

Каков наилучший способ попытаться найти работу с версией 5.6.0? Когда мы получаем эту ошибку, мы удаляем папки bin и obj и перестраиваем, а затем она работает нормально, версия 5.6.1 есть и все работает, но в конечном итоге это происходит снова.

EDIT:

Мы обновили все версии последних версий от NuGet и до сих пор не повезло, я запустил инструмент, который показывает следующие зависимости:

Possible conflicts for Microsoft.Data.Edm:

Microsoft.Data.OData      references Microsoft.Data.Edm, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.Data.Services.Client references Microsoft.Data.Edm, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.Storage references Microsoft.Data.Edm, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

Possible conflicts for Microsoft.Data.OData:

Microsoft.Data.Services.Client references Microsoft.Data.OData, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.Storage references Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

То, что я не понимаю, - это набор перенаправлений привязки приложения, но когда-то копируется версия 2.6.0, а иногда и 2.6.2. Кто-нибудь знает, почему это происходит, никогда раньше не было этой проблемы.

4b9b3361

Ответ 1

У меня было такое же сообщение об ошибке, но моя проблема не была связана с любым продуктом Azure. В моем случае я обновил OData с версии 3 до 4, и мне кажется, что Nuget оставил обязательные переадресации для устаревших dll. Всего было всего три: Microsoft.Data.Edm, Microsoft.Data.OData и System.Spatial.

Мое решение состояло в том, чтобы удалить перенаправленные переадресации. Вы также должны удалить старую dll, сидящую в папке bin, если процесс сборки не работает.

Ответ 2

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

Мы смогли проследить проблему на одной из наших машин, указав проблемный проект, увеличив объем вывода сборки Visual Studio:

Увеличение объема вывода сборки сборки Visual Studio

Затем мы искали выход и идентифицировали целевой проект, который был проблематичным, ища "Microsoft.Data.Edm". Мы заметили, что он, по-видимому, имеет косвенную зависимость от Microsoft.Data.Edm, но мы заметили, что сборка не была явно включена в качестве пакета для этого проекта. Итак, используя консоль пакета Nuget, мы нацелились на проект и выполнили: Install-Package Microsoft.Data.Edm который разрешил проблему.

Установить пакет с Nuget

Ответ 3

Вот несколько вещей, которые вы можете попробовать:

  • Проверьте событие Post Build, чтобы файл Microsoft.Data.Edm.dll копировался вручную в папку bin.
  • Убедитесь, что другие пакеты не зависят от Microsoft.Data.Edm 5.6.1. Легкий способ сделать это, посмотрев ваши файлы package.config.
  • Если ваш код находится в исходном элементе управления, убедитесь, что в папке bin никто не проверяет. Я удивляюсь тому, как многие люди не знают этого основного правила.
  • Удалите пакеты WindowsAzure.Storage и Microsoft.Data.Edm. Затем установите снова и убедитесь, что вы устанавливаете только стабильную версию.

НТН.

Ответ 4

Сегодня я встретил аналогичный случай, в моей ситуации сборка всегда копирует DLL старой версии в папку для отладки, причина в том, что мой проект напрямую не ссылается на эту DLL, она возвращает другой проект, ссылающийся на эту DLL.
Поэтому, когда вы строите, мой проект находит старую версию от GAC или другого места.
Я решил это, явно указав эту DLL в проекте из нужного места.
вот так:

<Reference Include="Microsoft.Data.Services.Client, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
</Reference>

Ответ 5

У меня была такая же проблема на моем сервере сборки и при проверке вывода сборки я заметил следующее:

Копирование файла из "C:\Program Files (x86)\Microsoft WCF Data Службы \5.6\bin.NETFramework\Microsoft.Data.Edm.dll" в "Бин\Microsoft.Data.Edm.dll".

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

Ответ 6

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

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

Разрешение удаляет этот путь из IIS, процесс reset IIS и снова создает виртуальный путь из VS.

Ответ 7

нашел это !!
внутри вашего файла app.config измените версию bindingredirect.
Сделайте так, чтобы элемент bindingredirect ссылался на версию, на которую жалуется исключение, и исключение исчезнет.
объяснение:
Возможно, файл app.config и эталонная сборка проекта вышли из синхронизации, что привело к ошибке.

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

Ответ 8

Для меня мне пришлось удалить пакет WindowsAzure.MobileServices.Backend.Entity NuGet, который удаляет множество сборок, включая Microsoft.Data.Edm. А потом я просто переустановил его и чудом, он сработает!

Это было в моем проекте Azure Mobile Services WebApi, поэтому ему нужно было работать, и, к счастью, теперь это происходит.

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

Ответ 9

Это было успешно разрешено для меня закрытием и повторным открытием Visual Studio.

Ответ 10

1) Превратить подробность сборки в подробный. 2) Найти файл Microsoft.Data.Edm и сравнить версии других сборок, используемых в проекте. 3) Обновить до версии, использованной в других сборках.

Решил мою проблему

Ответ 11

Я получил эту ошибку после того, как я удалил папку "пакеты" и переустановил пакеты. Мне удалось устранить ошибку, запустив "Чистое решение" и "Перестроить решение".