Почему мне иногда нужно добавить пакет nuget к реальному проекту, который выполняется - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть решение с большим количеством проектов, некоторые из них .Net Framework 4.7.2, некоторые из них .Net Standard 2.0.

Конечно, мы используем большое количество пакетов Nuget, иобычно все работает нормально.

Иногда, однако, я добавляю пакет Nuget в проект, и решение будет работать нормально.Однако, когда я запускаю тесты или само приложение, я получаю исключение System.IO.FileNotFound во время выполнения, заявляя, что не может найти dll для пакета nuget.

Когда я также добавляю пакет nuget втестовый проект или проект, содержащий приложение, все работает нормально.

Например, только что я конвертировал проект из .Net Framework в .Net Standard, поэтому я удалил Irony.Interpreter и заменил его наIrony.Interpreter.NetCore.

Однако все мои тесты неожиданно начали проваливаться, утверждая, что они не смогли найти пакет nuget.Когда я добавил Irony.Interpreter.NetCore в тестовый проект, все тесты прошли.Обратите внимание, что тестовым проектом является .Net Framework, и на него ранее никогда не ссылались Irony.Interpreter.

Кто-нибудь знает, почему это может происходить?

1 Ответ

0 голосов
/ 31 декабря 2018

Компилятор только проверяет существование типов (например, классов, структур и перечислений) , используемых в вашем коде .Если вы не позвоните, компилятор не будет жаловаться.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...