如何将.NET Framework服务引用迁移至.NET Standard并保留空构造函数
为.NET Standard中WCF服务引用生成的客户端添加空构造函数及重载构造函数
以下是几种通用解决方案:
1. 用部分类扩展(推荐)
生成的TasksClient是partial类,你可以在项目中新建一个同名的部分类文件,手动补充需要的构造函数,后续更新服务引用时不会覆盖这些自定义代码:
// 确保命名空间和自动生成的TasksClient完全一致 namespace Tasks { public partial class TasksClient { // 空构造函数,默认读取配置文件中名为"Tasks"的端点 public TasksClient() : base("Tasks") { } // 根据端点配置名称构造 public TasksClient(string endpointConfigurationName) : base(endpointConfigurationName) { } // 根据端点配置名称和远程地址构造 public TasksClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress) { } } }
注意:base("Tasks")中的字符串要对应你配置文件里的端点名称,和旧代码的默认端点保持一致。
2. 调整服务引用生成设置
如果希望自动生成这些构造函数,可以在添加服务引用时修改设置:
- 在Visual Studio中打开「添加服务引用」对话框,点击「高级」按钮
- 在「高级设置」里勾选「生成配置文件设置」,工具会自动读取配置并生成包含配置相关的构造函数
- 若使用命令行工具
svcutil.exe,添加/config:app.config参数,让工具生成关联配置的构造函数
3. 直接修改生成代码(不推荐)
直接编辑自动生成的TasksClient代码,手动添加构造函数。但每次更新服务引用时,修改的内容会被覆盖,需要重复操作,因此不建议采用。
内容的提问来源于stack exchange,提问作者geoff swartz
相关产品推荐
相关产品推荐

