C#生成类库隐藏引用的dll,禁止外部调用

本文介绍了如何在C#中处理类库引用的问题,以隐藏引用的DLL,防止外部直接调用。通过生成强名称密钥文件、签名程序集、添加程序集到缓存及修改引用属性,可以实现只提供主类库A,隐藏并限制对B类库的直接访问。

C#生成类库隐藏引用的dll,禁止外部调用

场景

两个类库A和B,A引用了B,A生成时默认会在bin下生成A.dll,B.dll。

需求:将A提供给外部进行二次开发,但不希望B被看到并直接调用(通过A封装B以限制B的使用)。


解决方法

  • 生成密钥

    • 找到Sn.exe,我的是Win7 64位,在C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64下;

    • 打开cmd,进入该目录,cd C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64

    • cmd中执行sn -k keyfile.snk会在当前目录下生成密钥文件;

生成密钥文件

  • 签名程序集

    • 将keyfile.snk拷贝到类库B的目录下;

    • 打开B的属性,进入签名,勾选为程序集签名,选择强名称密钥文件,生成类库;

为程序集签名

  • 添加程序集到缓存:cmd中执行gacutil -i B.dll
    程序集添加到缓存
  • 修改引用属性:类库A添加类库B的引用,查看引用的属性,将复制本地修改为False,重新生成类库,bin下就只有一个A.dll了。
    在这里插入图片描述

参考资料

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值