在Visual Studio 2019版本16.3中,CSProj项目系统(C#/ VB非SDK样式)引入了一种称为部分加载模式(PLM)的新加载方式。解决方案加载后,项目系统在后台进行设计时构建,使UI保持响应和交互。扩展可能需要针对此行为更改进行调整。
在Visual Studio 2019版本16.3中,CSProj项目系统(C#/VB非SDK样式格)引入了一种新的加载方式——部分加载模式(PLM)。在解决方案加载之后,项目系统在后台进行设计时构建,让UI具有响应性和交互性。然而,就运行设计时构建所需的时间而言,某些功能可能不像过去那样工作了。详情请往下看。

今天,CSProj项目阻塞UI线程,并在启动项目加载事件之前等待设计时构建和Roslyn初始化。为了进一步减少解决方案加载时间,CSProj现在将在评估之后立即触发项目加载事件,因为这足以在解决方案资源管理器中显示项目树并向Roslyn提供项目和源代码文件。
设计时构建将在后台线程上进行。这意味着智能感知、代码导航和设计器将在解决方案加载之后处于部分加载模式,直到设计时构建结果就绪。除了更快的加载解决方案,大多数用户甚至不会注意到这一点。

这将与自Visual Studio 2017以来具有此功能的.NET SDK样式项目的当前行为相匹配。现在,CSProj和SDK样式项目之间的体验是一致的。
突破传统
调用Roslyn API(例如Workspace.CurrentSolution或ProjectItem.FileCodeModel)可能会在PLM中返回不完整的代码模型,因为Roslyn尚不知道项目引用。如果在解决方案加载后不久调用Roslyn API,您可能必须更新扩展。
方法如下:
var operationProgressStatusService = await this.GetServiceAsync(typeof(SVsOperationProgressStatusService)) as IVsOperationProgressStatusService;var stageStatus = operationProgressStatusService.GetStageStatus(CommonOperationProgressStageIds.Intellisense); await stageStatus.WaitForCompletionAsync();
要选择停用延迟文档创建,请在.pkgdef文件中设置以下内容:
[$RootKey$Editors]"DeferUntilIntellisenseIsReady"=dword:00000000
要选择延迟文档创建(这是当前默认行为以避免违反与Roslyn数据的扩展的兼容性),请在.pkgdef文件中设置以下内容:
[$RootKey$Editors]"DeferUntilIntellisenseIsReady"=dword:00000001
这一变化将SDK样式项目当前使用的功能带入基于CSProj的项目。因此,除非这两个项目系统的代码路径不同,否则它不太可能导致大多数扩展的问题。因此,我们认为这对扩展生态系统的影响很小,但它可能对单个扩展产生很大的影响。
要查看此更改是否会影响您的扩展,请立即下载Visual Studio 2019 v16.3预览版1。
然后将包含以下代码的.json文件放入%LocalAppData% Microsoft VisualStudio RemoteSettings LocalTest PersistentActions
{ "ActionPath": "vs\core\remotesettings", "ActionJson": { "FeatureFlags": { "CPS.UseOperationProgress": 0, "CSProj.PartialLoadMode": 1, "Designer.PartialLoadMode": 1, "Completion.PartialLoadMode": 1, "Roslyn.PartialLoadMode": 1 } }, "TriggerJson": null, "MaxWaitTimeSpan": "14.00:00:00", "Categories": [ ]}
然后重启Visual Studio两次(没有错,就是两次!),这将为基于CSProj的项目启用PLM。
要还原功能标志更改——删除.json文件并重新启动Visual Studio两次。禁用PLM只是Visual Studio 2019 v16.3初始预览中的一个选项。该选项将在以后的更新中删除。
想要了解 Visual Studio 更多资源的朋友,请点这里。
想要获取 Visual Studio 正版授权的朋友,请点这里。

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!