You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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中,步骤如下:

  1. 给类库强命名签名:Mono的GAC只接受带公钥签名的程序集,你可以用sn.exe生成密钥对,再编译时绑定签名:
    sn -k mykey.snk
    dmcs /target:library /keyfile:mykey.snk MyCommonLib.cs
    
  2. 安装到GAC:用gacutil工具完成全局注册,需要权限的话加sudo:
    sudo gacutil -i MyCommonLib.dll
    
    安装后类库会自动被放到/usr/lib/mono/gac/下的对应目录里。
  3. 直接调用类库:之后编译其他项目时,不用手动指定类库路径,代码里直接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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:48:16