Ответ 1
Я решил эту проблему, установив пакет Nuget:
Install-Package Microsoft.Windows.Compatibility
Я использовал ASP.net Core 2.2, но, возможно, работает и для 2.0v
Я работаю над переносом "основного веб-приложения ASP.NET", который компилируется в .NET Framework 4.6.1 (т.е. полная инфраструктура) для компиляции на .NET Core 2.0. У меня есть некоторые зависимости, которые по-прежнему требуют полной структуры, но с .NET 2.0 я понимаю, что теперь я могу ссылаться на полные сборки сборок из компилируемого приложения .NET Core 2.0.
Когда я пытаюсь запустить проект, я получаю следующую ошибку:
Не удалось загрузить файл или сборку 'System.ServiceModel, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'. Система не может найти указанный файл.
Я просмотрел все пакеты NuGet и проекты, на которые я ссылаюсь, и ни один из них не ссылается на System.ServiceModel.Web, но я не уверен, что это так же, как System.ServiceModel. Когда я открываю файл projectname.deps.json, расположенный в папке bin, я вижу ссылку на System.ServiceModel.Web, но не ссылается на System.ServiceModel в разделе "Microsoft.NETCore.App/2.0.0", который содержит следующая строка: "ref/netcoreapp2.0/System.ServiceModel.Web.dll": {},
Я также ткнул в папку "C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0", и я вижу файл System.ServiceModel.Web.dll.
Я не выполняю работу WCF, и, как я уже сказал, я просмотрел все зависимости библиотек, которые я использую, и ни один из них не ссылается на System.ServiceModel.
Кто-нибудь еще сталкивается с этой проблемой? Я ценю любые и все идеи, которые могут быть у всех.
Я решил эту проблему, установив пакет Nuget:
Install-Package Microsoft.Windows.Compatibility
Я использовал ASP.net Core 2.2, но, возможно, работает и для 2.0v
В Asp.Net Core, когда поставщик связанных веб-служб Microsoft WCF используется в подключенных службах, генератор кода автоматически включает System.ServiceModel.Duplex, System.ServiceModel.Http, System.ServiceModel.NetTcp, System.ServiceModel.Security'assemblies.,
<PackageReference Include="System.ServiceModel.Duplex" Version="4.4.*" />
<PackageReference Include="System.ServiceModel.Http" Version="4.4.*" />
<PackageReference Include="System.ServiceModel.NetTcp" Version="4.4.*" />
<PackageReference Include="System.ServiceModel.Security" Version="4.4.*" />
В вашем случае System.ServiceModel.Primitives необходимо добавить также. Сборка System.ServiceModel.Primitives включает в себя System.ServiceModel.dll
System.ServiceModel, версия = 4.0.0.0 больше не используется.
см. также: https://github.com/dotnet/standard/issues/575#issuecomment-380479584.