编程语言
首页 > 编程语言> > C#-Visual Studio可扩展性-每个Visual Studio版本是否有不同的MEF导出?

C#-Visual Studio可扩展性-每个Visual Studio版本是否有不同的MEF导出?

作者:互联网

我正在编写Visual Studio扩展,我想根据正在运行的Visual Studio版本[导出]给定接口的另一种实现,例如,一种实现是针对Visual Studio 2010和2012,另一种实现是针对Visual Studio 2013和Visual Studio“ 14”.

我意识到我可以为每个Visual Studio版本简单地部署一个不同的DLL,但是我想知道是否有一种方法可以避免这种情况-运送相同的DLL和相同的vsixmanifest,但要动态扩展[导出]正确的版本接口.

最雄辩的方法是什么?

解决方法:

从您的问题尚不清楚您是否确实需要单独的出口.提供了用于支持Visual Studio多个版本的几种选项:

>确定您希望支持的最低Visual Studio版本,并仅从该版本的Visual Studio及更早版本中引用immutable and/or versioned assemblies.您的扩展程序可能会跨多个版本工作,而无需进行更改或进行特殊考虑.只要“合理”可能,这就是最佳选择.
>导出单个项目,但使用针对Visual Studio特定版本的程序集来实现.例如,我的继承边距扩展要求引用未版本化的程序集,因此我需要为每个受支持的Visual Studio版本包括单独的实现.通过提供single common exported object CSharpInheritanceTaggerProvider来实现它,但是将标记程序本身的实现委派给dynamically selected assembly.
>导出多个项目,但仅在与当前版本的Visual Studio相关的一项中执行操作. GitDiffMargin扩展使用此功能将滚动边距控件放置在最合适的位置.尽管程序集不需要对未版本化程序集的任何引用,但从Visual Studio 2013开始,该边距在UI中的最佳位置已更改,并且MEF元数据属性静态确定了位置.

> ScrollDiffMarginFactory2010
> ScrollDiffMarginFactory2013

标签:vsx,mef,visual-studio-sdk,c
来源: https://codeday.me/bug/20191029/1957833.html