當前位置:首頁 » 注冊證書 » 為com互操作注冊

為com互操作注冊

發布時間: 2020-12-09 04:01:16

Ⅰ C#項目屬性中生成菜單中沒有「為Com互操作注冊」復選框

親,你右邊滾動條沒有拉到底!
在「輸出」下面

Ⅱ 注冊C# 生成的COM組件

要想用.NET開發組件動態鏈接庫,並將類和資源公開以服務於其他任何編程語言,需要在項目中做以下設置:

1、創建一個類庫項目/解決方案(此例TestCom),打開項目屬性

2、選擇「應用程序」選項卡,點擊「程序集信息」按鈕以打開程序集信息對話框

此處也可維護程序集名稱和命名空間


3、在程序集對話框中勾選「使程序集COM可見」,然後確定。

此處也可維護項目版本信息和GUID,當GUID有沖突時可以通過VS的「工具」菜單中點擊「創建GUID」來獲取,一般為默認。


4、選擇「生成」選項卡,勾選「為COM互操作注冊」。

如需要同時將注釋與DLL一起分享出去,以方便其他程序員了解你的DLL介面和說明,則勾選「XML文檔文件」,如此生成項目時會將項目中所有注釋生成一個XML文檔。

需要注意的是,該配置是獨立的,也可以將配置項設置為「所有配置」。


5、選擇「簽名」選項卡,勾選「為程序集簽名」,然後點擊新建,打開「創建強名稱密鑰「窗口。


6、維護密鑰文件名,然後確認。

如果需要防反編譯,則勾選密碼保護密鑰文件,然後設置密碼(不設置密碼不影響DLL注冊到系統)。


7、DLL注冊

每次編譯之後都要重新注冊一次,以更新注冊信息,VS2019在生成(編譯)項目之後會自動注冊,這點非常方便。而VS2010及以前的版本需要手工操縱(其他版本沒用過)。

VS2010注冊步驟:

為了方便操作,搜索到regasm.exe,將其復制到DLL所在文件夾,然後按WIN+R鍵後輸入CMD打開命令窗口,

用CD命令定位到DLL所在文件夾輸入以下命令:

Regasm<項目名稱>.dll/tlb:<項目名稱>.tlb/codebase

其中<項目名稱>替換為你的項目名稱,也可以將命令編輯到BAT文件,這樣每次編譯之後執行bat即可。

到此為止大功告成,VBA中或其他編程環境就可以調用C#開發的組件對象了。

8、編寫類和介面代碼

要讓組件中的所有需要公開的資源可見,必須為其創建介面。見圖例

示例中定義了一個Class1的類,該類只有一個方法Link,用於拼接字元串,為了公開此類和方法,必須再定義一個介面。

(定義介面時有個簡單的方法,當你調試好類代碼之後,復制整個類代碼,然後將Class關鍵詞改為interface,然後去掉所有方法的修飾詞public以及實體代碼並補一個分號。)

最後生成完成編譯,編譯之後需要注冊以更新(VS2019會自動注冊)。

這里要說明的是,幾番測試發現,VS2019中不定義介面也能調用,只是無法使用點操作符顯示方法/屬性列表。


9、ExcelVBA中調用組件。

按alt+F11打開你的VBA項目,然後從菜單中打開引用,滾動到TestCom(或者是你的組件名)並勾選,如果沒找到回到VS檢查項目屬性是否設置正確。


10、在模塊中調用類庫。


懶得編輯插圖了,見我的博客園文章

C#組件項目設置與開發應用範例

Ⅲ 如何使用.NET開發全版本支持的Outlook插件產品

創建工程環境

有了以上的框架技術基礎,我們就可以來創建我們的第一個Outlook插件項目了,因為我現在用的是Office 2013,我們先做一個簡單的Outlook 2013插件好了。其實這個插件2010也能用,因為插件UI是用Ribbon。

我們先用「管理員身份」運行Visual Studio。因為我們開發的是一個COM類型的類庫,而這個類庫需要向注冊表注入一些鍵值,VS需要管理員身份才能自動完成這些操作。你問怎麼用管理員身份運行?在圖標上右鍵點擊,展開的菜單裡面就有。

然後我們創建一個「類庫」項目,我們起個項目名稱叫「TestOutlookAddin」,記得.NET的版本是3.5。隨後我們添加NetOffice相應3.5版本的以下dll文件引用:

extensibility.dll

NetOffice.dll

OfficeApi.dll

OutlookApi.dll

我們再調整解決方案的編譯環境,必須要有x86和x64兩種。因為插件是對Office版本敏感的,x64的Office只能載入x64編譯得到的插件dll,同樣的,x86版本Office也只能載入x86版本dll。

我們還要對項目進行屬性設置。

在「應用程序」標簽頁中,點擊「程序集信息…」,在打開的對話框中勾選「使程序集COM可見」。

在「生成」標簽頁中,勾選「為COM互操作注冊」。

在「調試」標簽頁中,將「啟動操作」勾選「啟動外部程序」,並且填入你機器上的Outlook.exe啟動路徑,在我的機器上,路徑如下:

C:\Program Files\Microsoft Office\Office15\OUTLOOK.EXE

修改完這個以後,我們先進入C:\Program Files\Microsoft Office\Office15\,也就是Outlook.exe的所在文件夾,看看有沒有outlook.exe.config文件。如果沒有這個文件,請創建這個文件,並在文件裡面寫入以下XML

xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v1.0.3705" />
<supportedRuntime version="v1.1.4322" />
<supportedRuntime version="v2.0.50727" />
startup>
configuration>
這個文件必須和Outlook.exe在同一個文件夾中。如果沒有這個文件,我們將無法進入調試狀態。我想沒有人能在不調試的情況下編寫一整個插件吧?

編寫樣例代碼

我們把環境的裝備工作做好了,下面就來編寫最簡單的插件。

我們先在項目中創建一個RibbonUI.xml,並把它的生成操作定義為「嵌入的資源」,內容如下:

xml version="1.0" encoding="utf-8" ?>
<customUI onLoad="LoadAction" xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
<ribbon>
<tabs>
<tab id="RibbonAddinSampleTabCS35" label="插件標簽">
<group id="group1" label="分組名">
<button id="customButton1" size="large" label="按鈕"/>
group>
tab>
tabs>
ribbon>
customUI>
對於Outlook 2007以上的版本來說,這個文件就是定義新增的菜單欄界面的。

然後再在項目中創建一個名為COMEntry的類,代碼如下:

using System.Runtime.InteropServices;
using NetOffice.OutlookApi.Tools;
using NetOffice.Tools;

namespace TestOutlookAddin
{
[COMAddin("Test Addin For Outlook", "", 3), CustomUI("TestOutlookAddin.RibbonUI.xml"), RegistryLocation(RegistrySaveLocation.CurrentUser)]
[Guid("AFE67651-951D-4A42-8CAB-E9BF7E219DDF"), ProgId("TestAddinForOutlook")]
public class COMEntry : COMAddin
{
}
}
其中COMAddin特性類聲明了一系列需要載入和插件初始化的信 息,它的參數有「插件在Outlook插件列表中的顯示名稱」,「插件在列表中的描述」,「啟動類型(3代表跟隨Outlook啟動而自動啟動)」。

CustomUI表示了剛才我們定義的RibbonUI.xml作為嵌入的資源的資源訪問路徑,這點對於有一定經驗的.NET開發人員一定不陌生。

RegistryLocation是定義了插件在注冊表中注冊到哪個根鍵值裡面去。我們知道現在Windows安裝文件都有「僅為我」和「所有人」安裝選項,這個特性也是為了區分它的。不過這個僅僅是在調試狀態下,因為發布的時候這個鍵值還是會由我們的安裝包來自行控制,所以不需要在這個地方做過多糾結。

好了,我們在VS按下F5調試查看一下效果吧

我們得到了一個新的標簽,標簽內部有個新的分組和空白的「按鈕」,滑鼠移到按鈕上,就會自動出現下面的彈出說明框。

在此,需要先進行一個聲明,下方的這個彈出說明框是可以自定義標題和內容的,但是最下方的插件名稱超鏈接和「詳細信息」是無法去掉的。微軟官方的解釋是:為了區分這個到底是一個第三方插件還是Outlook自身自帶的按鈕。因為他們擔心一些質量很差的插件影響了Outlook自身的行為,用戶還要怪罪到微軟頭上。因此他們就用這種方法來明顯區別插件和自身控制項了。

熱點內容
美發店認證 發布:2021-03-16 21:43:38 瀏覽:443
物業糾紛原因 發布:2021-03-16 21:42:46 瀏覽:474
全國著名不孕不育醫院 發布:2021-03-16 21:42:24 瀏覽:679
知名明星確診 發布:2021-03-16 21:42:04 瀏覽:14
ipad大專有用嗎 發布:2021-03-16 21:40:58 瀏覽:670
公務員協議班值得嗎 發布:2021-03-16 21:40:00 瀏覽:21
知名書店品牌 發布:2021-03-16 21:39:09 瀏覽:949
q雷授權碼在哪裡買 發布:2021-03-16 21:38:44 瀏覽:852
圖書天貓轉讓 發布:2021-03-16 21:38:26 瀏覽:707
寶寶水杯品牌 發布:2021-03-16 21:35:56 瀏覽:837