Мне удалось воспроизвести проблему. Я создал две новые .net standard 2.0 projects
библиотеки классов.
На первом я добавил EF Core
. На втором этапе я добавил Google protobuf
.
Обе версии, о которых вы упомянули.
Для ядра EF я создал новый класс, который просто наследуется от DbContext
. Для protobuff я просто создал пустой класс. Я не знаком с тем, как его использовать. Я все еще смог повторить проблему.
Я создал console app .net framework 4.7.2
, ссылающийся на два вышеупомянутых проекта.
Я создал два класса в Консольном приложении и получил error System.IO.FileLoadException: 'Could not load file or assembly...
Как я это решил.
Я пошел на все три проекта и добавил эту строку в csproj
.
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
в группу свойств.
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
После этого я снова запустился и ошибки не появляется.
Пожалуйста, дайте мне знать ваши результаты. Даже если мое решение не работает для вас. Я считаю, что это хорошая практика.
Цитировать Орен.
"Использование. NET Стандарт требует, чтобы вы использовали PackageReference, чтобы устранить боль, связанную с" большим количеством пакетов ". ", А также правильно обрабатывать переходные зависимости. Хотя вы можете использовать. NET Стандарт без PackageReference, я бы не рекомендовал это."
Также Хансельман упоминает: "Проекты" full "Framework используя более старый формат .csproj, и по умолчанию они используют package.config для управления зависимостями. Более новые проекты могут ссылаться на пакеты как первоклассные ссылки. Поэтому мы должны указать ВСЕМ проектам в этом решении управлять и восстанавливать их пакеты как "PackageReferences . ""
Вот мои источники.
https://www.hanselman.com/blog/ReferencingNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx
https://oren.codes/2017/04/23/using-xamarin-forms-with-net-standard-vs-2017-edition/
Обновлен в соответствии с дополнительной информацией Соммена из выпусков github Престижность до Соммен за предоставление этой дополнительной информации. Также слава Immo Landwerth за предоставление этой информации на GitHub. Я предоставлю так же, как Обходные пути, которые уже существуют на странице Github только для полноты, как рекомендовано OP jinjinov.
Взято из Проблемы с GitHub
Временные решения
Обычные. Net Каркасные проекты
- Включение автоматизация c Переадресация связывания в приложении root. Net Framework
- Убедитесь, что ваш проект приложения root не использует
packages.config
, но использует PackageReference
для пакетов NuGet. Если вы в настоящее время нет packages.config
, просто добавьте, если у вас в данный момент нет ни одного package.config, просто добавьте <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
Если у вас есть packages.config
, преобразуйте содержимое в ссылки на пакеты в файле проекта. Синтаксис выглядит следующим образом: <PackageReference Include="package-id" Version="package-version" />
ASP. NET веб-приложения и веб-сайты
- веб-приложения и веб-сайты не поддерживают автоматизацию c генерация перенаправления привязки. Чтобы разрешить конфликты привязки, вам нужно дважды щелкнуть предупреждение в списке ошибок, и Visual Studio добавит их в ваш файл web.config
- В проектах веб-приложений вы должны включить PackageReference, как упомянуто выше. На веб-сайтах нельзя использовать PackageReference, поскольку файл проекта отсутствует. В этом случае вам необходимо установить все пакеты NuGet на свой веб-сайт, от которых зависят любые прямые или косвенные ссылки на проекты.
Модульные тесты проектов
По умолчанию связывание перенаправляет не добавляются в проекты библиотеки классов. Это проблематично c для проектов модульного тестирования, так как они в основном похожи на приложения. Таким образом, в дополнение к тому, что описано в automati c перенаправлениях привязки , вам также необходимо указать GenerateBindingRedirectsOutputType
:
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
Также есть раздел для обсуждения, который предоставляет больше информации -> обсуждение GitHub