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