Visual Studio 2019 v.16.1中扩展作者的新功能

上周初,我们发布了Visual Studio 2019 v.16.1预览版1 (请参阅发行说明 )。 这是第一个Visual Studio 2019更新的第一个预览。如果尚未配置为接收预览版本,请立即进行 。 预览版安装在发行版旁边没有问题,因此它们不会互相干扰。 我强烈建议所有扩展作者都安装预览版。

您当前是否已安装16.1预览版? 太好了 这是您可能喜欢的一些功能。 细节剪下!



共享项目支持


扩展作者有时必须将扩展分为几个项目以支持不同版本的Visual Studio的原因有很多。 如果使用的Visual Studio早期版本不存在API,或者要支持的版本之间有重大更改。 现在,拆分扩展变得更加容易。

在Visual Studio 2019 v.16.1 Preview 1中,我们在同一解决方案中添加了对VSIX项目中对Shared Project的引用的支持。

图片

您可以将通用代码放在单独的共享项目中,该共享项目在构建时直接编译为VSIX项目。 VSIX项目本身中唯一存在的代码就是Visual Studio支持版本的特定代码。 结果是两个单独的VSIX,它们针对自己的Visual Studio版本范围,并共享同一项目中的大多数代码。 查看执行此操作的Extension Manager扩展的代码。

不再需要.resx文件


使用VSCT文件添加命令,菜单等时,必须指定带有MergeWithCTOMSBuild属性标记的.resx文件。 Visual Studio中的模板负责添加此文件,并添加.resx文件引用的.ico文件。 但是,对.resx的需要是一个实现细节,并且大多数扩展都不需要使用它。

为了简化VSIX项目,对于使用最新NuGet软件包Microsoft.VSSDK.BuildTools 16.0或更高版本的用户,已删除了.resx /.ico文件的要求。

在幕后,NuGet包提供了一个空的.resx,用于使用MergeWithCTO属性进行编译,直到您在项目中注册自己的代码为止。

每个显示器的意识


安装了.NET Framework 4.8的16.1中包括对每个监视器的附加支持。 Windows Forms UI现在在监视器的DPI缩放方面更好。 但是,这可能会在安装.NET Framework 4.8后导致扩展中的UI问题。

在扩展中使用Windows窗体时,可以通过将窗体或控件的创建打包在DpiAwareness.EnterDpiScope中来映射Visual Studio 2017的缩放行为。

using (DpiAwareness.EnterDpiScope(DpiAwarenessContext.SystemAware)) using (var form = new MyForm()) { form.ShowDialog(); } 

您需要做的就是添加一个指向NuGet包Microsoft.VisualStudio.DpiAwareness的链接。 在面向Visual Studio早期版本的扩展中使用此程序包,但请记住,它仅在16.1和更高版本中使用时才有效。 因此,可以在跨多个Visual Studio版本的扩展中使用它。

为了简化使用不同DPI缩放比例的多个显示器的仿真,Visual Studio IDE团队的工程师创建了一个小型便捷工具,并将其放在GitHub上 。 该团队在添加针对每个监视器的意识支持时使用了此工具,因此您也可以找到它。

阅读有关如何使用“ 每个显示器的意识”的更多信息

同步启动已禁用


18个月前,我们向扩展合作伙伴发送了一封电子邮件,宣布同步启动扩展包已过时。 一年前,我们发布了一篇博客文章,其中包含更多详细信息,即将来的Visual Studio版本将不支持同步自动启动程序包。 这个版本是16.1。

有关如何在启用后台加载的情况下升级到AsyncPackage的很好的例子 ,并且今天大多数扩展已经过渡。 如果您还没有这样做,现在是时候在16.1离开预览模式之前进行了。

新的metapackage SDK


Microsoft.VisualStudio.SDK元包是一个单独的NuGet包,它引用构成该SDK的所有各种Visual Studio包。 关于metapackage的最酷的事情是您可以访问所有接口和服务。 此外,还可以避免软件包版本不匹配的问题。

当我们发布Visual Studio 2019(16.0)时,VSIX项目模板引用了SDK元包的15.9版本。 这是因为16.0版仍在开发中。 所有单独的程序包都必须在NuGet上发布,然后才能从meta程序包中获得对它们的依赖。

好消息是我们现在终于可以使用版本16.0。 如果您的扩展程序支持版本16.0,则应使用它。 您还可以在此处了解有关扩展版本的更多信息。

Source: https://habr.com/ru/post/zh-CN448038/


All Articles