.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.
同じNugetパッケージSystem.ServiceModel.Http.4.3.0
を使用するFramework 4.7プロジェクトで動作します。
.NET Standard 2.0
(私がテストしたもの)を使用している場合、互換性のあるNuGet
パッケージをインストールできます。
基本サービスモデルはSystem.ServiceModel.Primitives
(現在v4.4.0)で利用できます。
必要に応じて、System.ServiceModel.Http
もインストールします。
Microsoft WCF Webサービス参照プロバイダー は、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プロジェクトで使用することができました。