2009-02-11 54 views
8

Excel VSTO如何工作?如果我在Visual Studio 2005中創建一個Excel工作簿解決方案,那麼我可以愉快地完全訪問Excel對象模型,甚至將Excel工作表視爲設計表面。當我構建解決方案時,我得到一個.XLS文件和一個.DLL(包含我的C#代碼)。Excel VSTO如何工作?

我現在可以在.XLS只啓動Excel工作表通過雙擊並沒有在我的牀單運轉用我所有的C#代碼,我放棄了片上等

如何板材引用任何控件.DLL? Excel工作簿/工作表的哪一部分告訴它需要啓動CLR並託管我的程序集?

回答

7

根據this(感謝PintSizedCat)爲Excel 2003會發生以下情況:

Microsoft Office應用程序 檢查自定義文檔屬性 ,看看是否有託管代碼與 文檔相關 擴展。有關更多信息,請參閱 自定義文檔屬性概述。

如果有託管代碼擴展名, 應用程序會加載AddinLoader.dll。 這是一個非託管DLL,它是用於運行時的Visual Studio 2005 Tools for Office第二版 加載程序組件。有關更多信息,請參閱 適用於Office Runtime的Visual Studio工具 概述。

AddinLoader.dll加載.NET 框架和 辦公室啓動運行Visual Studio工具的管理 部分。

在Visual Studio Tools for Office中 運行時創建一個應用程序域, 組策略應用程序域 不信任我的電腦區,和 檢查代碼訪問安全策略 店裏找了 政策定製組裝。

.NET Framework驗證程序 針對策略提供的證據 。如果失敗,則會引發 錯誤。如果通過,則 過程繼續。

如果自定義使用部署 清單,爲 辦公室運行時使用它來檢查 組件更新的Visual Studio工具。如果有必要更新 ,那麼現在就執行它們。

用於Office的Visual Studio工具 運行時將程序集加載到應用程序域 中。

在Visual Studio Tools for Office中 運行時調用您的自定義 裝配Startup事件 處理程序。有關詳細信息,請參閱 用於Office項目的Visual Studio工具 事件。

在我的測試項目中的Excel工作簿,我有兩個自定義屬性:

_AssemblyName,值= * _AssemblyLocation,值= {533b2c13-a125-418a-BFFF-9546b0762807}

我想這些是將VSTO運行時指向我的程序集的屬性。

5

這一切都在註冊表中完成,您應該能夠在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel或您的equivelant應用程序中找到密鑰。我在註冊表中的其他地方註冊了更多的COM Addins經驗。該鍵下應有一個LoadBehaviour項目,用於確定應用程序如何加載(2是手動加載,3是在啓動時自動加載)。

你有VSTO的安裝項目嗎?在那裏你可以看到設置的註冊表鍵,但是安裝程序也會/也應該在GAC中註冊VSTO(儘管不要拿我的話來說,因爲我對VSTO有點像Shakey一樣)。

希望這會有所幫助,我會盡力爲您找到更多信息。

編輯 你應該嘗試閱讀下面的http://msdn.microsoft.com/en-us/library/bb386298.aspx,它會給你一個插件的解釋。它實際上只是一個從註冊表中加載的COM主機的封裝器,VSTO使用一些Interoparability代碼進行對話。

還有用的是http://msdn.microsoft.com/en-us/library/23cw517s.aspx(Visual Studio Tools for Office入門,不要因爲它說入門,因爲它有很多有用的信息)和http://msdn.microsoft.com/en-us/library/hy7c6z9k.aspx(從第一個鏈接,並且是VSTO Addins的概述)。

+0

我看了一下reg密鑰,並且沒有爲我的VSTO .Net項目(那裏有一個'Addins'子目錄以及其他2個插件)。我還沒有VSTO的安裝項目。 – ng5000 2009-02-11 10:12:12

相關問題