Приложение NetFramework, ссылающееся на библиотеку NetFramework в том же решении, ссылающееся на библиотеку NetStandard в другом решении: не удалось загрузить файл или сборку - PullRequest
0 голосов
/ 08 февраля 2019

Существует много похожих вопросов о проблемах со ссылкой на библиотеку классов .NET Standard из проекта .NET Framework, в которой зависимость пакета NuGet в библиотеке netstandard не передается в приложение netframework, а ошибка Could not load file or assembly возникает во время выполнения.:

enter image description here

Существует множество источников, например, приведенный ниже, которые указывают, что это можно решить, добавив отсутствующую зависимость в проекте netframework:

Однако это неблагоприятно, потому что я не хочу, чтобы проекты имели прямые ссылки, которые им не нужны;зависимости должны течь естественным образом, поэтому будущие добавленные / удаленные зависимости просто работают.

Другие источники указывают, что это можно решить, добавив <RestoreProjectStyle>PackageReference</RestoreProjectStyle> и <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> в файл проекта netframework:

Я протестировал оба вышеуказанных исправления с проектами , которые находятся в пределахТо же решение Visual Studio и имело успех, но я предпочитаю второй подход, потому что это решение «поставь и забудь».

Проблема, которую я обнаружил, заключается в том, что я пытаюсь сослаться на библиотеку классов нестандартных классов из проекта netframework в другом решении VS , и я использую подходы <RestoreProjectStyle>PackageReference</RestoreProjectStyle> и <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> впоследний проект.В моем конкретном случае у меня есть исполняемый проект .NET Framework, который ссылается на библиотеку классов .NET Framework в том же решении, и эта библиотека классов ссылается на библиотеку классов .NET Standard в другом решении.

создал MCVE на GitHub, который демонстрирует это поведение .Я использую VS 2017 v15.9.4.

Кроме добавления пакетов непосредственно в проект netframework, есть ли способ заставить это работать?


(Примечание: этоЗдесь звучит похоже на проблему, но я не использую «щелкнуть один раз»: https://stackoverflow.com/a/47839628/2704659)

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете заставить его работать без каких-либо изменений кода, если добавите что-то подобное в ваш app.config (адаптировать версии и пути к вашему контексту)

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly> 
            <assemblyIdentity name="Microsoft.Win32.Registry" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /><codeBase version="4.1.1.0"
                href="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.win32.registry\4.5.0\lib\net461\Microsoft.Win32.Registry.dll"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...