Я использую Visual Studio 2017 и пытаюсь создать библиотеку .Net Standard 1.5 и использовать ее в тестовом проекте nUnit .Net 4.6.2.
Я получаю следующую ошибку ...
Не удалось загрузить файл или сборку System.Runtime, Version = 4.1.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a или одну из ее зависимостей. Система не может найти указанный файл.
Я пробовал следующее:
- Ссылка на библиотеку Std в качестве ссылки на проект. Ошибка: выдает предыдущую ошибку.
- Создайте пакет NuGet для моей библиотеки Std и укажите на него ссылку. Ошибка: тип System.String, ожидается System.String. Это связано с тем, что на System.Runtime ссылается проект, и в нем есть определения для всех стандартных типов.
- Ссылка на NuGet pkg NetStandard.Library. Ошибка: выведите ту же ошибку, что и # («Тип - System.String, ожидает System.String»). ПРИМЕЧАНИЕ. Прежде чем я сделал это, я удалил ВСЕ пакеты NuGet из проекта, а затем добавил только пакеты nUnit и NetStandard.Library (которые установили 45 других пакетов).
Это ошибка? Есть ли обходной путь? Любая помощь приветствуется.
[MSTest][Discovery] Failed to discover tests from assembly Reason:Could not load file or assembly 'System.Reflection, Version=4.1.1.0 etc
Эта проблема возникает, когда вы ссылаетесь на проект .NET Standard из проекта .NET 4.x: ни одна из ссылок на пакет nuget проекта .NET Standard не вводится в качестве зависимостей.
Чтобы исправить это, вам необходимо убедиться, что ваш файл .NET 4.x csproj указывает на текущие инструменты сборки (не менее 14):
Приведенное ниже больше не нужно, оно было исправлено около VS 15.3:
Был известная ошибка VS2017 , особенно в NuGet 4.0.
Чтобы обойти ошибку, вам нужно открыть файл .csproj для вашего проекта .NET 4.x и добавить этот фрагмент:
NuGet 4.x приносит с собой «ссылку на пакет» - больше никаких пакетов.config, - но старый конвейер 4.x не был полностью обновлен на момент запуска VS2017. Приведенный выше фрагмент, кажется, «разбудит» систему сборки для правильного включения ссылок на пакеты из зависимостей.
источник
Я недавно столкнулся с этой проблемой, и я пробовал много вещей, упомянутых в этой и других ветках. Я добавил ссылку на
"System.Runtime"
пакет для диспетчера пакетов nuget, исправил повторные привязкиapp.config
и убедился, чтоapp.config
иpackage.config
для сборки используется та же версия. Однако проблема не исчезла.Наконец-то снял
<dependentAssembly>
бирку для сборки и проблема исчезла. Итак, попробуйте удалить следующее в вашемapp.config
.Изменить: после того, как я обновил .NET framework до версии 4.7.2, проблема снова возникла. Я попробовал описанный выше трюк, но он не сработал. Потратив много часов, я понял, что проблема возникает из-за старой
System.Linq
ссылки в app.config. Поэтому удалите или обновите все ссылки Linq, чтобы избавиться от этой проблемы.источник
xunit System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.2.0
после обновления моих проектов до 4.7.2Поверьте, я не шучу. Удалите все зависимости System.Runtime из вашего app.config, и он начнет работать.
источник
Я решил эту ошибку, сославшись на NetStandard.Library и следующий файл app.config в NUnit-Project.
редактировать
Если что - нибудь другое , чем
System.Runtime
,System.Reflection
илиSystem.Runtime.InteropServices
отсутствует (напримерSystem.Linq
), а затем просто добавить новыйdependentAssembly
узел.Редактировать 2
В новых версиях Visual Studio (я думаю, 2017 15.8) возможно, что Studio создаст файл app.config. Просто установите флажок Автоматически создавать перенаправления привязки в Project-Properties - Application .
Редактировать 3
Автоматическое создание переадресации привязки плохо работает с библиотеками классов .NET. Добавление следующих строк в файлы csproj решает эту проблему, и будет создан рабочий файл .config для Classlibary.
источник
<dependentAssembly>
узлы для System.Runtime ..Я исправил это, удалив
app.config
с помощьюзаписи.
app.config
был автоматически добавлен (но не нужен) во время рефакторингаисточник
Эта проблема возникает, когда вы ссылаетесь на проект .NET Standard из проекта .NET 4.x: ни одна из ссылок на пакет nuget проекта .NET Standard не вводится в качестве зависимостей.
Я решил, добавив
4.3
пакеты System.Runtime и NETStandard.Library и !! important !! Я использую инструмент рефакторинга для поиска версии System.Runtime.dll, это4.1.1.1
не так,4.3
а затем добавляю bindingRedirect в .configисточник
Я знаю, что слишком поздно, но пока нет успешного ответа. Я нашел ответ на другом сайте. Я исправил проблему при удалении зависимости сборки System.Runtime. Я удалил это.
<dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0"/> </dependentAssembly>
Наилучшие пожелания
источник
У меня была проблема с этим в проекте NUnit 2.6.4, ориентированном на dotnet framework 4.6.2. Я столкнулся с этой
System.Runtime FileNotFound
ошибкой, пытаясь использовать Humanizer .Я исправил свою ошибку, установив NetStandard.Library в свой проект модульного тестирования.
источник
Мы обнаружили, что
AutoGenerateBindingRedirects
может быть причиной этой проблемы.Замечено: один и тот же проект нацелен
net45
иnetstandard1.5
был успешно построен на одной машине и не был построен на другой. На машинах были установлены разные версии фреймворка (4.6.1 - успешно и 4.7.1 - неудачно). После обновления фреймворка на первой машине до версии 4.7.1 сборка также не удалась.Auto binding redirects
это особенность.net 4.5.1
. Всякий раз, когда nuget обнаруживает, что проект транзитивно ссылается на разные версии одной и той же сборки, он автоматически создает файл конфигурации в выходном каталоге, перенаправляя все версии на самую высокую требуемую версию.В нашем случае это была перепривязка всех версий
System.Runtime
кVersion=4.1.0.0
..net 4.7.1
корабли с4.3.0.0
версией среды выполнения. Таким образом, привязка перенаправления соответствовала версии, которой не было в современной версии фреймворка.Проблема была исправлена с отключением автоматического перенаправления привязки для цели 4.5 и оставлением ее только для ядра .net.
источник
Загляните в это прямо сейчас в проекте модульного теста после добавления MsTest V2 через Nuget. Переименование app.config (столь эффективное его удаление) помогло мне.
Прочитав все вышеперечисленные сообщения, я все еще не понимаю, почему, извините!
источник
У этой проблемы много причин ... в моем случае проблема заключалась в том, что в моем web.config тег добавлял сборку System.Runtime:
но один пакет также добавил ту же сборку в зависимости от другой версии:
удаление тега «добавить сборку» из моего файла web.config решило проблему.
источник
В app.config или web.config добавьте
источник
Похоже, проблема возникает из-за конфликта версий между packages.config и app.config. В app.config у вас есть перенаправления привязки сборки, автоматически генерируемые функцией AutoGenerateBindingRedirects. Если этот параметр включен каждый раз, когда вы загружаете пакет nuget, он будет, помимо создания новой записи в packages.config, добавлять эту информацию о перенаправлении привязки в app.config. Какова цель этого, объясняется здесь: Перенаправление привязки сборки: как и почему?
Там вы можете прочитать, что написал пользователь @Evk:
Итак, БЫСТРОЕ ИСПРАВЛЕНИЕ: удалите все записи в app.config.
В моем случае, просто благодаря этому программа начала работать, но она, вероятно, будет работать только в том случае, если у вас нет конфликтов версий одной и той же сборки во время выполнения.
Если у вас есть такой конфликт, вы должны исправить эти номера версий в app.config, чтобы они соответствовали фактически используемым версиям сборок, но ручной процесс болезнен, поэтому я предлагаю автоматически сгенерировать их снова, открыв Консоль диспетчера пакетов и выполнить переустановку пакетов, набрав
Update-Package -reinstall
источник
Я несколько раз попадал в такую ситуацию с моим веб-сайтом .NET 4.6.1. Я создавал проблему каждый раз, когда добавлял ссылку на отдельный проект .NET Core. После сборки Visual Studio правильно предупредила меня, что такие перекрестные ссылки недействительны, и я быстро удалил ссылку на проект. После этого проект строился нормально, но ошибка System.Runtime появлялась при доступе к веб-сайту и отказывалась уходить.
Исправление каждый раз было неубедительным, но эффективным: я удалил каталог проекта и повторно загрузил его из системы контроля версий. Несмотря на то, что не было разницы между «до» и «после», я смог построить проект и получить доступ к странице без жалоб.
источник
Я решил проблему, удалив пакет Nuget
System.Runtime
и переустановив его.источник
У меня был проект с той же проблемой, я решил ее, изменив версию ядра dotnet с 2.2 на 2.0. Если проблема осталась, попробуйте это решение.
источник
Перед запуском модульных тестов просто удалите теги времени выполнения из файла app.config. Проблема будет решена.
источник
У меня была аналогичная проблема в VS 2017 15.45 - я обнаружил, когда проверил, что, несмотря на то, что проект скомпилирован и запустил, он обнаружил исключение system.IO.FileNotFoundException в отношении System.Runtime, когда я попытался получить доступ к объектам TPL Dataflow.
Когда я проверил проекты в решении, в одном из них (верхнем) отсутствовал пакет System.Runtime, используемый базовыми проектами. Как только я установил его из Nuget, все заработало правильно.
источник
Я перепробовал все решения здесь, но безрезультатно. В конце концов, я решил это, открыв новый файл csproj и вручную добавил следующий раздел:
источник
Я использую ASP.Net CORE 2.1, и у меня возникла эта ошибка, когда я запустил, выбрав .csproj из списка примерно 40 в большом репо. Когда я открыл файл csproj по отдельности, ошибка была устранена. Что-то в том, как запускалась программа, было другое при открытии csproj.
источник
Я решил эту проблему, переключившись с .NET 4.7.2 => .NET 4.5.2, а затем вернувшись к 472. Поэтому в некоторых случаях эта ошибка возникает из-за того, что диспетчер пакетов не может разрешить зависимости.
источник
Если он работал раньше, то должно быть изменение App.config. У меня сработало Undo App.config.
источник
Я также прошел через эту ошибку и рассказываю, как я избавился от нее.
В моем случае строка ниже существовала в web.config проекта webapi, но в файле package.config не было ссылки на пакет.
Код в Web.config в проекте Webapi
Код, который я добавил в файл packages.config в проекте веб-API Перед закрытием элемента.
В моем случае сработало другое решение:
Другой вариант Sure, который может сработать, если вы скопировали проект в другую компьютерную систему, которая может иметь немного разные версии пакетов, поэтому вы можете попробовать изменить версию сборки на версию, указанную по ошибке на веб-сайте / webapi при ее запуске. Как и в этом случае, как указано в вопросе, необходимая версия - '4.1.0.0', поэтому просто попробуйте изменить текущую версию в web.config на версию, показанную с ошибкой, как показано ниже
Ошибка:
источник
У меня возникла эта ошибка при создании функции Azure (с триггером очереди, если это имеет значение)
Проблема в этом случае заключалась в том, что для параметра
AzureFunctionsVersion
было установлено значение v2 вместо v3. Чтобы обновить его через VS2019, выгрузите проект и отредактируйте файл csproj. ВнутриPropertyGroup
узла добавьте / отредактируйте следующее:источник