VS2017创建Service Fabric应用时遇无法从密封类型StatefulService派生错误
我之前也碰到过这个坑,大概率是Service Fabric模板、SDK和.NET Core版本的兼容问题,给你几个实用的解决方向:
更新Service Fabric SDK及Runtime
VS2017对Service Fabric的支持依赖特定版本的SDK,打开Visual Studio的「工具>扩展和更新」,找到Service Fabric相关扩展,更新到适配VS2017的最新稳定版。同时要确保本地安装的Service Fabric Runtime和SDK版本匹配,版本不兼容很容易触发这类奇怪的编译错误。手动修正生成的服务类继承关系
如果更新SDK后问题还存在,大概率是模板生成代码时犯了错。打开你的Stateful Service类文件,默认生成的代码可能继承了StatefulService——但在.NET Core 2.0的Service Fabric实现里,这个类是密封(sealed)的,根本没法继承。你需要改成继承StatefulServiceBase,示例代码如下:
错误的初始代码:public class MyStatefulService : StatefulService { public MyStatefulService(StatefulServiceContext context) : base(context) { } }修改后:
public class MyStatefulService : StatefulServiceBase { public MyStatefulService(StatefulServiceContext context) : base(context) { } // 后续的业务逻辑可以正常保留 }确认.NET Core 2.0环境完整性
打开「控制面板>程序和功能」,检查是否完整安装了.NET Core 2.0 SDK和Runtime。如果有缺失或损坏,重新下载安装对应版本的.NET Core 2.0包,确保环境没问题。修复Visual Studio组件
有时候VS的模板或组件损坏也会导致这类问题,打开Visual Studio Installer,选中你的VS2017实例,点击「修改>修复」,让安装程序自动修复可能损坏的模板和依赖组件。
内容的提问来源于stack exchange,提问作者Anindya

