我正在维护公司内部的Visual Studio扩展,该扩展已打包并部署为VSIX容器。此扩展当前以VS 2010为目标。它使用多个VS API DLL,并引用了它们的VS 2010版本。
我目前正在迁移此扩展程序,以使其与VS 2012/2013兼容。我已经发现旧的VSIX清单可以手动编辑,以允许该扩展程序另外安装到VS 2012/2013-完美地工作。
但是,我当前使用的某些VS 2010 API与VS 2012 ++不兼容,我需要对其进行更新-从而放弃向后兼容。
我的问题是:如何构造我的解决方案和VSIX,使其与VS 2010、2012和2013兼容。是否有一个针对VS 2010的DLL和一个针对VS 2012/2013的DLL并选择一个要使用的DLL是否可行?在扩展加载时间?
旁注:我正在使用MEF来构成我的内部功能单元。这会以任何方式使它更容易吗?
您可以:
IDoWork
;以两种具体类型实现上述接口,由两种不同的程序集公开,每种类型针对您所支持的VS版本,例如DoWorkVs2010
和DoWorkVs2012
;
。3.(可选)[导出]两种类型,以通过MEF提供它们;例如:
[Export(typeof(IDoWork))]
class DoWorkVs2010 : IDoWork
{
// ...
}
4.在您的主机部件中添加一个工厂(该工厂直接与VSX一起加载),然后在此处基于DTE版本构建您要查找的具体类型:
static class DoWorkFactory
{
internal static IDoWork Build()
{
// Load the version-specific assembly
// - Via reflection (see http://stackoverflow.com/a/465509/904178)
// - Or via MEF
return ...;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句