web-dev-qa-db-fra.com

System.ServiceModel introuvable dans le projet .NET Core

J'ai un projet .NET Core xUnit. J'essaie d'appeler un service WCF à partir de celui-ci mais j'obtiens l'exception suivante:

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.

Il fonctionne avec un projet Framework 4.7 avec le même package Nuget System.ServiceModel.Http.4.3.0.

26
BanksySan

Microsoft a mis à disposition les assemblys appropriés en tant que packages sur NuGet.

System.ServiceModel.Primitives est le package de base. ajoutez les autres si nécessaire à votre projet.

enter image description here

6
silkfire

Si vous utilisez .NET Standard 2.0 (c’est ce que j’ai testé), vous pouvez installer des paquets compatibles NuGet.

Le modèle de service de base est disponible dans System.ServiceModel.Primitives (actuellement v4.4.0).

Si nécessaire, installez System.ServiceModel.Http ainsi que.

55
Arghya C

Le fournisseur de référence du service Web Microsoft WCF encapsule SvcUtil.exe et génère un projet .NET Standard à partir de votre point de terminaison. Recherchez dans le fichier de projet et vous verrez les références ServiceModel qui fonctionneront pour vous.

<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>

Lorsque j'ai eu besoin de faire cela, j'ai pu utiliser la bibliothèque de classes générée dans mon projet .NET Core.

12
Boggin