![](/img/trans.png)
[英]Package .exe into .vsix and call from Visual Studio extension
[英]How to package a VSIX-based extension for multiple Visual Studio versions?
我正在維護一個公司內部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並選擇一個使用的在延長加載時間?
旁注:我正在使用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 ...;
}
}
使用Jared Par的這些VSIX模板 。 它們的開發目的是使您的VSIX項目可以在多個VS版本中安裝和打開。 看起來他們可能需要為VS2015進行梳洗,但它們絕對是大多數VSIX開發的起點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.