Debian 9环境下Mono公共程序集位置及自定义类库部署咨询
Debian 9下Mono公共程序集位置与自定义类库部署指南
一、Mono自带公共程序集的存储位置
在Debian 9环境里,Mono默认的公共程序集(也就是全局程序集缓存GAC)主要存在两个核心路径:
/usr/lib/mono/gac/:绝大多数官方基础类库都在这里安家,比如System.dll、System.Core.dll这类常用组件,每个程序集会以「命名空间+版本号」的格式创建独立子目录存放。/usr/lib/mono/4.5/(或对应你使用的.NET框架版本目录):这里是特定.NET版本的程序集副本目录,方便编译器快速匹配对应版本的依赖,比如用dmcs编译.NET 4.5代码时,会优先从这里查找基础类库。
你可以用这条命令快速查看GAC里的所有程序集:
gacutil -l
二、自定义类库的部署与调用
如果想让自己的常用类库能通过命名空间直接调用,需要把它注册到Mono的GAC中,步骤如下:
- 给类库强命名签名:Mono的GAC只接受带公钥签名的程序集,你可以用
sn.exe生成密钥对,再编译时绑定签名:sn -k mykey.snk dmcs /target:library /keyfile:mykey.snk MyCommonLib.cs - 安装到GAC:用
gacutil工具完成全局注册,需要权限的话加sudo:
安装后类库会自动被放到sudo gacutil -i MyCommonLib.dll/usr/lib/mono/gac/下的对应目录里。 - 直接调用类库:之后编译其他项目时,不用手动指定类库路径,代码里直接
using 你的命名空间;即可,编译命令也可以简化为:dmcs MyProgram.cs -r:MyCommonLib
如果不想放到全局GAC,只想在本地项目复用,也可以建一个本地类库目录(比如~/my-mono-libs/),编译时通过参数指定路径:
dmcs MyProgram.cs -lib:~/my-mono-libs/ -r:MyCommonLib.dll
注意:Debian 9的Mono版本相对偏旧,操作GAC时如果遇到权限报错,记得加上
sudo执行命令。
内容的提问来源于stack exchange,提问作者Hussar
相关产品推荐
相关产品推荐

