惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
G
GRAHAM CLULEY
S
Securelist
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
Spread Privacy
Spread Privacy
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
T
Tailwind CSS Blog
博客园_首页
有赞技术团队
有赞技术团队
Simon Willison's Weblog
Simon Willison's Weblog
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Attack and Defense Labs
Attack and Defense Labs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
O
OpenAI News
J
Java Code Geeks
T
Tenable Blog
K
Kaspersky official blog
AWS News Blog
AWS News Blog
S
Security @ Cisco Blogs
The GitHub Blog
The GitHub Blog
T
Threatpost
月光博客
月光博客
H
Heimdal Security Blog
Security Latest
Security Latest
The Hacker News
The Hacker News
Y
Y Combinator Blog
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
C
Cisco Blogs
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
C
CERT Recently Published Vulnerability Notes
D
Docker
Google Online Security Blog
Google Online Security Blog
D
DataBreaches.Net
V
Visual Studio Blog
H
Help Net Security

博客园 - CodeBlove

SQL Server 重置SA密码语句 区分扫描枪输入和键盘输入的实现 VBA 发送邮件代码 WIN7用户文件夹迁移 3D空间基础概念之三:几何变换 IP地址排错命令 TCP/IP协议、DoD模型、OSI模型 IP寻址 IP报头包含的协议 IP报头结构 UDP数据报协议 TCP数据段格式 数据链路层(2层)数据帧结构 MAC地址结构 WOW 各等级属性换算表 基于OPENGL使用C++实现相机类 正则表达式匹配EXCEL地址字符串 清理SQLSERVER日志 DOTNET前台页面与数据表常规绑定机制分析
C#组件项目设置与开发应用范例
CodeBlove · 2011-08-06 · via 博客园 - CodeBlove

要想用.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、 Excel VBA中引用组件。

按alt+F11打开你的VBA项目,然后从菜单中打开引用,滚动到 TestCom(或者是你的组件名)并勾选,如果没找到回到VS检查项目属性是否设置正确。

 

10、      在模块中调用类库。

 

全文完