微软在最新的Visual Studio 2019 16.3版本,于CSProj项目系统加入一个新的加载方法,称为部分加载模式(Partial Load Mode,PLM),这模式让Visual Studio 2019,在解决方案加载之后,使项目系统得以于设计时间(Design Time)在背景构建项目,并同时维持用户接口的响应性和交互能力,而微软提到,这项改变将会影响部分扩展组件的运行。
现在CSProj项目会阻挡用户接口线程,以等待设计时间(Design Time)的构建,和Roslyn初始化工作,之后才会开始项目加载事件,而为了进一步减少解决方案加载的时间,CSProj会在评估(Evaluation)程序之后,马上触发项目加载事件,让解决方案总管来得及显示项目树,也为Roslyn提供项目和程序代码文件。
由于设计时间构建会使用背景线程执行,而这代表解决方案加载到设计时间构建结果准备完成之前,IntelliSense、程序代码导航和Designer等功能,都会处于部分加载模式,微软提到,由于解决方案加载速度很快,因此大部分开发者不会发现有什么改变。
不过,当扩展组件在解决方案加载之后,马上调用Roslyn API,则可能导致错误,因为在调用Roslyn API时,Roslyn还不知道项目参照,所以部分加载模式可能会回传不完整的程序代码模型,为此微软提醒,开发者应该测试扩展组件,并在必须时进行更新。
虽然微软认为,这项变动不会造成扩展组件生态系统太大的冲击,但可能会对个人扩展组件有比较大的影响。