System.ServiceModel не найден в проекте .NET Core

У меня есть проект .NET Core xUnit. Я пытаюсь вызвать из него службу WCF, но получаю следующее исключение:

System.InvalidOperationException occurred
  HResult=0x80131509
  Message=An error occurred while loading attribute 'ServiceContractAttribute' on type 'IMyContract'.  Please see InnerException for more details.

Inner Exception 1:
FileNotFoundException: Could not load file or assembly 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.

Он работает с проектом Framework 4.7 с тем же пакетом Nuget System.ServiceModel.Http.4.3.0.

Ответ 1

Microsoft уже сделала доступными соответствующие сборки в виде пакетов на NuGet.

System.ServiceModel.Primitives - базовый пакет; добавьте другие, если это необходимо, в ваш проект.

enter image description here

Ответ 2

Если вы используете .NET Standard 2.0 (что я тестировал), вы можете установить совместимые пакеты NuGet.

Базовая модель обслуживания доступна в System.ServiceModel.Primitives (в настоящее время v4.4.0).

При необходимости установите System.ServiceModel.Http.

Ответ 3

Поставщик ссылок на веб-службы Microsoft WCF упаковывает файл SvcUtil.exe и создает проект .NET Standard из вашей конечной точки. Посмотрите в файле проекта, и вы увидите ссылки ServiceModel, которые будут работать для вас.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="System.ServiceModel.Duplex" Version="4.3.0" />
    <PackageReference Include="System.ServiceModel.Http" Version="4.3.0" />
    <PackageReference Include="System.ServiceModel.NetTcp" Version="4.3.0" />
    <PackageReference Include="System.ServiceModel.Security" Version="4.3.0" />
    <PackageReference Include="System.Xml.XmlSerializer" Version="4.3.0" />
  </ItemGroup>
</Project>

Когда мне нужно было это сделать, я смог использовать сгенерированную библиотеку классов в своем проекте .NET Core.