Зависимости не протекают между зависимыми проектами, вызывая System.IO.FileNotFoundException
Допустим, у моего решения есть 2 проекта:
- Первый называется "MainProject" (проект .NETStandard 2.0).
- Второй называется "MainProjectTests" (тестовый проект Nunit) с некоторыми модульными тестами для каждого класса в "Основной проект".
Первый проект (MainProject) имеет зависимость NuGet, называемую "зависимость X". Очевидно, что проект "MainProjectTests" имеет ссылку на "Основной проект".
Итак, когда тестовый бегун запускает тест "MainProjectTests", который вызывает методы из "MainProject" с помощью "dependencyX", я получаю исключение System.IO.FileNotFoundException
:
System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'dependencyX, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null или один его зависимостей.
Почему я получаю это исключение? Когда я добавляю "dependencyX" в "MainProjectTests", все работает нормально, но мне кажется, что это не хорошая практика... Как его решить?
Я использую предварительный просмотр Visual Studio для Mac Community 7.2 (7.2 build 583)
Спасибо за помощь.
EDIT:
Пробовал поставить параметры:
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
в проекте Nunit, но получая тот же результат.
Ответы
Ответ 1
Это, кажется, известная ошибка в библиотеках .NET Standard (и, возможно, особенно в сочетании с NUnit). Я уже подал здесь отчет об ошибке который, похоже, подтверждает, что это не предполагаемое поведение. Несмотря на то, что более полугода не было достигнуто никакого прогресса.
Возможно, нужно указать ошибку в репозитории NUnit после подтверждения этого только при использовании NUnit.
В течение времени вам нужно будет ссылаться на все библиотеки, используемые в проекте .NET Standard, также во всех проектах, ссылающихся на стандартную .net, как вы делаете прямо сейчас.
Ответ 2
Это ошибка, сообщенная Microsoft несколько раз, и кажется, что они этого не сделали, посмотрите на это Visual Studio не копирует ссылочные сборки через эталонная иерархия
С другой стороны, по крайней мере, с пакетами Nuget у вас есть простой способ (добавить один и тот же пакет к нескольким проектам в одном решении), используя диспетчер пакетов для решения, как вы можете видеть здесь Nuget Package Manager.
![менеджер решений]()
![введите описание изображения здесь]()