Есть много похожих вопросов о проблемах со ссылкой на библиотеку классов .NET Standard из проекта .NET Framework, в которой зависимость пакета NuGet в библиотеке netstandard не передается в приложение netframework, и во время выполнения возникает ошибка Could not load file or assembly
:
Существует множество источников, таких как приведенный ниже, которые указывают, что это можно решить, добавив отсутствующую зависимость в проект netframework:
Это, однако, неблагоприятно, потому что я не хочу, чтобы проекты имели прямые ссылки, которые им не нужны; зависимости должны течь естественно, поэтому будущие добавленные/удаленные зависимости просто работают.
Другие источники указывают, что это можно решить, добавив <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
и <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
в файл проекта netframework:
- qaru.site/info/16686277/...
- qaru.site/info/14209870/...
- https://www.hanselman.com/blog/ReferencingNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx
Я протестировал оба вышеупомянутых исправления с проектами, которые находятся в одном решении Visual Studio и имели успех, но я предпочитаю второй подход, потому что это решение "установи и забудь".
Проблема, которую я обнаружил, заключается в том, что я пытаюсь ссылаться на библиотеку классов netstandard из проекта netframework в другом решении VS и использую <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
и <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
в последнем проекте, В моем конкретном случае у меня есть исполняемый проект .NET Framework, который ссылается на библиотеку классов .NET Framework в том же решении, и эта библиотека классов ссылается на библиотеку классов .NET Standard в другом решении.
Я создал MCVE на GitHub, который демонстрирует это поведение. Я использую VS 2017 v15.9.4.
Помимо добавления пакетов непосредственно в проект netframework, есть ли способ заставить это работать?
(Примечание: здесь звучит похоже на проблему, но я не использую "щелкнуть один раз": qaru.site/info/2444845/...)