如何将Silverlight应用程序移植到Visual Studio 2017?
嘿,我刚好处理过类似的迁移场景,给你几个实际可行的变通方案,帮你把Silverlight应用带到VS2017里:
使用社区维护的VS2017 Silverlight支持扩展
虽然微软官方在VS2017中砍掉了Silverlight支持,但社区有开发者维护了适配VS2017的Silverlight工具补丁。你可以先确保VS2017安装了完整的.NET Framework 4.x开发组件,然后手动安装这个第三方扩展,这样就能在VS2017中打开、编辑甚至编译Silverlight项目了。不过要注意,这只是临时过渡方案——因为浏览器早已停止支持Silverlight插件,最终你还是需要迁移到现代技术栈。渐进式迁移到WPF(桌面端)或Blazor(Web端)
这是更长期的靠谱方案:- 如果你的Silverlight是桌面应用,WPF和Silverlight共享大量XAML语法和.NET API,很多UI代码可以直接复用。你可以先把核心业务逻辑抽成
.NET Standard类库,然后在VS2017中新建WPF项目,逐步把Silverlight的UI和逻辑迁移过来。 - 如果是Web端Silverlight,推荐迁移到Blazor。Blazor支持WebAssembly运行模式,能提供类似Silverlight的富客户端体验,而且是微软当前主推的Web技术,生态更活跃。同样可以先拆分业务逻辑为独立类库,再用Blazor重构UI层。
- 如果你的Silverlight是桌面应用,WPF和Silverlight共享大量XAML语法和.NET API,很多UI代码可以直接复用。你可以先把核心业务逻辑抽成
拆分Silverlight项目为类库+宿主项目
把Silverlight项目中的业务逻辑、工具类等抽成独立的.NET Framework类库,在VS2017中维护这些类库;然后新建一个WPF/WinForms项目作为宿主,重新实现UI部分并调用类库的功能。这种方式能最大程度保留原有代码的价值,同时摆脱Silverlight的依赖。
额外提醒
不管选择哪种方案,都要注意Silverlight特有的API(比如System.Windows.Controls.Silverlight下的专属控件),这些在目标技术栈中可能需要寻找替代方案。另外,由于Silverlight已在2021年终止支持,临时的补丁方案只适合短期过渡,长远来看还是建议彻底迁移到现代技术栈,避免后续维护风险。
内容的提问来源于stack exchange,提问作者The Apache

