Ответ 1
Исправлено, обновив System.Net.Http до 4.3.1
Я портирую Net Framework 4 DLL на Net Core. При портировании моего проекта модульных тестов я получаю исключение при выполнении некоторых конкретных тестов (не всех).
System.IO.FileLoadException: не удалось загрузить файл или сборку 'System.Net.Http, версия = 4.1.1.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a' или одна из ее зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
Это project.json для моей библиотеки
{
"version": "1.0.0-*",
"dependencies": {
"log4net": "2.0.7",
"NETStandard.Library": "1.6.1",
"Newtonsoft.Json": "9.0.1",
"StackExchange.Redis": "1.2.1"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
И это Packages.config для проекта модульных тестов
<packages>
<package id="Castle.Core" version="4.0.0" targetFramework="net462" />
<package id="log4net" version="2.0.7" targetFramework="net462" />
<package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" />
<package id="Moq" version="4.7.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
<package id="StackExchange.Redis" version="1.2.1" targetFramework="net462" />
<package id="System.Diagnostics.DiagnosticSource" version="4.0.0" targetFramework="net462" />
<package id="System.IO" version="4.1.0" targetFramework="net462" />
<package id="System.IO.FileSystem" version="4.0.1" targetFramework="net462" />
<package id="System.IO.FileSystem.Primitives" version="4.0.1" targetFramework="net462" />
<package id="System.IO.FileSystem.Watcher" version="4.0.0" targetFramework="net462" />
<package id="System.Linq" version="4.1.0" targetFramework="net462" />
<package id="System.Net.Http" version="4.1.1" targetFramework="net462" />
<package id="System.Net.NameResolution" version="4.0.0" targetFramework="net462" />
<package id="System.Runtime" version="4.1.0" targetFramework="net462" />
<package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net462" />
<package id="System.Security.Cryptography.Algorithms" version="4.2.0" targetFramework="net462" />
<package id="System.Security.Cryptography.Encoding" version="4.0.0" targetFramework="net462" />
<package id="System.Security.Cryptography.Primitives" version="4.0.0" targetFramework="net462" />
<package id="System.Security.Cryptography.X509Certificates" version="4.1.0" targetFramework="net462" />
<package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="net462" />
<package id="System.Threading.Thread" version="4.0.0" targetFramework="net462" />
</packages>
Исправлено, обновив System.Net.Http до 4.3.1
У меня возникла проблема, и я понял, что это связано с тем, что у меня было две разные ссылки. одна ссылка была из моей библиотеки проектов, а вторая - зависимость .Net Standard library и, следовательно, пакет Nuget. Шаги для решения были следующими:
System.Net.Http
(project = > add reference = > удалить ссылку).Update-Package –reinstall System.Net.Http
, чтобы вернуть ссылку.Теперь он работает снова.:)
Моя проблема заключалась в том, что у моей службы была ссылка на сборку, которая ссылалась на более новую версию System.Net.Http. Я решил проблему, обновив System.Net.Http в сервисе.
У меня была эта проблема, в то время как у меня было 10 проектов, зависящих друг от друга. Я исправил это, добавив версию, которую он попросил, в одном из проектов, от которого зависело. Он не нужен для компиляции, но кажется, что добавив его, исправил версию в других проектах при восстановлении. Так было:
Не удалось загрузить файл или сборку "System.Net.Http, Version = 4.1.1.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или одна из ее зависимостей. Система не может найти указанный файл.
Тогда:
Не удалось загрузить файл или сборку "System.Net.Http, Version = 4.1.1.1, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или одна из ее зависимостей. Система не может найти указанный файл.
Итак, я добавил "System.Net.Http": "4.1.1", в одном проекте..
Это фактически устранило проблему, когда она восстановила 8 проектов.
Я согласен с Джин. Удалите ссылку на сборку, а затем добавьте новую ссылку через Nuget! Фактическая версия System.Net.Http не имеет значения. После удаления ссылки на сборку все работает нормально, версия 4.3.2
Лучший и самый простой способ решить эту проблему - с помощью перенаправления привязки.
Просто укажите oldVersion как 0.0.0.0-5.0.0.0, а newVersion как 4.1.1.0
Где, например, 4.1.1.0 - это ваша версия.
А теперь решение для младшего программиста... дважды проверьте, что вы делаете обновления, предложенные Джавеном и Джином в Nuget Package Manager, также в нужных местах. Помните, что у вас может быть решение с вашим проектом и тестовым проектом, поэтому дважды проверьте, чтобы обновить оба набора ссылок.
Возможно, оффтоп, но моя проблема заключалась в том, что Azure не поддерживал последнюю версию .NET Framework.
Перейдите в app.config и удалите все строки, которые ссылаются на System.Net.Http.