日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VS2010插件编写学习总结

發(fā)布時間:2025/4/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS2010插件编写学习总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

VS2010 Addins 外接程序(插件)開發(fā)

http://www.cnblogs.com/Leo_wl/archive/2013/03/21/2973886.html
簡單做了一個添加文件頭注視的插件,算作是學(xué)習(xí)。
首先看一下界面
外接程序是在 Visual Studio 集成開發(fā)環(huán)境 (IDE) 中運行的已編譯的 DLL。 編譯可以保護知識產(chǎn)權(quán)和
提高性能。 雖然可以手動創(chuàng)建外接程序,但使用“外接程序向?qū)А备鼮楹啽恪?此向?qū)?chuàng)建一個功能全
面但卻很基本的外接程序,創(chuàng)建完該程序后可立即運行它。 “外接程序向?qū)А鄙苫镜目粘绦蚝?#xff0c;可
向其添加代碼并對其進行自定義。
“外接程序向?qū)А弊屇梢詾橥饨映绦蛱峁╋@示名稱和說明。 這兩項內(nèi)容都將出現(xiàn)在“外接程序管理器
”中。 還可以選擇讓向?qū)纱a,用于向“工具”菜單中添加可打開外接程序的命令。您也可以選擇
為外接程序顯示一個自定義“關(guān)于”對話框。 向?qū)瓿蓵r,將生成只有一個類的新項目(名為 Connect
),該項目實現(xiàn)外接程序。

第一步 創(chuàng)建解決方案
  這里使用的是VS2010 、C#、WinForm
  文件→新建→項目→其他項目類型→擴展性→Visual Studio 外接程序,修改名稱、位置、解決方
案名稱等信息,點擊確定

第二步 根據(jù)外接程序想道創(chuàng)建項目
  當(dāng)然,你如果已經(jīng)是高手了,可以不用使用向?qū)?chuàng)建 項目。

  如圖

  下一步,選擇使用C#創(chuàng)建外接程序
  下一步,選擇使用應(yīng)用程序主機,有兩個選項,Microsoft Visual Studio 2010 和Microsoft?
Visual Studio 2010 Macros(宏),兩個都勾選
  下一步,填寫外界程序名稱和說明
  下一步,在選擇外接程序選項中,在“是否為外接程序創(chuàng)建命令欄用戶界面?”中勾選“是的,創(chuàng)
建工具菜單項“,向?qū)槟阍诠ぞ卟藛沃袆?chuàng)建一個菜單
  下一步,關(guān)于信息,根據(jù)需要勾選是否生成關(guān)于對話框
  下一步,完成

  這樣系統(tǒng)向?qū)Ь蜑槟銊?chuàng)建了一個項目,并且生成了一個Connect類,實現(xiàn)IDTExtensibility2和
IDTCommandTarget接口

第三步 創(chuàng)建一個窗口
  在項目上,右鍵,添加一個WinForm窗口,我在這里命名為MainForm
第四步 在MainForm類中添加application對象  
/// <summary>
? ? ? ? /// application對象
? ? ? ? /// </summary>
? ? ? ? private DTE2 _applicationObject;

? ? ? ? /// <summary>
? ? ? ? ///?
? ? ? ? /// </summary>
? ? ? ? public DTE2 applicationObject?
? ? ? ? {
? ? ? ? ? ? get { return _applicationObject; }
? ? ? ? ? ? set { this._applicationObject = value; }
? ? ? ? }

第五步 顯示這個創(chuàng)建的窗口
  在Connect類中找到public void Exec(string commandName, vsCommandExecOption?
executeOption, ref object varIn, ref object varOut, ref bool handled)這個方法  
/// <summary>實現(xiàn) IDTCommandTarget 接口的 Exec 方法。此方法在調(diào)用該命令時調(diào)用。</summary>
? ? ? ? /// <param term='commandName'>要執(zhí)行的命令的名稱。</param>
? ? ? ? /// <param term='executeOption'>描述該命令應(yīng)如何運行。</param>
? ? ? ? /// <param term='varIn'>從調(diào)用方傳遞到命令處理程序的參數(shù)。</param>
? ? ? ? /// <param term='varOut'>從命令處理程序傳遞到調(diào)用方的參數(shù)。</param>
? ? ? ? /// <param term='handled'>通知調(diào)用方此命令是否已被處理。</param>
? ? ? ? /// <seealso class='Exec' />
? ? ? ? public void Exec(string commandName, vsCommandExecOption executeOption, ref object?
varIn, ref object varOut, ref bool handled)
? ? ? ? {
? ? ? ? ? ? handled = false;
? ? ? ? ? ? if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(commandName == "MyHeadeAddin.Connect.MyHeadeAddin")
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //此處添加自己的邏輯代碼
? ? ? ? ? ? ? ? ? ? MainForm mainF = new MainForm();
? ? ? ? ? ? ? ? ? ? mainF.applicationObject = _applicationObject;
? ? ? ? ? ? ? ? ? ? mainF.Show();
? ? ? ? ? ? ? ? ? ? handled = true;
? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }

第六步 運行調(diào)試
  運行后會打開一個新的VS2010,在工具菜單中會多出一個我們自己外接程序的菜單
  點擊這個按鈕,我們創(chuàng)建的窗口就會彈出來了!
  至于其他操作,就可以在這個MainForm的基礎(chǔ)上進行了。
  對VS2010 IDE的一些操作主要圍繞DTE2的applicationObject實例對象來進行。
?DTE2的命名空間是EnvDTE80。
  關(guān)于EnvDTE的說明http://technet.microsoft.com/zh-cn/envdte(it-it).aspx
  EnvDTE 是包含 Visual Studio 內(nèi)核自動化的對象和成員的用程序集包裝的 COM 庫。?
在 EnvDTE80、EnvDTE90、 EnvDTE90a 和 EnvDTE100 命名空間中包含更改和新功能。添加對?
EnvDTE.dll 的程序集引用時,您還必須將程序集的 “嵌入互操作類型”屬性設(shè)置為 false。
最后,如果要在其他計算機上使用,只需要將.AddIn和生成的.dll文件放到 文檔目錄下的\Visual?
Studio 2010\Addins\目錄中即可,如圖:

  第一次接觸插件開發(fā),還是從我的一個師哥那接觸的。
  插件下載地址:http://files.cnblogs.com/zsmhhfy/HeadAddins.rar
  另外參考:http://technet.microsoft.com/zh-cn/magazine/80493a3w.aspx
========

VS插件開發(fā) - 個性化VS IDE編輯器

http://www.cnblogs.com/LonelyShadow/p/3964879.html

之前發(fā)了一篇《個性化VS - 登錄身份驗證》的文章,看到大家都在關(guān)注VS全屏背景插件的制作,所以就
抽了個時間發(fā)了這篇文章。
我也是剛開始關(guān)注VS插件制作的,這個全屏的東西也是參考網(wǎng)上前輩們的相關(guān)知識慢慢寫出來的,水平
不好,還請見諒。
之前的默認的VS界面:
主題也只有默認的兩三個,而且不能自定義添加:
這距離我們的目標,自定義主題、背景、透明等等,感覺貌似相差甚遠:
其實,整體步驟非常簡單,大家想一下:我們不能直接去設(shè)置更改VS的東西,但是VS不是有一個插件的
功能么?
那我們能不能自己寫一個插件,來設(shè)置VS的相關(guān)功能,最后實現(xiàn)這個效果呢?答案是:那是必須的。呵
呵。

大概步驟如下:

1.創(chuàng)建VS插件項目,在啟動時讀取指定圖片資源,填充VS的IDE編輯器
2.使用現(xiàn)有插件設(shè)置相應(yīng)模塊的透明色

具體步驟如下:

【一、準備工作】

  VS提供了一個“Visual Studio Package”項目的模板,我們可以根據(jù)這個模板,創(chuàng)建一個VS的插件

項目,以此開發(fā)相應(yīng)的插件。

  但是這個項目模板有的Visual Studio安裝包中并沒有默認附帶,需要另行下載。

  我使用的是VS2012,自帶默認就有,VS2013自測沒有,VS2010貌似也有 以前用的記不清了,如果沒

有這個模板需要另行下載,其他版本大家自己看看。

  “新建項目 - 模板 - 其他項目類型 - Visual Studio Package”:

  如果你發(fā)現(xiàn)你的VS新建項目中,在模板列表中找不到“Visual Studio Package”,大家可以去搜索

或直接微軟官網(wǎng)軟件下載找“Visual Studio SDK ****”,****表示你的VS版本,不同版本的VS,SDK不

同。

  下載后,是在線安裝程序,大概也就十幾M,在線安裝的SDK大小也就一百多M,非常快。(安裝注意

最好關(guān)閉VS哦。)

  安裝成功后,你打開VS,新建項目,就可以看到這個項目模板了。

【二、新建項目】

  打開VS - “新建項目 - 其他項目類型 - Visual Studio Package”,項目名稱隨意,比如我

的“Guying.Package.IDEBackground”:

  然后確定:

  下一步,開發(fā)語言選擇你的,在這里我當(dāng)然選擇“Visual C#”啦,哈哈,下面的默認就O了:

下一步,輸入公司名稱、插件名稱、版本號、指定Icon圖標、插件說明信息:

下一步,什么都別選:

下一步,不要測試項目:

最后點擊Finish完成,項目就創(chuàng)建完成了:

【三、編寫插件代碼】

  找到項目中插件的.cs文件“****Package.cs”:

  這個文件就好比“控制臺項目”中的“Program.cs”,對,插件運行時,會啟動這個代碼文件。

  我們只需要在這個文件中,插入修改Visual Studio IDE的代碼即可。

  起初的“***Package.cs”文件中,去掉注釋后,只有如下代碼:

?起始的“****Package.cs”文件的代碼
?
  我們可以發(fā)現(xiàn),包含兩個函數(shù):一個無參構(gòu)造和“Initialize()”方法,這個就不用我介紹了吧,

大家都懂的。?

  在這里,我需要說的是,可能大家細心的已經(jīng)發(fā)現(xiàn)了,你在這個項目中新建窗體,顯示的是WPF的應(yīng)

用程序。

  是的,不僅僅是Vista系統(tǒng),Visual Studio也是用WPF來開發(fā)UI的。

  那我們是不是也可以在這個WPF插件項目中來控制VS呢?哈哈。。

  ①添加需要的WPF等DLL組件引用:

Microsoft.VisualStudio.CoreUtility.dll

Microsoft.VisualStudio.Text.UI.dll

Microsoft.VisualStudio.Text.UI.Wpf.dll

PresentationCore.dll

PresentationFramework.dll

System.ComponentModel.Composition.dll

System.Xaml.dll

WindowsBase.dll

  ②然后,我們回到“****Package.cs”文件中,找到“Initialize()”初始化的方法中,為當(dāng)前啟

動程序(也就是咱們運行的Visual Studio的實例)的主窗口添加Loaded事件:

?為當(dāng)前啟動程序(Visual Studio)的主窗口添加Loaded事件“MainWindow_Loaded”
?
  ③然后,當(dāng)然,編寫上面添加的這個“MainWindow_Loaded”的方法,讀取指定的圖片資源,填充到

Visual Studio IDE編輯器中:

?讀取指定的圖片資源,填充到Visual Studio IDE編輯器中
?
  在這一步,你可以自我發(fā)揮,比如用上IO流,讀取一個配置文件,獲取配置數(shù)據(jù),動態(tài)顯示等等。


是吧。。。。哈哈。


  ④為了方便調(diào)試,請在“****Package.cs”文件的類聲明上加上如下屬性定義:


?添加屬性定義
?
  ⑤緊接著,新建一個類文件“EditorBackground.cs”,參考代碼如下,親們復(fù)制的時候,注意我的

命名空間和你的是不是一樣的哦:

?EditorBackground.cs
  

  ⑥最后,大家找到項目中的“source.extension.vsixmanifest”文件并打開,找到上面的“Assets

”,點擊右邊的“New”:


  Type選擇“Microsoft.VisualStudio.MefComponent”


  Source選擇一個現(xiàn)有的項目


  Project就選擇當(dāng)前這個插件項目即可


  (例如下圖:)

  ⑦然后OK、大家生成項目,進入項目的“bin\debug”文件夾,找到生成的插件,關(guān)掉VS,雙擊安裝

即可:

  最后打開VS,瞅瞅,如果VS啟動異常報錯,閃退等,如果指定的圖片資源存在,則表示你的插件有


問題了,請運行“devenv.exe /safemode”卸載掉剛剛這個插件就行了。


【四、設(shè)置模塊透明】

  打開VS如果沒問題的話,你會發(fā)現(xiàn)是這個樣子:
  沒錯,你可能已經(jīng)看到了,VS的背景已經(jīng)發(fā)生變化了,被我們指定的圖片填充背景了。
  但是,VS的模塊還沒有,這怎么辦?
  當(dāng)然,還是通過插件設(shè)置他們的顏色啊。
  但是VS默認主題顏色是不能隨便更改的,怎么辦?難道還要再寫一個主題換膚的插件?!
  當(dāng)然不用,這個插件已經(jīng)開發(fā)出來了,大家可以打開VS直接在線安裝。
  打開VS - “工具 - 擴展和更新 - 聯(lián)機”,右上角搜索“Theme”,找到類似這個名字的點擊下載

安裝即可:“Visual Studio 2012 Color Theme Editor”:

  安裝后提示重啟VS,重啟后你會發(fā)現(xiàn)“工具”里可以設(shè)置主題配色了:

  在這里我們可以選擇提供的幾套配色主題,當(dāng)然我們也可以自己點擊“Customize Colors”新建自


己的主題:

  左邊選擇基于哪種現(xiàn)有配色創(chuàng)建新主題,然后下面輸入主題名稱,點擊Create即可:


  然后你會很雞凍的發(fā)現(xiàn),VS每個部分的顏色都可以修改了,而且可以修改透明度:
  大家自己按照自己喜歡的修改吧。


  找不到的模塊沒法改的什么的,可以直接留言郵箱,我把我配置好東西的發(fā)給大家。

  點擊下面的“Import Theme”導(dǎo)入我發(fā)過去的主題即可:

  最后效果如下:


========

NPAPI插件開發(fā)詳細記錄:用VS2010開發(fā)NPAPI插件步驟

http://blog.csdn.net/shangbolei/article/details/52457628

前面一段時間關(guān)注了用firebreath開發(fā)插件,但是感覺用起來不是那么得心應(yīng)手,還是回到NPAPI開發(fā)插

件上來。

本文根據(jù)NPAPI開發(fā)詳解,Windows版進行開發(fā),其中以VS2008為例進行開發(fā),在VS2010中基本上是相同

的。
必須的plugin sdk,將其解壓到某個目錄下,我這里是:D:\Users\zcf\Documents\My Program\2012。

下面是創(chuàng)建插件的步驟:
1、創(chuàng)建項目

名稱一定要以np開頭,為了將來適應(yīng)不同操作系統(tǒng),最好全小寫,不要太長,盡量控制在8字符內(nèi)。本例

定義為npmedia
位置指定到~plugin\sdk\samples
點擊確定、下一步。選擇dll、空項目:

點擊完成,即建立好了一個空項目。如下圖:

2、添加必要文件
首先,添加NPAPI SDK中的Common文件,共三個:

然后添加def文件:

編輯npdemo.def為:
[cpp] view plaincopy?
LIBRARY "npmedia" ?
??
EXPORTS ?
NP_GetEntryPoints @1 ?
NP_Initialize @2 ?
NP_Shutdown @3 ?
接著添加資源文件:

自動生成了resource.h和npdemo.rc。接著修改rc文件:

在圖中的BLOCK內(nèi)添加。注意!BLOCK 一定要為"040904e4"
VALUE "MIMEType", "application/media-plugin"

注意:有很多朋友反映按照本文的方法做出的插件在chrome中無法識別,問題就在于此處,將下一個字

段改為如下形式就可以了:
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
這里補充一點:BLOCK ?"040904e4"與后面VALUE "Translation", 0x409, 1252的含義是對應(yīng)的,1252的

十六進制表示就是4e4.Translation字段的第一個值表示語言409表示英語,而默認的804表示中文(簡體)

。Translation字段的第二個值表示所采用的字符集,1200(0X04B0)表示unicode,1252(0X04E4)表示

多字節(jié)字符集,請參考:http://msdn.microsoft.com/zh-

cn/library/windows/desktop/aa381057%28v=vs.85%29.aspx。對于用中文環(huán)境開發(fā)來講既可以用409(

英語)也可以用804(中文)
BLOCK 的值對于firefox必須是 "040904e4",有朋友提到在chrome中這個BLOCK 的值可以是"080404e4"
如果要支持chrome則字符集應(yīng)設(shè)置為1252(0X04E4)如要及支持firefox又支持chrome,保險的做法是
BLOCK ?"040904e4"對應(yīng)"Translation", 0x409, 1252。

3、添加Plugin實現(xiàn)類

類名可以隨便命名,但是必須繼承自nsPluginInstanceBase。
編輯Plugin.h:
#pragma once #include "pluginbase.h" class Plugin : public nsPluginInstanceBase { private: NPP m_pNPInstance; NPBool m_bInitialized; public: Plugin(NPP pNPInstance); ~Plugin(); NPBool init(NPWindow* pNPWindow) { m_bInitialized = TRUE; return TRUE;} void shut() { m_bInitialized = FALSE; } NPBool isInitialized() { return m_bInitialized; } };

編輯Plugin.cpp:#include "Plugin.h" // functions / NPError NS_PluginInitialize() { return NPERR_NO_ERROR; } void NS_PluginShutdown() { } nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct) { if(!aCreateDataStruct) return NULL; Plugin * plugin = new Plugin(aCreateDataStruct->instance); return plugin; } void NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin) { if(aPlugin) delete (Plugin *)aPlugin; } // Plugin / Plugin::Plugin(NPP pNPInstance):nsPluginInstanceBase(), m_pNPInstance(pNPInstance), m_bInitialized(FALSE) { } Plugin::~Plugin(void) { }

4、修改項目屬性

字符集選擇為多字節(jié)字符(不是必須的),下面添加包含文件:5、編譯調(diào)試完成了上述設(shè)置就可以進行編譯調(diào)試了。這是整個項目的結(jié)構(gòu):生成該項目之后,可以在項目的Debug目錄下找到dll文件,這里是npmedia.dll。可以寫注冊表注冊這個dll,也可以將這個dll復(fù)制到用來測試插件的Firefox的profile目錄下的plugins(沒有則自行創(chuàng)建)文件夾中。寫注冊表的方式:運行regedit,在HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins下建立一個子項,可隨意命名:這里以@zcf.com/media為例,新建字符串項Path,其值為生成的dll的路徑:注意,這種方式在XP系統(tǒng)下測試通過,在WIN7系統(tǒng)下沒有成功(注意:win764位應(yīng)運行 %windir%\SysWOW64\Regedit.exe,打開的就是64注冊表,可以在HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins下看到很多64位版本的插件,多謝網(wǎng)友 Jearol 告知)。還有一種方式就是設(shè)置項目屬性,將輸出目錄指定為用來調(diào)試的Firefox相應(yīng)profile目錄下的plugins目錄。這樣就不用每次生成之后來回復(fù)制dll。如下圖:然后在Firefox地址欄中輸入about:plugins就可以看到我們的插件了。測試頁面可以如下:測試文件mediatest.html:[html]view plaincopy?<!doctype html> ?<html> ?<title>TEST WEB PAGE for media plugin</title> ?<body> ?<object type="application/media-plugin" width=200 height=150 ></object> ?<br /> ?</body> ?</html> ?關(guān)于調(diào)試插件:首先用Firefox打開測試頁面,然后在VS2010中需要的地方設(shè)置斷點,接著選擇調(diào)試/附加到進程在彈出的對話框中選擇plugin-container.exe,可能不止一個,注意根據(jù)其路徑選擇正確的那個。最后刷新測試頁面就可以在你設(shè)置的斷點的地方斷下,進行調(diào)試。下一篇文章會有一個簡單的實例展示這個調(diào)試過程。========

3DsMax導(dǎo)出插件編寫(一)——vs2010和3dsmax2011(64位)的配置方法 ?

http://liweizhaolili.blog.163.com/blog/static/162307442013117731953/?作為3D開發(fā)人員,特別是3D引擎開發(fā)人員,經(jīng)常會接觸到各種三維模型的數(shù)據(jù)。雖然說3dsmax已經(jīng)可以導(dǎo)出很多格式的模型,不過總是不一定合適自己用。所以總有一種想自己寫一個導(dǎo)出插件,讓3dmax導(dǎo)出自己想要的數(shù)據(jù)格式。這里為大家介紹一下怎樣為3dmax寫導(dǎo)出插件的第一步:怎樣配置vs和maxSdk。這里你需要的東西有兩個:1、一個完整版的3dsMax。2、一個VisualStudio。為什么是要完整版的3dsMax呢?這是因為完整版本的3dsMax的安裝文件自帶有maxSdk。這是很重要的。不同版本的3dsMax,帶的sdk會不一樣。你拿了其他版本的sdk做了的插件,不一定適合你當(dāng)前的3dsmax使用的。很多人寫這個配置教程,會告訴你上網(wǎng)去找maxSdk。其實不需要這么麻煩的。下面會告訴大家怎樣安裝。我這里拿的是我當(dāng)前使用的3dsMax2011的64位版來做示范。其他的版本做法是一樣的。那么VisualStudio有什么要求呢?有些人寫的教程會告訴你,每個版本的max的sdk會對應(yīng)不同版本的vs,最好對應(yīng)。這樣說也不算錯。不過其實這個對應(yīng)關(guān)系沒那么嚴格的,我下面會告訴大家怎樣跨版本配置。比如max2011的sdk對應(yīng)的是vs2008,我下面將會用vs2010來配置。好,把上面2樣?xùn)|西準備好之后,3dsmax正常安裝,vs也正常安裝,準備工作就完成了,接下來阿趙和大家就一起來裝這個maxSdk:運行完整版本的3dsMax安裝文件,會看到以下界面,我們選擇“安裝工具和實用程序”:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙?在這里選擇需要安裝的工具,我們需要的是3ds max 2011的sdk:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?安裝完之后,會在安裝目錄找到一個howto文件夾,里面有個3dsmaxPluginWizard文件夾,在里面有個readme.txt文檔,文檔里面說明了怎么去配置這個sdk的。其實在安裝完之后,我們可以把這個maxsdk的文件夾隨便的移動到我們想要的地方的。不過在配置之前,最好先移動好,開始配置之后,就別動這個文件夾的路徑了。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙?在配置之前,這個文件夾的屬性是只讀的,我們先把整個文件夾的只讀取消,然后開始配置:使用記事本打開同文件夾下的3dsmaxPluginWizard.vsz,然后找到下圖用紅線下劃的地方。默認的Wizard=VsWizardEngine.9.0,代表的是對應(yīng)vs2008版本。我現(xiàn)在需要使用2010版本,所以把它改成了10.0然后下面的ABSOLUTE_PATH改成當(dāng)前的3dsmaxPluginWizard文件夾的路徑:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙?改完之后,我們把3dsmaxPluginWizard文件夾下的這三個文件復(fù)制:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?然后找到vs2010的安裝文件夾,找到VC/vcprojects文件夾,把剛才復(fù)制的三個文件放到這個文件夾下:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?然后我們就可以打開vs2010,創(chuàng)建新項目。這時候會在c++項目里面看到了3dsmax插件的類別,選擇它,然后在下面的項目名稱和路徑里面輸入自己想要的名字和路徑。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙?如果你之前的配置正確,將會彈出設(shè)置向?qū)?#xff0c;如果沒有彈出,則要檢查之前的步驟了。我們選擇File?Export:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?這里是插件的詳情,直接下一步就行:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?這里是項目詳情,第一項輸入maxsdk的路徑,第二項輸入插件想輸出的路徑,比如3dsmax安裝目錄的plugins文件夾,第三項輸入需要調(diào)試的3dsmax的安裝目錄。三項都是可以在項目建立之后修改的。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙按finish后,由于這個版本的sdk對應(yīng)的是vs2008,現(xiàn)在我用的是2010,所以有一個轉(zhuǎn)換版本的過程使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?這時候,項目應(yīng)該已經(jīng)創(chuàng)建成功。如果沒有創(chuàng)建成功,則檢查之前的步驟。通常是因為3dsmaxPluginWizard.vsz里面的vs版本設(shè)置錯誤。如果創(chuàng)建成功后,我們在解決方案資源管理器里面找到你的項目的cpp,打開。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙??在cpp里面,修改Ext方法里面的返回,這里是你導(dǎo)出的模型的格式后綴名,這里我是改成了”azhao“,再改ShortDesc方法里面的返回,這里是模型的描述,我改成了”阿趙的模型格式“。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?現(xiàn)在按調(diào)試,會彈出錯誤:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?這是因為調(diào)試的目標沒有設(shè)置正確,可以找到項目屬性修改:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙?在配置屬性里面的調(diào)試,修改命令項為你的3dsmax.exe路徑:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙按道理,現(xiàn)在我們再開始調(diào)試,你的3dsmax就會啟動了。如果你是為32位的3dsmax做配置,那么整個配置過程已經(jīng)完成了。但我這里3dsmax啟動后報錯了,這是因為我的3dsmax是64位的,剛才調(diào)試生成的32位插件不能用。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?接下來我們將要把項目改成64位的。先打開項目屬性,在配置管理器里面,把Win32改成x64:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙?改完之后,之前我們的所有配置都沒了,需要逐個去配置:先配置調(diào)試程序路徑:使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?然后配置輸出路徑使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?配置生成程序數(shù)據(jù)庫文件的路徑使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?好了,64位修改完成,我們再次進行調(diào)試,3dsmax應(yīng)該就能正常打開了。我們隨便在場景里面建立一個茶壺,然后導(dǎo)出。現(xiàn)在我們可以在選擇導(dǎo)出格式的地方,找到我們剛才指定的格式了,就是”阿趙的模型格式“,后綴名是”azhao“。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法- 阿趙 - 有爪的小羔羊阿趙?確定保存,會打開一個對話框,不過里面都是一些默認的東西,沒有任何內(nèi)容的,因為我們只是完成了配置的步驟,沒有開始寫導(dǎo)出的實際內(nèi)容。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?在vs里面找到DoExport方法,在里面打一個斷點。再次去選擇導(dǎo)出我們的格式,vs應(yīng)該就能進入斷點了。DoExport方法就是導(dǎo)出方法的入口了。使用vs2010為3dsmax2011(64位)寫導(dǎo)出插件——配置方法 - 阿趙 - 有爪的小羔羊阿趙?如果你途中發(fā)現(xiàn)出現(xiàn)問題,很有可能是以下幾種問題:1、下載的MaxSdk有問題,建議使用完整版3dsMax自帶的sdk。2、忘記取消maxSdk文件夾的只讀屬性,這樣在新建項目或者編譯的時候都會出錯。3、3dsmaxPluginWizard.vsz里面設(shè)置的vs版本不對。9.0對應(yīng)的是vs2008,10.0對應(yīng)的是vs2010,11.0對應(yīng)的是vs2012.4、調(diào)試的時候出錯,有可能是沒有設(shè)置對調(diào)試對象,要設(shè)置為3dsMax的exe。5、調(diào)試的時候沒有報錯,卻沒有出現(xiàn)導(dǎo)出的選擇。有可能是導(dǎo)出保存的路徑不對,要保存在3dsmax的安裝路徑里面的插件文件夾,比如plugins或者stdplugs文件夾。6、調(diào)試的時候3dsmax啟動了,但在啟動的途中報錯。這有可能是使用的sdk和3dsMax版本不對應(yīng),或者是32位插件和64位軟件不對應(yīng)。這個過程雖然簡單,不過卻會遇到很多默默奇妙的小問題,網(wǎng)上雖然相關(guān)的教程不少,但起碼我自己對著很多個教程都沒有配置成功,所以才把自己的配置過程記錄下來,希望能給以后需要配置的人一個參考。========

自己動手編寫一個VS插件(一)

http://blog.csdn.net/clever101/article/details/8733799? ? ? ? ?最近計劃開發(fā)一個VS插件來幫助自己加快開發(fā)速度,研究了一下VS的插件開發(fā)。下面配合插圖說明一下如何開發(fā)一個VS插件。?第一步:創(chuàng)建插件工程,具體如下圖:? ? ? ? ? ?第二步不用干啥,如下圖:? ? ? ?第三步:選擇開發(fā)語言,這里我選的是C++/ATL,因為這是我最拿手的,當(dāng)然你也可以選擇C#,這里不建議你選擇C++/CLR,因為這個幾乎冷僻得沒人用,一般網(wǎng)上也找不到相關(guān)的例程,如下圖:?第四步選擇調(diào)用程序,第一個是必選的,第二個可選可不選,選上也無妨,如下圖:第五步輸入插件名稱和說明,如下圖:第六步設(shè)置用戶界面的調(diào)用方式,這里簡單設(shè)置為在宿主應(yīng)用程序啟動時加載,如下圖:第七步是填寫關(guān)于信息,如下圖:第八步是單擊完成,如下圖:? ? ? ? 由于所生成的插件是一個com組件,需要注冊才能使用,因此需要設(shè)置一個生成后事件:regsvr32$(OutDir)/$(ProjectName).dll,具體如下圖:========

自己動手編寫一個VS插件(二)——理解OnConnection函數(shù)

http://www.thebigdata.cn/JiShuBoKe/4429.html? ? ? ? ?繼續(xù)開發(fā)一個VS插件。首先認識一下通過插件向?qū)傻念惡秃瘮?shù),大致弄清一下它們的含義。創(chuàng)建一個基于ATL的插件工程,都生成了一個CConnect類。現(xiàn)在我們看看CConnect類的一些重要接口:CConnect::OnConnection:這個接口可以說是插件的入口函數(shù)。只是這個入口函數(shù)會被調(diào)用幾次,至于何時調(diào)用取決于這個函數(shù)的ConnectMode參數(shù)。? ? ?一個插件有下面幾種加載模式:在VS啟動時,并且該插件并標記為隨同VS啟動時啟動(所謂隨同VS啟動時啟動請見圖一),這時ConnectMode參數(shù)的值為ext_ConnectMode.ext_cm_Startup。圖一在用戶需要時時被調(diào)用,就是說該插件并沒有被標記為VS啟動時啟動但用戶手動在外接程序管理器上給啟動一欄打上勾上時,這時ConnectMode參數(shù)的值為ext_ConnectMode.ext_cm_AfterStartup。從命令行啟動(使用devenv.exe去生成一個解決方案),這時ConnectMode參數(shù)的值為ext_ConnectMode.ext_cm_CommandLine。請注意這種情況在一些舊版本的VisualStudio會有一些bug并且看來只有在Visual Studio 2008才會正確運行(比VS 2008高的版本應(yīng)該也可以)。當(dāng)插件使用常駐的工具欄、命令欄和按鈕(常駐意味著即使插件沒有加載用戶界面也會出現(xiàn))同時Visual Studio要求插件去初始化常駐用戶界面,這時ConnectMode參數(shù)的值為ext_ConnectMode.ext_cm_UISetup。這種連接模式必須不同于ext_ConnectMode.ext_cm_Startup和ext_ConnectMode.ext_cm_AfterStartup的情況下。假如你建的插件不是一個一般插件,而是一個和特定的解決方案相關(guān)的插件,當(dāng)這個解決方案被加載時,這時ConnectMode參數(shù)的值為ext_ConnectMode.ext_cm_AfterStartup。?所以,存在兩種模式:ext_ConnectMode.ext_cm_Startup和ext_ConnectMode.ext_cm_AfterStartup。這意味著它們都以相同的方式處理因為在一般情況下插件在VS啟動時自動加載還是過了一些時候手動加載它們并沒有什么不同。所以你可以使用下面的代碼:STDMETHODIMP CConnect::OnConnection(IDispatch *pApplication, ext_ConnectMode ConnectMode,?IDispatch *pAddInInst,SAFEARRAY ** /*自定義*/ ){HRESULT hr = S_OK;pApplication->QueryInterface(__uuidof(DTE2), (LPVOID*)&m_pDTE);pAddInInst->QueryInterface(__uuidof(AddIn),(LPVOID*)&m_pAddInInstance);switch(ConnectMode){case ext_cm_Startup:caseext_cm_AfterStartup:{// 初始化你的插件break;}default:break;}returnhr;}? ? ? ? 然而當(dāng)插件在ext_ConnectMode.ext_cm_Startup模式加載(也就是在Visual Studio啟動時加載),VisualStudio并沒有完全初始化。所以這是很多插件可以正確初始化,但一些卻會失敗。比如當(dāng)你的插件加載時需要顯示一個工具窗口,當(dāng)插件在VS啟動時加載工具窗口卻并不會顯示,但在外接程序管理器手動加載這個插件時可以顯示這個工具窗口。? ? ? ?所以在VisualStudioz完全初始化之后再調(diào)用OnConnection函數(shù)會比較好。IDTExtensibility2接口提供了一個在VisualStudioz完全初始化后會被調(diào)用的叫OnStartupComplete的方法。所以正確的代碼如下:STDMETHODIMPCConnect::OnStartupComplete (SAFEARRAY ** /*自定義*/ ){// 初始化你的插件return S_OK;}// CConnectSTDMETHODIMP CConnect::OnConnection(IDispatch *pApplication, ext_ConnectMode ConnectMode,?IDispatch*pAddInInst, SAFEARRAY ** /*自定義*/ ){HRESULT hr = S_OK;pApplication->QueryInterface(__uuidof(DTE2), (LPVOID*)&m_pDTE);pAddInInst->QueryInterface(__uuidof(AddIn),(LPVOID*)&m_pAddInInstance);switch(ConnectMode){case ext_cm_Startup://什么也不做,因為Visual Studio并沒有完全初始化break;case ext_cm_AfterStartup:{? ? ? ? ? ? OnStartupComplete(NULL);break;}default:break;}returnhr;}========

vscode編寫插件詳細過程

http://blog.csdn.net/libin_1/article/details/51452943之前編寫了一個vscode插件用vscode寫博客和發(fā)布,然后有園友要求寫一篇來介紹如何開發(fā)一個vscode擴展插件,或者說介紹開發(fā)這個插件的過程。然而文章還沒有寫,園子里面已經(jīng)有人發(fā)布一個文章,是園友上位者的憐憫的VSCODE 插件初探介紹了自己開發(fā)的一個插件與如何簡單的開發(fā)一個插件。雖然已經(jīng)有這么一個文章,但是我覺得還是可以更仔細的來介紹如何來開發(fā)一個vscode插件,也算之前說好要寫這么一個文章的一個承諾吧,于是就有了還這么篇文章。一、開發(fā)環(huán)境介紹與安裝為了演示一個安裝環(huán)境,我安裝了一個干凈的win10系統(tǒng)來操作截圖。1.首先我們需要安裝一個最基本的VisualStudio Code,我們可以先到官網(wǎng)下載一最新版本的來進行安裝,點擊上面的連接,進去下載總是懂的吧。下載完后點擊安裝,然后一直下一步安裝就可以。2.安裝完vscode后呢,我們就需要來看如何開發(fā)我們的自己的插件了,參考官方文檔Your First?Extension(Example - Hello World)。根據(jù)文檔我們得知我們需要安裝一個 node.js,同樣的點擊前面的連接,到nodejs的中文網(wǎng)站下載一個安裝程序,下載完點擊安裝下一步就可以。3.在安裝完上面兩個工具后,我們還需要一個生產(chǎn)插件代碼的東西,也就是Yeoman 和 VS Code?Extension generator.Yeoman的介紹不在本文章中,自己點擊上面的連接去了解。我們可以打開cmd來執(zhí)行下面的命令來安裝這兩個工具。npm使用介紹npm install -g yo generator-code在完成上面的安裝后,可以通過輸入命令yo code來生成我們要的基本代碼。?在os系統(tǒng)上可以通過用上下鍵來選擇要創(chuàng)建哪種類型的項目,在win可以通過輸入1、2、3這樣的數(shù)字然后按回車來選擇。二、生成基本代碼的講解與簡單的修改在幾個項目類型中,我們選擇了第一個TypeScript來作為我們編寫擴展的語言,其他幾個項目類型這里不做介紹。TypeScript語法自行理解項目結(jié)構(gòu)介紹我們創(chuàng)建的一個項目結(jié)構(gòu)如下:選擇創(chuàng)建項目后有四個輸入和一個選擇輸入你擴展的名稱輸入一個標志(項目創(chuàng)建的文件名稱用這個)輸入對這個擴展的描述輸入以后要發(fā)布用到的一名稱(和以后再發(fā)布時候有一個名字是對應(yīng)上的)是問你要不要創(chuàng)建一個git倉庫用于版本管理以上幾個輸入都會在package.json這個文件里面有對應(yīng)的屬性來表示。輸入完之后就創(chuàng)建了如上圖的一個目錄結(jié)構(gòu)。這里不要臉的復(fù)制了一下別人的目錄說明,由于我這個項目沒有讓生成Git倉庫,所以沒有.gitignore 這個文件。還有node_modules等其他多出來的目錄結(jié)構(gòu)是創(chuàng)建項目后運行 npm install 這個命令生成出來的。.├── .gitignore ? ? ? ? ? ? ? ? ?//配置不需要加入版本管理的文件├── .vscode ? ? ? ? ? ? ? ? ? ? // VS Code的整合│ ? ├── launch.json│├── settings.json│ ? └── tasks.json├── .vscodeignore ? ? ? ? ? ? ? ?//配置不需要加入最終發(fā)布到拓展中的文件├── README.md├── src ? ? ? ? ? ? ? ? ? ? ? ? // 源文件│ ? └── extension.ts ? ? ? ? ? ?// 如果我們使用js來開發(fā)拓展,則該文件的后綴為.js├── test ? ? ? ? ? ? ? ? ? ? ? ?// test文件夾│ ? ├── extension.test.ts// 如果我們使用js來開發(fā)拓展,則該文件的后綴為.js│ ? └── index.ts ? ? ? ? ? ? ? ?// 如果我們使用js來開發(fā)拓展,則該文件的后綴為.js├── node_modules│ ? ├── vscode ? ? ? ? ? ? ? ? ?// vscode對typescript的語言支持。│ ? └── typescript ? ? ? ? ? ? ?// TypeScript的編譯器├── out ? ? ? ? ? ? ? ? ? ? ? ? // 編譯之后的輸出文件夾(只有TypeScript需要,JS無需)│├── src│ ? | ? ├── extension.js│ ? | ? └── extension.js.map│ ? └── test│ ? ? ? ├── extension.test.js│ ? ? ? ├── extension.test.js.map│ ? ? ? ├── index.js│ ? ? ? └── index.js.map├── package.json ? ? ? ? ? ? ? ?// 該拓展的資源配置文件├── tsconfig.json ? ? ? ? ? ? ?//?├── typings ? ? ? ? ? ? ? ? ? ? // 類型定義文件夾│ ? ├── node.d.ts ? ? ? ? ? ? ? // 和Node.js關(guān)聯(lián)的類型定義│ ? └── vscode-typings.d.ts ? ? // 和VS Code關(guān)聯(lián)的類型定義└── vsc-extension-quickstart.md?運行與簡單修改介紹完目錄結(jié)構(gòu)后,我們可以來運行一下看看效果如果。我們打開一個vscode并把我們的sample目錄自己拖拉到vscode的界面上,然后選擇調(diào)試窗口,并點擊開始調(diào)試或者直接按快捷鍵F5項目運行起來后,會調(diào)用一個新的vscode窗口在標題欄的地方顯示一個[擴展開發(fā)主機]的標題,然后這個窗口是支持我們剛才運行的插件項目的命令。我們可以看到擴展插件已經(jīng)正常的運行了,接下來我們可以來簡單修改一下代碼以實現(xiàn)不同的簡單功能。在修改之前需要簡單的認識兩個文件package.json? ?{? ? "name": "sample", ? ? ? ? ? ? ?//插件擴展名稱(對應(yīng)創(chuàng)建項目時候的輸入)? ? "displayName": "sample",? ? "description": "blogsample", ?//插件擴展的描述(對應(yīng)創(chuàng)建項目時候的輸入)? ? "version": "0.0.1",? ? "publisher": "caipeiyu", ? ? ? //發(fā)布時候的一個名稱(對應(yīng)創(chuàng)建項目時候的輸入)? ? "engines": {? ? ? ? "vscode": "^0.10.10"? ? },? ? "categories": [? ? ? ? "Other"? ? ],? ? "activationEvents": [ ? ? ? ? ?//這是我們要理解的地方,是觸發(fā)插件執(zhí)行一些代碼的配置?"onCommand:extension.sayHello" //這種是通過輸入命令來觸發(fā)執(zhí)行的? ? ],? ? "main": "./out/src/extension", ?//這個是配置TypeScript編譯成js的輸出目錄? ? "contributes": {? ? ? ? "commands": [{ ? ? ? ? ? ? //title 和 command是一個對應(yīng)關(guān)系的? ? ? ? ? ? "command": "extension.sayHello", //這個是對應(yīng)上面那個命令觸發(fā)的,在代碼里面也要用到?"title": "Hello World" ? //這個是我們在vscode里面輸入的命令? ? ? ? }]? ? },? ? "scripts": { ? ? ? ? ? ? ? ? ? ? //是在發(fā)布打包,或者其他運行時候,要執(zhí)行的一些腳本命令? ? ? ? "vscode:prepublish": "node ./node_modules/vscode/bin/compile",? ? ? ? "compile": "node ./node_modules/vscode/bin/compile-watch -p ./",? ? ? ? "postinstall": "node ./node_modules/vscode/bin/install"? ? },? ? "devDependencies": { ? ? ? ? ? //這是開發(fā)的依賴包,如果有其他的依賴包,并要打包的話,需要把dev去掉? ? ? ? "typescript": "^1.8.5",? ? ? ? "vscode": "^0.11.0"? ? }? ?}?extension.ts'use strict';// The module'vscode' contains the VS Code extensibility API// Import the module and reference it with the alias vscode in your code belowimport * as vscode from 'vscode';// this method is called when your extension is activated// your extension is activated the very firsttime the command is executedexport function activate(context: vscode.ExtensionContext) {? ? // Use the console to output diagnostic information (console.log) and errors?(console.error)? ? // This line of code will only be executed once when your extensionis activated? ? console.log('Congratulations, your extension "sample" is now active!');? ? // The command has been defined in the package.json file? ? // Now provide the implementation of the command with ?registerCommand? ? // The commandId parameter mustmatch the command field in package.json? ? let disposable = vscode.commands.registerCommand('extension.sayHello', () => {? ? ? ? //只看這個地方'extension.sayHello'和 package.json 里面的?"onCommand:extension.sayHello" 是一個對應(yīng)關(guān)系? ? ? ? // The code you place here will beexecuted every time your command is executed? ? ? ? // Display a message box to the user? ? ? ? vscode.window.showInformationMessage('Hello World!');? ? });? ? context.subscriptions.push(disposable);? ? }? ? // this method is called when your extension isdeactivated? ? export function deactivate() {? ? }? ??這兩個文件是很重要的,基本整個插件編寫都是圍繞著這兩個文件來修改的,例如我們現(xiàn)在要增加多一個命令叫做 Hello Sample 那么我們先在 package.json 里面添加兩個配置..."activationEvents": [? ? "onCommand:extension.sayHello",? ? "onCommand:extension.saySample"],"contributes":{? ? "commands": [{? ? ? ? "command": "extension.sayHello",? ? ? ? "title": "Hello World"? ? },{? ? ? ? "command": "extension.saySample",? ? ? ? "title": "Hello Sample"? ? }]},?... ? ? ?添加完這兩個配置后,我們就需要在 extension.ts 里來注冊這個命令事件let disposable = vscode.commands.registerCommand('extension.sayHello',() => {? ? vscode.window.showInformationMessage('Hello World!');});context.subscriptions.push(disposable);let saySample = vscode.commands.registerCommand('extension.saySample', () => {? ? vscode.window.showInformationMessage('This is a new sample command!');});context.subscriptions.push(saySample);修改完代碼后,再次運行效果如下圖三、打包與發(fā)布我們編寫完一個插件,總不能要用的時候來運行代碼然后來使用吧,而且要分享給別人也不方便啊。有個很low的辦法,就是拷貝項目到插件目錄,但是這不靠譜吧。所以我們需要一個打包工具叫 vsce 同樣的可以用npm來安裝,打開cmd執(zhí)行命令npm install -g vsce安裝完成后可以用命令窗口 cd 到你的項目目錄下去,然后執(zhí)行命令vsce publish來發(fā)布到marketplace.visualstudio.com上面去。發(fā)布成功后可以在vscode里面用 ext install 來按這個插件。這種做法我個人覺得特別的麻煩,還需要去配置一個token,然后這個token還的找個地方記住,還會過期,而且在發(fā)布過程中還得祈禱網(wǎng)絡(luò)好。所以這里不介紹,有興趣的自己看這里。那么這里來介紹一個打包成.vsix 的插件,而且這個插件也可以通過這個頁面上傳分享。cd到項目目錄下,然后執(zhí)行命令 vsce package 來打包一個vsce packageExecuting prepublish script 'node ./node_modules/vscode/bin/compile'...Created: /sample/sample-0.0.1.vsix我們可以看到執(zhí)行了這個命令后,再執(zhí)行一個 script 'node ./node_modules/vscode/bin/compile' 這個命令是在package.json里面有配置"scripts": {? ? "vscode:prepublish": "node ./node_modules/vscode/bin/compile",? ? "compile": "node ./node_modules/vscode/bin/compile -watch -p ./",? ? "postinstall": "node ./node_modules/vscode/bin/install"},執(zhí)行完之后再創(chuàng)建了一個sample-0.0.1.vsix,這個就是我們打包好的插件安裝包了,只要把這個直接拖到vscode的窗口上,就會提示你安裝成功重啟vscode,我們重啟完之后就使用相關(guān)的命令。而且在插件的目錄下也多了對應(yīng)sample的目錄。========

總結(jié)

以上是生活随笔為你收集整理的VS2010插件编写学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。