WCF客户端dotnet build报MSB3245、CS0246错误如何解决
修复步骤
1. 修正csproj的程序集引用配置
.NET 5属于.NET Core产品线,不再自带传统.NET Framework的System、System.ServiceModel程序集,手动添加这些引用会触发找不到程序集的警告。请修改你的TestApp.csproj:
- 移除以下错误的程序集引用配置:
<ItemGroup> <Reference Include="System" /> <Reference Include="System.ServiceModel" /> </ItemGroup>
- 新增WCF客户端所需的NuGet包引用,在csproj中添加如下配置:
<ItemGroup> <PackageReference Include="System.ServiceModel.Http" Version="4.10.2" /> </ItemGroup>
版本可根据你的实际需求选择兼容.NET 5的版本。
2. 将生成的服务契约文件加入编译列表
你开启了<EnableDefaultCompileItems>false</EnableDefaultCompileItems>,意味着所有cs文件需要手动声明才会参与编译,而你目前只声明了TestApp.cs,svcutil生成的ServerServiceimpl.cs没有加入编译,所以编译器找不到ServerServiceClient类。请修改Compile对应的ItemGroup:
<ItemGroup> <Compile Include="TestApp.cs" /> <Compile Include="ServerServiceimpl.cs" /> </ItemGroup>
3. 命名空间适配(可选,按需调整)
从你贴出的代码来看,svcutil生成的ServerServiceClient类没有显式声明命名空间,属于全局命名空间。如果你的TestApp.cs中无法访问该类,可以在TestApp.cs的using区域添加对应命名空间引用即可。
4. 验证修复
修改完成后,依次执行如下命令验证:
dotnet restore dotnet build
如果仍有运行时连接问题,再检查app.config中的endpoint地址、绑定配置是否和服务端一致即可。
内容的提问来源于stack exchange,提问作者keides2
相关产品推荐
相关产品推荐

