现在准备发布一个 c#程序到 linux 要求客户机不安装新的依赖
已经安装 mono 的场合直接使用就可以 这没有问题
问题是没有 mono 的客户机 或者版本太低的机器
我希望在自己的程序下带一个 mono 的 runtime 然后用这个 mono 启动 c# 请问有没有什么好的解决方案 谢谢
1
beginor 2018-06-15 20:24:47 +08:00 via Android 1
既然是 Linux 了,最稳妥的应该是 docker 了。 先安装 mono runtime, 再根据需要添加依赖的 DLL 文件,这个过程会比较折腾。
不在意体积的话可以在 docker 中安装完整的 mono-devel。 |
2
a123321456b OP @beginor 我相信 docker 是一个不错的解决不同环境办法 但是...不太适合这个问题 因为问题会转变成 这次该怎么在我的发布中自带一个 docker
|
3
Rocka 2018-06-15 23:33:44 +08:00
不知道 AppImage 是否可行,这里只是提一个建议,并没有具体使用过 ...
|
4
beginor 2018-06-16 06:26:35 +08:00 via Android
@a123321456b 不用 docker 的话还可以考虑 flatpak 格式, 但是又必须要求客户端支持 flatpak,😂
就算你搞好了 portable 的 mono, 但它肯定依赖一些特定版本的本地库,而这些本地库对 linux 版本又有一些要求, 所以说 portable 的 mono 在 linux 上用的人很少。 Linux 版本太多太乱, 如果你能知道客户 linux 的版本, 这样才容易做出来。 mono 本身就是 portable 的, 很多人折腾 windows 版本的, 但是很少有人折腾 Linux 版本 |
5
beginor 2018-06-16 06:31:41 +08:00 via Android
@beginor mono 自带的 mkbundle, 就可以将 c# 程序直接打包成本地化的可执行程序, 自带 runtime,无需在客户计算机上安装 mono, 但是需要你指定客户计算机的系统和版本
|
6
a123321456b OP |