当前位置:首页 » 注册证书 » 为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