zoukankan      html  css  js  c++  java
  • 在 Ubuntu 10.10 操作系统中安装 Mono 2.8.2

    http://www.cnblogs.com/skyivben/archive/2011/01/07/1929427.html

    前言

    Ubuntu 10.10 自带了 Mono 2.6.7。而目前最新版本是 Mono 2.8.2。由于 Ubuntu 操作系统中的“阿贴便笺”等软件是用 C# 开发的,因此它们依赖于 Mono 。为了不破坏 Ubuntu 操作系统中这类软件,我们需要并行地安装 Mono 2.8.2,具体做法是安装到 /opt/mono-2.8.2 目录下。这样两个版本的 Mono 就可以共存了。

    准备工作

    先准备一下编译环境,使用如下的命令来安装:

    ben@ben-m4000t:~$ sudo apt-get install build-essential automake libtool mono-complete gendarme subversion libpng-dev libtiff-dev libgif-dev libjpeg-dev libexif-dev autoconf bison flex libcairo-dev libpango1.0-dev
    

    上面的 build-essential 软件包是基本的编译环境,包括 C/C++ 编译器。而 mono-complete 是 Mono 的编译环境,包括 C# 编译器。Ubuntu 操作系统默认安装的是 Mono 的运行环境,并不包括编译环境。你没有看错,我们想从源代码编译 Mono 2.8.2,先要安装一个操作系统默认提供的 Mono 编译环境,对于 Ubuntu 10.10 操作系统来说就是 Mono 2.6.7 的编译环境。Mono 的源代码核心部分是用 C/C++ 语言编写的,可能还有一部分是用汇编语言编写的。但是还有一大部分,比如 .NET Framework Base Class Library 之类的,是用 C# 语言编写的。所以说,从源代码编译高版本的 Mono,需要先安装低版本的 Mono。(这句话不正确,请参阅:从源代码编译 Mono 2.8.2 是否需要低版本的 Mono)

    从源代码编译 Mono 2.8.2

    现在让我们从 Mono 的源代码自己编译一个吧:

    ben@ben-m4000t:~$ cd src
    ben@ben-m4000t:~/src$ wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.2.tar.bz2
    --2011-01-07 10:02:49--  http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.2.tar.bz2
    正在解析主机 ftp.novell.com... 130.57.1.88
    正在连接 ftp.novell.com|130.57.1.88|:80... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度: 31292886 (30M) [application/x-bzip2]
    正在保存至: “mono-2.8.2.tar.bz2”
    
    100%[===========================>] 31,292,886  15.5K/s   花时 28m 14s
    
    2011-01-07 10:31:04 (18.0 KB/s) - 已保存 “mono-2.8.2.tar.bz2” [31292886/31292886])
    
    ben@ben-m4000t:~/src$ tar xjf mono-2.8.2.tar.bz2
    ben@ben-m4000t:~/src$ rm mono-2.8.2.tar.bz2
    ben@ben-m4000t:~/src$ cd mono-2.8.2
    ben@ben-m4000t:~/src/mono-2.8.2$ ./configure --prefix=/opt/mono-2.8.2
    
    ==========> 这里省略了一大堆输出 <==========
    
            mcs source:    mcs
            olive source:  
    
       Engine:
    	GC:	       sgen and bundled Boehm GC with typed GC and parallel mark
    	GLIB:	       embedded
    	TLS:           __thread
    	SIGALTSTACK:   yes
    	Engine:        Building and using the JIT
    	oprofile:      no
    	BigArrays:     no
    	DTrace:        no
    	Parallel Mark: yes
    	LLVM Back End: no (dynamically loaded: no)
    
        Libraries:
    	Moon Profile:  no
    	MonoTouch:     no
    	JNI support:   IKVM Native
    	libgdiplus:    assumed to be installed
    	zlib:          system zlib
    
    ben@ben-m4000t:~/src/mono-2.8.2$ make
    =====> 这里进行漫长的编译过程,并产生一大堆输出 <=====
    ben@ben-m4000t:~/src/mono-2.8.2$ sudo make install
    ===> 这里进行不那么漫长的安装过程,并产生一大堆输出 <===
    ben@ben-m4000t:~/src/mono-2.8.2$ 
    

    注意上面为编译配置环境时使用了 --prefix=/opt/mono-2.8.2 参数,这是并行安装的关键。如果省略这个参数,最后使用 make install 进行安装时就会覆盖掉原来的 Mono 2.6.7 版本。

    安装后的配置

    安装完毕后,可以添加一些快捷的命令:

    ben@ben-m4000t:~$ cd bin
    ben@ben-m4000t:~/bin$ cat dmcs
    exec /opt/mono-2.8.2/bin/dmcs "$@"
    ben@ben-m4000t:~/bin$ cat mono28
    exec /opt/mono-2.8.2/bin/mono "$@"
    

    上面的意思是说使用你自己喜欢的编辑器,比如 vim,或者 gedit,在 $HOME/bin 目录下建立快捷命令,以方便使用。命令的内容就如上所示。mono28 命令用来运行“Mono 2.8.2 运行时”本身,dmcs 用来运行 Mono 2.8.2 的 C# 4.0 编译器。注意 Mono 2.6.7 的 C# 编译器是 gmcs,而没有 dmcs,所以就不用写成 dmcs28 了。Mono 2.8.2 也有 C# 2.0 编译器,也叫 gmcs,如果需要的话,直接用 /opt/mono-2.8.2/bin/gmcs 运行好了。

    验证安装结果

    试运行一下:

    ben@ben-m4000t:~$ mono28 --version
    Mono JIT compiler version 2.8.2 (tarball 2011年 01月 07日 星期五 10:52:34 CST)
    Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
    	TLS:           __thread
    	SIGSEGV:       altstack
    	Notifications: epoll
    	Architecture:  amd64
    	Disabled:      none
    	Misc:          debugger softdebug 
    	LLVM:          supported, not enabled.
    	GC:            Included Boehm (with typed GC and Parallel Mark)
    ben@ben-m4000t:~$ dmcs --version
    Mono C# compiler version 2.8.2.0
    ben@ben-m4000t:~$ /opt/mono-2.8.2/bin/gmcs --version
    Mono C# compiler version 2.8.2.0
    

    检查一下 Ubuntu 10.10 自带的 mono 2.6.7:

    ben@ben-m4000t:~$ mono --version
    Mono JIT compiler version 2.6.7 (Debian 2.6.7-3ubuntu1)
    Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
    	TLS:           __thread
    	GC:            Included Boehm (with typed GC and Parallel Mark)
    	SIGSEGV:       altstack
    	Notifications: epoll
    	Architecture:  amd64
    	Disabled:      none
    ben@ben-m4000t:~$ gmcs --version
    Mono C# compiler version 2.6.7.0
    

    原来的 mono 并没有被我们破坏。

    实际应用

    让我们使用刚安装好的 Mono 2.8.2 来编译和运行一个 C# 程序吧:

    ben@ben-m4000t:~/work/AboutDialog$ dmcs @mak.rsp
    ben@ben-m4000t:~/work/AboutDialog$ mono28 AboutDialogTester.exe
    

    从上图可以看出,Mono 2.8.2 的运行环境是 CLR 4.0.30319.1,这和 Microsoft .NET Framework 4 RTM 的 CLR 版本是一致的。对了,这个 WinForm 程序的全部源代码可以在 通用的“关于本软件”对话框 中找到。

    使用 Ubuntu 10.10 操作系统自带的 Mono 2.6.7 来编译和运行这个 C# 程序:

    ben@ben-m4000t:~/work/AboutDialog$ gmcs @mak.rsp
    ben@ben-m4000t:~/work/AboutDialog$ ./AboutDialogTester.exe
    

    从上图中可以看到,Mono 2.6.7 的运行环境是 CLR 2.0.50727.1433,对应于 Microsoft .NET Framework 2.0 SP1 的 CLR 版本。请参阅“Microsoft .NET Framework 的版本”。

    磁盘占用

    我们来看看 Mono 2.8.2 这个软件包有多大吧:

    ben@ben-m4000t:~$ du -hs src/mono-2.8.2 /opt/mono-2.8.2
    917M	src/mono-2.8.2
    234M	/opt/mono-2.8.2
    

    可以看出,Mono 2.8.2 的源代码占用 917 MB 的磁盘空间。而编译好的 Mono 2.8.2 软件包占用 234 MB 的磁盘空间,比源代码小了很多。其实编译完成后,源代码就不需要了,可以用以下命令删除:

    ben@ben-m4000t:~$ rm -rf src/mono-2.8.2
    

    当然,如果你不在乎这点磁盘空间,或者想研究 Mono 2.8.2 的源代码,那就不用删除了。

    另外,编译后的 Mono 2.8.2 软件全部都位于 /opt/mono-2.8.2 目录下。如果以后安装了新的 Mono 版本,只要直接删除 /opt/mono-2.8.2 目录就行了。

    配置 Mono 2.8.2 运行环境

    我们还可以按如下的方法配置一个 Mono 2.8.2 的运行环境:

    ben@ben-m4000t:~$ cd bin
    ben@ben-m4000t:~/bin$ cat mono28-env
    #!/bin/bash
    MONO_PREFIX=/opt/mono-2.8.2
    export DYLD_LIBRARY_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH
    export C_INCLUDE_PATH=$MONO_PREFIX/include:$GNOME_PREFIX/include
    export ACLOCAL_PATH=$MONO_PREFIX/share/aclocal
    export PKG_CONFIG_PATH=$MONO_PREFIX/lib/pkgconfig
    PATH=$MONO_PREFIX/bin:$PATH
    PS1="[mono] \w @ "
    ben@ben-m4000t:~/bin$ chmod +x mono28-env
    

    这样,我们就可以按如下方法使用 Mono 2.8.2 运行环境了,有点像 Microsoft Visual Studio 2010 的命令行环境:

    ben@ben-m4000t:~$ . mono28-env
    [mono] ~ @ mono --version
    Mono JIT compiler version 2.8.2 (tarball 2011年 01月 07日 星期五 10:52:34 CST)
    Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
    	TLS:           __thread
    	SIGSEGV:       altstack
    	Notifications: epoll
    	Architecture:  amd64
    	Disabled:      none
    	Misc:          debugger softdebug 
    	LLVM:          supported, not enabled.
    	GC:            Included Boehm (with typed GC and Parallel Mark)
    [mono] ~ @ gmcs --version
    Mono C# compiler version 2.8.2.0
    [mono] ~ @ dmcs --version
    Mono C# compiler version 2.8.2.0
    [mono] ~ @ 
    

    注意上面第一行输入的是“. mono28-env”,也就是说是输入一个小数点后跟一个空格,然后才是“mono28-env”。也可以这么输入“source mono28-env”。不过能够少打几个字不是更好吗? :)

    进一步的话题

    这次我们仅安装了 Mono 2.8.2 本身,并没有安装配套的 libgdiplus、gtk-sharp、mod_mono、MonoDevelop 等其他相关的东东。如果有用到的话,也就会使用 Ubuntu 10.10 操作系统中默认安装的版本了。

    参考资料

    1. Mono Sources
    2. 在 Ubuntu 9.10 操作系统中安装 Mono 2.6
     
    分类: Linux
     
    10
    0
     
    (请您对文章做出评价)
     
    « 博主前一篇:在 Linux 操作系统中使用 Nginx 运行 ASP.NET 4
    » 博主后一篇:从源代码编译 Mono 2.8.2 是否需要低版本的 Mono
    posted on 2011-01-07 16:30 银河 阅读(3969) 评论(40) 编辑 收藏

     

    评论

    #1楼 2011-01-07 16:41 skylark
    不错,一直使用的是openSuse

    #2楼 2011-01-07 16:45 菩提树下的杨过
    真给力啊!

    #3楼[楼主] 2011-01-07 16:47 银河
    @skylark
    我是 Ubuntu 10.10 和 openSUSE 11.3 两种操作系统都有使用。
    还是 Ubuntu 用得多一些,openSUSE 一般是安装在 Oracle VM VirtualBox 中作为虚拟机中的操作系统使用。
    日常使用中,还是 Ubuntu 用起来更顺手。
    但是,如果要使用 Mono 最新版本的话,还是 openSUSE 更方便些。

    #4楼[楼主] 2011-01-07 16:48 银河
    @菩提树下的杨过
    谢谢支持! :)

    #5楼 2011-01-07 17:15 坤坤
    呵呵,我在mac os x下面安装了mono 2.8.2和mono develop。

    #6楼[楼主] 2011-01-07 17:25 银河
    @坤坤
    你也把安装过程写出来让我们学习学习。
    最好能有几张屏幕截图,好让大家参观一下 MacOS X 的漂亮画面。
    :)

    #7楼 2011-01-07 17:37 Jeffrey Zhao
    引用所以说,从源代码编译高版本的 Mono,需要先安装低版本的 Mono。

    这说法是不对的,完全可以从一台裸机上安装mono-2.8,编译时自然会先生成个C#编译器,再用它来编译Framework。其实你虽然是并行安装,但是编译mono 2.8的时候没有用到任何mono 2.6的东西。

    #8楼 2011-01-07 18:02 DiggingDeeply
    我的手机上装上了ubuntu,不知道能不能搞个mono,有时间等ubutun for hd2 发布了0.4,我试试看。

    #9楼[楼主] 2011-01-07 18:25 银河
    @Jeffrey Zhao
    是这样的吗?
    那么我准备试一下,先在虚拟机中安装一个干净的 Ubuntu 10.10 Srever 操作系统,然后看看不安装 mono-complete 软件包能否安装成功 Mono 2.8.2。

    #10楼[楼主] 2011-01-07 18:34 银河
    @DiggingDeeply
    你的手机很强大啊。 :)
    什么牌子的手机,内存多少?

    #11楼[楼主] 2011-01-07 18:36 银河
    @DiggingDeeply
    手机上的 Ubuntu 应该也自带 Mono 的运行时吧?是什么版本的 Mono?

    #12楼 2011-01-07 18:53 Jeffrey Zhao
    @银河
    放心我一直这么用……

    #13楼 2011-01-08 01:47 TYR
    昨天在CentOS5.5上配置MONO2.8.2,要配置的地方还是挺多的。

    不过总算搞掂了。(PS:离线安装的哦~~~~~~)

    网上的教程都有一些地方不太完整,也没解释清楚,期待博主的文章~~~~~

    #14楼[楼主] 2011-01-08 16:16 银河
    我测试了一下,确实不需要 mono-complete 软件就可以成功从源代码编译 Mono 2.8.2。
    请参阅:从源代码编译 Mono 2.8.2 是否需要低版本的 Mono

    #15楼[楼主] 2011-01-08 16:26 银河
    @TYR
    祝贺您。
    您也可以写一篇文章讲一下安装过程,给大家分享一下。

    #16楼 2011-01-12 10:54 书痕
    “阿贴便笺”改成用C#开发了?

    #17楼[楼主] 2011-01-12 11:48 银河
    @书痕
    在“阿贴便笺”的主页上有这么一句话:
    引用Tomboy is written in C# and utilizes the Mono runtime and Gtk#.

    你认为“阿贴便笺”是用什么语言开发的呢?

    #18楼 2011-01-13 08:45 书痕
    @银河
    阿,确实是基于mono的阿!可能是新版本这样吧。以前用Ubuntu7.04,到现在9.10都没装过mono,所以觉得不大会是基于mono的

    #19楼[楼主] 2011-01-13 08:53 银河
    @书痕
    我认为“阿贴便笺”一开始就是使用 C# 语言开发的。
    至于 Ubuntu 操作系统,一直都有自带 Mono Runtime,不用另外安装:
    引用Ubuntu Dapper (6.06 LTS): 1.1.13.6
    Ubuntu Hardy (8.04 LTS): 1.2.6
    Ubuntu Karmic (9.10): 2.4.2.3
    Ubuntu Lucid (10.04 LTS): 2.4 branch snapshot
    Ubuntu Maverick (10.10): 2.6.7
    Ubuntu Natty (11.04): 2.6.7

    请参见:Mono for Ubuntu

    #20楼 2011-01-13 09:44 书痕
    @银河
    还真是这样!看来是我少见多怪了。还要多谢你能耐心解释,呵呵!

    #21楼[楼主] 2011-01-13 09:48 银河
    @书痕
    不客气。 :)

    #22楼 2011-01-18 12:39 DiggingDeeply
    引用银河:
    @DiggingDeeply
    你的手机很强大啊。 :)
    什么牌子的手机,内存多少?

    ==============================
    HTC HD2 RAM+ROM 576MB+512MB

    #23楼[楼主] 2011-01-18 17:32 银河
    @DiggingDeeply
    的确很强大。
    我的 dopod S1 plus 的 RAM+ROM 是 128MB+256MB。

    #24楼[楼主] 2011-01-23 11:13 银河
    刚才在网上偶尔发现一个相关的好东东:Parallel Mono Environments

    #25楼[楼主] 2011-02-05 09:27 银河

    #26楼 2011-03-17 23:02 (张超)
    博主
    我遇到一个问题 试了很多遍都不行
    编译时报
    make[6]: gmcs: Command not found
    然后提示
    *** You may want to try 'make get-monolite-latest'
    按照提示操作后
    我在make编译 还是出错和上面的错误信息一样,感觉按照提示信息操作了也没有效果
    我该怎么办
    我用的是redhat 虚拟机

    错误如下
    Entering directory `/mymono/mono-2/mcs'
    make[6]: Entering directory `/mymono/mono-2/mcs'
    make[6]: gmcs: Command not found
    make[6]: *** [build/deps/basic-profile-check.exe] Error 127
    make[6]: Leaving directory `/mymono/mono-2/mcs'
    make[6]: Entering directory `/mymono/mono-2/mcs'
    *** The compiler 'gmcs' doesn't appear to be usable.
    *** Trying the 'monolite' directory.
    make[7]: Entering directory `/mymono/mono-2/mcs'
    make[8]: Entering directory `/mymono/mono-2/mcs'
    * Assertion at mini-exceptions.c:1857, condition `staddr' not met

    make[8]: *** [build/deps/basic-profile-check.exe] 已放弃
    make[8]: Leaving directory `/mymono/mono-2/mcs'
    make[8]: Entering directory `/mymono/mono-2/mcs'
    *** The contents of your 'monolite' directory may be out-of-date
    *** You may want to try 'make get-monolite-latest'
    make[8]: *** [do-profile-check-monolite] Error 1
    make[8]: Leaving directory `/mymono/mono-2/mcs'
    make[7]: *** [do-profile-check] Error 2
    make[7]: Leaving directory `/mymono/mono-2/mcs'
    make[6]: *** [do-profile-check-monolite] Error 2
    make[6]: Leaving directory `/mymono/mono-2/mcs'
    make[5]: *** [do-profile-check] Error 2
    make[5]: Leaving directory `/mymono/mono-2/mcs'
    make[4]: *** [profile-do--basic--all] Error 2
    make[4]: Leaving directory `/mymono/mono-2/mcs'
    make[3]: *** [profiles-do--all] Error 2
    make[3]: Leaving directory `/mymono/mono-2/mcs'
    make[2]: *** [all-local] Error 2
    make[2]: Leaving directory `/mymono/mono-2/runtime'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/mymono/mono-2'
    make: *** [all] Error 2
    [root@localhost mono-2]#

    #27楼[楼主] 2011-03-18 07:49 银河
    @(张超)
    你需要先执行以下命令:
    ./configure --prefix=/opt/mono-2.8.2

    #28楼[楼主] 2011-03-18 07:51 银河
    @(张超)
    另外,目前 Mono 的最新版本是 2.10.1,你可以把正文凡是出现 2.8.2 的地方都替换为 2.10.1,以便安装 Mono 2.10.1。

    #29楼 2011-06-19 03:21 eflay
    能运行于2.6.7的不一定能运行于2.8.2么??。。

    #30楼 2011-10-27 11:08 JimLiu
    悲剧了,我的VPS内存不够,make失败

    #31楼 2011-11-05 12:26 xiapandi
    楼主你好,我是新手。请问
    ben@ben-m4000t:~$ cd src
    ben@ben-m4000t:~/src$ wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.2.tar.bz2
    这里的 cd src是在在哪里啊?我执行完上一步后,cd src,提示没有文件或目录,后来我就自己在主目录下建了一个src文件夹进行下面的操作,在这里下载失败了,我就将windows中下载的压缩包拷到我自己建的src中,进行后序操作,安装完后,进行配置
    ben@ben-m4000t:~$ cd bin
    ben@ben-m4000t:~/bin$ cat dmcs
    exec /opt/mono-2.8.2/bin/dmcs "$@"
    ben@ben-m4000t:~/bin$ cat mono28
    exec /opt/mono-2.8.2/bin/mono "$@"
    这里又找不到bin,后面不知道该怎么办了?
    我是用wine运行winform的.exe文件,运行后,提示:Install the Windows version of Mono to run .NET executables

    #32楼[楼主] 2011-11-05 16:23 银河
    @xiapandi
    1. 上述 src 的确是在我的 HOME 目录自己用 mkdir 命令建立的目录。
    2. 使用上述 wget 命令应该可以可以下载的。目前为止 Mono 最新版本是 2.10.6,推荐使用
    wget http://download.mono-project.com/sources/mono/mono-2.10.6.tar.bz2
    命令下载。
    3. 上述 bin 目录也是我的 HOME 目录的一个子目录,Linux 操作系统应该默认已经有这个目录了。如果没有也可以自己用 mkdir 目录创建一个。并且把她加入到 PATH 环境变量中。
    4. 在 Linux 操作系统中就可以直接运行 WinForm 的 .exe 文件。可以使用 mono prog.exe 命令运行,也可以使用 ./prog.exe 命令运行。
    5. 如果要使用 wine 运行,需要到 http://www.go-mono.com/mono-downloads/download.html 下载并安装 Windows 版本的 Mono,或者到微软网站下载并安装 .NET Framework 运行库。
    6. Ubuntu 11.10 已经自带 Mono 2.10.5 运行库了。如需 Mono 2.10.5 SDK,可以使用 sudo apt-get install mono-devel 命令安装。

    #33楼 2011-11-05 18:16 xiapandi
    @银河
    原来我把wine和mono的使用都混在一起,看了楼主的指教,都理清了,谢谢!现在我根据楼主提供的网址,下载了Windows 版本的 Mono,现在wine client.exe可以运行了,但是里面的文字都是方框,请问楼主,这个问题怎么解决?(我用的是Ubuntu10.10)

    #34楼 2011-11-06 18:53 xiapandi
    请问,如何将bin加入到 PATH 环境变量中

    #35楼 2011-11-06 18:58 xiapandi
    @银河
    为了将bin加入到 PATH 环境变量中,试了下面的办法,
    为单一用户:打开用户主目录下的.bashrc,在这个文件中加入export PATH=”$PATH:/your path1/:/your path2/…..”重启或注销就好了。
    全局设置:在/etc/profile中增加 PATH="$PATH:/home/zhengb66/bin" export PATH
    这两种方法试了后,都说权限不够,切换到root,还是提醒权限不够

    #36楼[楼主] 2011-11-06 20:07 银河
    @xiapandi
    1. 中文方块问题请参阅:
    http://wiki.ubuntu.org.cn/Qref/More#.E4.B8.AD.E6.96.87.E6.96.B9.E5.9D.97.E9.97.AE.E9.A2.98
    要点是修改 /etc/fonts/conf.d/49-sansserif.conf 文件。
    2. 将 bin 目录加入到 PATH 环境变量中的方法就正如您在 35 楼中所说的那样。在我的机器上不会有权限不够的问题。

    #37楼 2011-11-06 20:34 xiapandi
    中文方块问题,我参照您给的网址上的方法操作了,用wine运行winform的Client.exe还是显示方框,情况如下:
    ych@ubuntu:~$ wine Client.exe
    fixme:msvcrt:_setmbcp trail bytes data not available for DBCS codepage 0 - assuming all bytes

    #38楼[楼主] 2011-11-06 20:56 银河
    @xiapandi
    修改 49-sansserif.conf 文件可以解决 Ubuntu 系统中的中文方块问题。wine 我没有使用过,不知道如何解决 wine 中的中文方块问题。

    #39楼 2011-11-06 20:58 xiapandi
    恩,还是要感谢楼主给我的帮助,获益匪浅!

    #40楼 2011-11-10 13:54 边城浪
    对于.NET跨平台来说,本文很有帮助,~
  • 相关阅读:
    SQLZOO:SELECT from WORLD Tutorial
    Spyder——小技巧+快捷键
    JDK国内镜像
    debian 安装 plymouth 美化开机动画
    docker 国内镜像加速
    有关npm镜像加速的问题 yarn nvm yrm
    调整vscode工具栏侧边栏字体大小
    github的淘宝代理?
    fcitx5 主题设置
    debian testing安装qemu-kvm和virt-manager
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/dfdfdf.html
Copyright © 2011-2022 走看看