精华内容
下载资源
问答
  • public partial class Index : System.Web.UI.Page { protected override ...(System.Data.DataTable).AssemblyQualifiedName);...在win上正常,在mono为空,,因为,,mono要传入AssemblyQualifiedName
    	public partial class Index : System.Web.UI.Page
    	{
    		protected override void OnLoad(EventArgs e)
    		{
    			Response.Write(typeof(System.Data.DataTable).AssemblyQualifiedName);
    			Response.Write("<br/>");
    
    			Response.Write(typeof(System.Data.DataTable).FullName);
    			Response.Write("<br/>");
    
    			Response.Write(typeof(System.Data.DataTable).Namespace);
    			Response.Write("<br/>");
    
    			Response.Write("1" +Type.GetType("System.String"));
    			Response.Write("<br/>");
    
    			Response.Write(Type.GetType("System.Data.DataTable, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"));
    			Response.Write("<br/>");
    			Response.Write(Type.GetType(typeof(System.Data.DataTable).Name + ",System.Data"));
    			Response.Write("<br/>");
    			Response.Write("hello");
    			base.OnLoad(e);
    		}
    	}
    

    在win上正常,在mono上为空,,因为,,mono要传入AssemblyQualifiedName

    展开全文
  • Hello Mono

    千次阅读 2010-09-14 15:27:00
    Hello Mono

    本章内容

     

    ü         Mono命令

    ü         Hello Mono

    ü         Mono的开发工具

    ü         Mono中文问题

     

    3.1 Mono命令

    正确安装Mono之后,就可以使用monoC#编译器mcs编译cs文件了。Mono一般有以下的工具:

    monomono JIT编译器,运行mono程序

    mcsc#编译器

    gmcs:符合C#2.0规范的编译器,正在实现中

    mbasbasic编译器

    MonoDevelopMono IDE开发工具

    monodoc:帮助文件查看工具

    mintMono解释器(Interpreter),以解释的形式运行mono程序

    ilasmMono汇编程序

    monodisMono反汇编器

    al:程序集链接器

    cert2spc:发行者证书测试工具

    certmgr:证书管理器工具管理证书、证书信任列表和证书吊销列表

    chktrust:证书验证工具检查用 Authenticode 证书签名的文件的有效性

    cilcMono CIL2Cbinding产生器,可以为配件产生c的接口

    discoWeb 服务发现工具

    gacutil:全局程序集缓存工具可以查看和操作全局程序集缓存

    genxsMono XML序列化产生器

    makecert:证书创建工具

    monograph:显示配件的调用关系和类型层次结构

    monopMono 类大纲查看器

    monoresgenMono资源产生器

    resgenIL资源产生工具

    secutil:从程序集提取 X.509 证书的强名称信息或公钥

    setreg:设置注册表工具使您得以更改公钥密码的注册表设置

    signcode:文件签名工具使用

    sn:强名称工具有助于使用强名称对程序集进行签名

    soapsuds:编译使用Remote XML Web services 通信的客户端应用程序

    sqlsharpsql命令行交互式工具

    wsdlWeb 服务描述语言工具

    xsdXML 架构定义工具

     

    最常用的是mcsmonogacutil

    mcs的语法

           mcs [参数] 源文件

    参数可以使用-option或者/option的方式。

           参数:

             --about 显示c#编译器的信息

             -checked[+][-]指定溢出数据类型边界的整数算法是否将在运行时导致异常。

             -codepage:ID指定编译中的所有源代码文件所使用的代码页

             -clscheck[+][-] 禁止编译器依附关系检查

             -define:S1[;S2] 定义一个或多个符号,可以简写为/d

             -debug[+][-] 产生调试信息

             -delaysign[+][-] 仅仅将公钥插入到配件中,并不进行签名

             -doc:File 产生XML文档,利用ndoc工具可以产生类似MSDN的文档

             -g 产生调试信息

             -keycontainer:NAME 指定用来强命名(strongname)配件的密钥对

             -keyfile:FILE 指定用来强命名的密钥文件

             -lib:PATH1,PATH2 增加配件链接的路径

             -main:class 指定入口点(entry point),也就是缺省可执行的那个类

             -noconfig[+][-] 不使用默认的参考编译,和微软的csc/noconfig对应

             -nostdlib[+][-] 不导入标准库

             -nowarn:W1[,W2] 显示一个或者多个警告信息

             -out:FNAME 指定输出文件名

             -pkg:P1[;P2] 引用包P1…P2

             --expect-error X 期望抛出X异常

             -resurce:SPEC搜索指定目录中要编译的源文件

             -reference:ASS 编译时引用ASS配件

             -target:KIND  编译输出类型,可以是exewinexeliberarymodule

             -unsafe[+][-] 编译使用 unsafe 关键字的代码

             -warnaserror[+][-] 将警告作为错误对待

             -warn:LEVEL 警告等级,最高是4,缺省是2

             -help2 获得更多帮助信息

             -linkresource:FILE[,ID] 链接一个资源文件

             -resource:FILE[,ID] 嵌入一个资源文件

             -win32res:FILE 链接一个win32资源文件

             -win32icon:FILE 指定图标

             @FILE指定响应文件,文件列出了编译器选项或要编译的源代码文件的文件

     

    mono的语法

           mono [参数] 配件

           参数如下:

             --compile METHOD 只编译配件中指定的方法

             --ncompile N 编译此方法的次数,缺省是1

             --regression 运行纠正测试

             --print vtable 输出所有用到的类的vtable

             --trace[=EXPR] 允许跟踪

             --compile-all 编译配件中所有的方法

             --breakonex 在异常上插入一个断点

             --break METHOD 在方法的入口上插入一个断点

             --debug 允许调试

             --stats 输出JIT操作的统计信息

             --statfile FILE 设置统计文件

             --aot 将配件编译成本地程序

             --profile[=profiler]  指定profiler

             --graph[=TYPE] METHOD 画一图形(cfgdtreecodessaoptcode

             --config FILE 指定Mono的配置文件

             --verbose显示更详细消息

             --help 帮助信息

             --version 显示版本信息

             --optimize=OPT 性能优化

     

    gacutil的用法

           gacutil [命令] [参数]

           命令如下:

    -i <assembly_path> [-check_refs] [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

            安装配件到全局程序缓存中

            <assembly_path> 配件所在路径,配件钥包含配件清单(manifast)

                      例如: -i myDll.dll

             -il <assembly_list_file> [-check_refs] [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

            安装多个配件到全局程序缓存中

            <assembly_list_file> 一个文件,包含要增加的配件列表

            例如:-il assembly_list.txt

                    assembly_list.txt 的内容:

                    assembly1.dll

                    assembly2.dll

             -u <assembly_display_name> [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

            从全局程序缓存中卸载指定配件

            <assembly_display_name> 配件名称或者配件的部分名称,如果是部分名称,所有符合这个名称的配件都会被卸载

            例如 -u myDll,Version=1.2.1.0

     

    -ul <assembly_list_file> [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

           从全局程序缓存中卸载配件

            <assembly_list_file>包含配件列表的文件名

            例如: -ul assembly_list.txt

                    assembly_list.txt的内容

                assembly1,Version=1.0.0.0,Culture=en,PublicKeyToken=0123456789abcdef

                    assembly2,Version=2.0.0.0,Culture=en,PublicKeyToken=0123456789abcdef

     

    -us <assembly_path> [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

            从全局程序缓存中卸载配件

            <assembly path>配件所在路径

            Example: -us myDll.dll

     

    -l [assembly_name] [-root ROOTDIR] [-gacdir GACDIR]

            列出全局程序缓存中所有的配件

            如果指定 <assembly_name>参数,将只显示符合参数的配件

     

    -?

            显示帮助信息

     

             参数如下:

             -package <NAME>

            用来在 prefix/lib/mono 目录下增加一个名为NAME的目录,然后增加一个从 NAME/assembly_name 到全局程序缓存中的配件的一个链接

           

    -gacdir <GACDIR>

            指定全局程序缓存的目录,如果不是标准的全局程序缓存目录,将使用MONO_GAC_PATH环境变量来引用配件。

     

    -root <ROOTDIR>

           用来集成automake工具

     

    -check_refs

            检查将要导入的配件不被任何未强命名的配件引用

     

    -f

            Mono gacut不考虑兼容性,gacutil总强行安装新配件

     

    -r <reference_scheme> <reference_id> <description>

            Mono gacutil 并没有实现跟踪引用,当这个参数使用时,或发出一个警告信息

            

           其它工具基本可以使用 –help参数来了解其使用方法。

     

    3.2 Hello Mono

    做了这么多准备工作,现在是进入我们的HelloMono的时候了。利用文本编辑工具输入下面的代码,保存为HelloMono.cs文件。

             using System;

             namespace Kuaff.MonoGuide.Ch2

    {

                      public class HelloMono

    {

                                public static void Main(string[] args)

    {

                                         Console.WriteLine(“Hello Mono!”);

    }

    }

    }

     

    在终端中进入文件所在目录,输入mcs HelloMono.cs,则编译生成HelloMono.exe文件。

           在终端中输入mono helloMono.exe,则会看到“Hello Mono!”出现。

          

     

    3.3 Mono开发工具

    Windows下,你可以采用开源的#develop IDE开发工具编写Mono程序。在Linux操作系统上,你可以使用MonoDevelopeclipse进行开发。当然,你也可以使用一般的文本编辑工具如EmacsKWriteKeditKate等编写csharp文件,然后利用mcs工具进行编辑。

    MonoDevelop

    在终端中输入MonoDevelop

     

    3.3.1 MonoDevelop启动画面

    目前这个MonoDevelop功能还不能说是强大,但是相对来说,对编写c#程序很有帮助。

    Ø         Mono发布的一款IDE工具

    Ø         以工程的方式组织C#文件

    Ø         插件式设计,随着大家对这款开发工具的熟悉,越来越多的插件会发布出来,它的功能也会越来越强大

    Ø         多模板设计,可以开发控制台程序、C#类库、GTK#GNOME#Glade#、ILasmjavaWebServicesMonoDevelop插件等程序

    Ø         集成帮助信息

    Ø         语法加亮、代码自动提示

    ……

    当然,目前MonoDevelop还有很多功能还不完善,如没有界面设计工具(没办法、Windows.Form还没实现)、首选项还很简单、没有集成NAntNUnit等工具。

     

    3.3.2 MonoDevelop开发工具

    后面的章节的例子都是在MonoDevelop上开发的。

    菜单:

    File菜单

    New File:新建一个文件,这里按照解决方案的不同进行了分类。

           C#:支持SessionWebServices   C# WebServices、空C#文件、

                  Gnome#程序、GtkWindow

           Java:空java文件、AWT小应用程序、AWT程序、AWT对话框、

                  AWT FrameAWT OK对话框、AWT面板

           Misc:空白HTML文件、空白资源文件、空白文本文件、空白XML

                         文件

           MonoDevelop:简单MonoDevelop菜单命令、MonoDevelop Pad

                  简单MonoDevelop视图、简单MonoDevelop命令

           Nemerle:空白Nemerle文件

    New Solution/Project:新建一个解决方案、工程。按照工程不同页进行了分类。

           C#:控制台工程、空的工程、Glade#工程、Gnome#工程、

                  Gtk#工程、C#类库

           ILAsmILAsm控制台工程

           Java:空的java工程、IKVM控制台工程、IKVM Gtk#工程、

    java控制台工程

           MonoDevelop:一个空的工程

           Nemerle:一个空的Nemerle工程

    Open:打开文件

    Close File:关闭文件

    Close Solution:关闭解决方案、工程

    Save:保存

    Save as:保存为

    Save All:保存所有

    Import VS Project:从Visula Studio.net工程导入

    Recent Files:最新打开的文件

    Recent Solutions:最新打开的工程

    Quit:退出

     

    Edit菜单

    Undo:撤销

    Redo:恢复刚才操作

    Cut:剪切

    Copy:复制

    Paste:粘贴

    Delete:删除

    Select All:选择全部

    Word Count:字数统计

    Preference:首选项,可以定制自己的偏爱

     

    View菜单

    Solution:显示解决方案视图

    Classes:显示类视图

    Files:显示文件视图

    Task List:显示任务列表视图

    Help:显示帮助视图

    Output:显示输出视图

    Layout:布局,可以将目前的视图设置保存为一种布局

    Full Screen:全屏显示MonoDevelop

     

    Run菜单

    Compile:编译

    Compile All:编译全部

    Run:运行,

     

    Search菜单

    Find:查找

    Find Next:查找下一个

    Replace:替换

    Find In Files:多文件查找

    Replace In Files:多文件替换

    Toggle Bookmark:增加书签

    Previous Bookmark:前一个书签

    Next Bookmark:后一个书签

    Clear Bookmark:清除书签

    Goto Line:转到行

    Goto Matching Brace:转到对应的括号

     

    Window菜单

    Next Window:下一个窗口

    Previous Window:前一个窗口

    Close All:关闭所有窗口

     

    Help菜单

    Tip of the Day:每日提示

    Web:查看联机文档

    About:开发者以及版权信息

    以下是对菜单对应的工具栏

    增加引用的部件

    在我们使用visual studio.net的时候,当我们需要引用第三方的配件的时候,需要将其加入到引用中,在MonoDevelop也要这样做,这样在编译程序的时候,就告诉了mcs需要使用-r参数将引用包含进来,否则编译的时候会出错。

    在你的C#工程的解决方案视图中,选择Reference,点击右键,选择Edit Reference,会弹出对话框。

     

     

     

    在弹出对话框中有三个标签卡(Tab),分别显示全局程序缓存中的配件、工程已经引用的配件以及其他配件。

     

    在全局程序缓存中,列出当GAC中所有的配件,你可以根据需要选、删所需的配件,在Project标签卡上,显示出当前的引用,你可以在这里删除不需要的引用。在第三个标签卡中,你可以选择第三方的配件,如SharpZipLib.dll等,这些配件不一定加入到全局程序缓存中。

    Eclipse

           EclipseIBM捐献出的一款极棒的开发工具,我主要使用它开发java程序。它的插件机制使它不仅仅成为一款和JBuilder相媲美的工具,许多公司和开发还在其上开发了大量的插件,可以用它来设计UML、其他开发语言,现在推出的富客户端技术将使它成为工具的载体,你可以在上面开发类似photoshop一样的工具。它的C#插件可以用来编辑C#文件,这是improve发布的插件。

           如果要运行,你需要安装JDK,可以到http://java.sun.com区下载一个JDK1.4.2的安装包,有针对各平台的版本。到http://www.eclipse.org下载Eclipse 3.0或者3.1的版本,按照说明安装。

     

    3.3.3 Eclipse开发工具

    读者不要期望C#插件能有java插件那么强大的功能。这个C#插件并不是Eclipse的官方插件,使用起来不尽人意,在介绍的过程中会提到,但是C#插件本可以做的和java插件一样好。将C#插件安装到Eclipse的插件目录。

           启动Eclipse,在菜单中选择新建一个工程,会显示工程向导。这里有java工程的向导、插件开发向导等,本可以做一个C#的向导,进入C#的透视图,但是这个插件没有提供这个功能。所以我们选择简单工程(Simple>Project)

     

     

     

    3.3.4 新建工程

           选择下一步,输入项目名称和项目的保存目录。

     

    3.3.5 保存项目

    完成后Eclipse将显示资源透视图。新建一个C#文件。在菜单中选择

    File>New>Other,启动向导,选择C#>C#文件。

     

    3.3.6 新建一个C#文件

           输入文件名HelloEclipse.cs,保存文件。在编辑器中可以修改生成的C#文件。HelloEclipse.cs文件的代码如下:

             using System;

             namespace Kuaff.MonoGuide.Ch3 {

                      Class HelloEclipse {

                                Public static void Main() {

                                         Console.WriteLine(“Hello Eclipse!”);

                                }

                       }

             }

    如果要编译这个文件,还需在首选项里设置Mono编译器mcs的文件,打开首先项:

     

    3.3.6 设置mcs编译器

    一旦设置,修改完毕C#文件,保存的时候自动编译此文件。这时在工程目录下生成了HelloEclipse.exe文件。

           打开终端,进入工程所在目录,执行mono HelloEclipse.exe,将会输出“Hello Eclipse!”。

     

    3.3.7 执行HelloEclipse.exe程序

           在这个c#插件中无法引用其他的配件。修改一下我们前面的代码:

             using System;

    using Gtk;

             namespace Kuaff.MonoGuide.Ch3 {

                       Class HelloEclipse {

                                Public static void Main() {

                                         Console.WriteLine(“Hello Eclipse!”);

                                }

                       }

             }

           简单增加一个对Gtk配件的引用,编译的时候就会出错。这是因为这个插件在编译的时候没有增加对gtk#配件的引用。

           我们期待有更好更多的工具出现。

    展开全文
  • unity mono编译

    2021-03-24 15:22:41
    window虚拟机:VMware Workstation (下载)linux环境:Ubuntu 18.04.4 LTS (网易镜像下载)Mono版本:mono-unity-2019.4-mbe(下载)ndk版本:android-ndk-r16b-linux-x86_64(下载) 编译: 1、卸载旧版本mono...

    window虚拟机:VMware Workstation (下载)
    linux环境:Ubuntu 18.04.4 LTS (网易镜像下载)
    Mono版本:mono-unity-2019.4-mbe(下载) 
    ndk版本:android-ndk-r16b-linux-x86_64(下载)

    编译:
        1、卸载旧版本mono编译环境
            sudo apt-get --purge remove mono-runtime
            sudo apt-get autoremove
            
        2、安装新版本mono编译环境 (国内镜像安装)
            
            sudo apt install gnupg ca-certificates
            sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
            echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

            sudo apt update
            sudo apt install mono-devel 
        
        3、安装必要的工具
            apt-get install autoconf  automake  libtool  libtool-bin  git  cmake  python
        
        4、cd到mono根目录(mono-unity-2019.4-mbe解压出来的所在目录)
            ./qutogent.sh
            ./make
            
        5、到mono/external/buildscripts目录下
            1)修改build.pl 中 my $existingMonoRootPath='/usr/lib/mono'
            2)将ndk解压到下面的路径:artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b
            3)检查extrnal目录下的bgwgc、boringssl、roslyn-binaries是否是空的,如果是就到主干上单独下载,然后放到对应的目录内
            4)./build_runtime_android.sh
            
        6、编译出来的 libmonobdwgc-2.0.so 是debug版本 (PS:我是把编译处理的android文件夹拷贝到桌面 /home/admin/Desktop )
            1) 处理armv7 release版 cd 到ndk目录
                artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b/arm-linux-androideabi-clang/bin
                ./arm-linux-androideabi-strip /home/admin/Desktop/android/armv7a/libmonobdwgc-2.0.so
                
            2) 1) 处理x86 release版 cd 到ndk目录
                artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b/i686-linux-androideabi-clang/bin
                ./i686-linux-androideabi-strip /home/admin/Desktop/android/x86/libmonobdwgc-2.0.so

    展开全文
  • Mono案例--Hello Mono

    千次阅读 2007-07-10 10:10:00
    3 Hello Mono 本章内容 ü Mono命令 ü Hello Mono ü Mono的开发工具 ü Mono中文问题 3.1 Mono命令 正确安装Mono之后,就可以使用mono的C#编译器mcs编译cs文件了。Mono一般有以下的工具: monomono 的JIT编译器...
    3 
    

    Hello Mono

    本章内容



    ü Mono命令

    ü Hello Mono

    ü Mono的开发工具

    ü Mono中文问题



    3.1 Mono命令

    正确安装Mono之后,就可以使用mono的C#编译器mcs编译cs文件了。Mono一般有以下的工具:

    mono:mono 的JIT编译器,运行mono程序

    mcs:c#编译器

    gmcs:符合C#2.0规范的编译器,正在实现中

    mbas:basic编译器

    MonoDevelop:Mono IDE开发工具

    monodoc:帮助文件查看工具

    mint:Mono解释器(Interpreter),以解释的形式运行mono程序

    ilasm:Mono汇编程序

    monodis:Mono反汇编器

    al:程序集链接器

    cert2spc:发行者证书测试工具

    certmgr:证书管理器工具管理证书、证书信任列表和证书吊销列表

    chktrust:证书验证工具检查用 Authenticode 证书签名的文件的有效性

    cilc:Mono CIL2C的binding产生器,可以为配件产生c的接口

    disco:Web 服务发现工具

    gacutil:全局程序集缓存工具可以查看和操作全局程序集缓存

    genxs:Mono XML序列化产生器

    makecert:证书创建工具

    monograph:显示配件的调用关系和类型层次结构

    monop:Mono 类大纲查看器

    monoresgen:Mono资源产生器

    resgen:IL资源产生工具

    secutil:从程序集提取 X.509 证书的强名称信息或公钥

    setreg:设置注册表工具使您得以更改公钥密码的注册表设置

    signcode:文件签名工具使用

    sn:强名称工具有助于使用强名称对程序集进行签名

    soapsuds:编译使用Remote与 XML Web services 通信的客户端应用程序

    sqlsharp:sql命令行交互式工具

    wsdl:Web 服务描述语言工具

    xsd:XML 架构定义工具



    最常用的是mcs、mono和gacutil。

    mcs的语法

    mcs [参数] 源文件

    参数可以使用-option或者/option的方式。

    参数:

    --about 显示c#编译器的信息

    -checked[+][-]指定溢出数据类型边界的整数算法是否将在运行时导致异常。

    -codepage:ID指定编译中的所有源代码文件所使用的代码页

    -clscheck[+][-] 禁止编译器依附关系检查

    -define:S1[;S2] 定义一个或多个符号,可以简写为/d

    -debug[+][-] 产生调试信息

    -delaysign[+][-] 仅仅将公钥插入到配件中,并不进行签名

    -doc:File 产生XML文档,利用ndoc工具可以产生类似MSDN的文档

    -g 产生调试信息

    -keycontainer:NAME 指定用来强命名(strongname)配件的密钥对

    -keyfile:FILE 指定用来强命名的密钥文件

    -lib:PATH1,PATH2 增加配件链接的路径

    -main:class 指定入口点(entry point),也就是缺省可执行的那个类

    -noconfig[+][-] 不使用默认的参考编译,和微软的csc的/noconfig对应

    -nostdlib[+][-] 不导入标准库

    -nowarn:W1[,W2] 显示一个或者多个警告信息

    -out:FNAME 指定输出文件名

    -pkg:P1[;P2] 引用包P1…P2

    --expect-error X 期望抛出X异常

    -resurce:SPEC搜索指定目录中要编译的源文件

    -reference:ASS 编译时引用ASS配件

    -target:KIND 编译输出类型,可以是exe、winexe、liberary和module

    -unsafe[+][-] 编译使用 unsafe 关键字的代码

    -warnaserror[+][-] 将警告作为错误对待

    -warn:LEVEL 警告等级,最高是4,缺省是2

    -help2 获得更多帮助信息

    -linkresource:FILE[,ID] 链接一个资源文件

    -resource:FILE[,ID] 嵌入一个资源文件

    -win32res:FILE 链接一个win32资源文件

    -win32icon:FILE 指定图标

    @FILE指定响应文件,文件列出了编译器选项或要编译的源代码文件的文件



    mono的语法

    mono [参数] 配件

    参数如下:

    --compile METHOD 只编译配件中指定的方法

    --ncompile N 编译此方法的次数,缺省是1

    --regression 运行纠正测试

    --print vtable 输出所有用到的类的vtable

    --trace[=EXPR] 允许跟踪

    --compile-all 编译配件中所有的方法

    --breakonex 在异常上插入一个断点

    --break METHOD 在方法的入口上插入一个断点

    --debug 允许调试

    --stats 输出JIT操作的统计信息

    --statfile FILE 设置统计文件

    --aot 将配件编译成本地程序

    --profile[=profiler] 指定profiler

    --graph[=TYPE] METHOD 画一图形(cfg、dtree、code、ssa、optcode)

    --config FILE 指定Mono的配置文件

    --verbose显示更详细消息

    --help 帮助信息

    --version 显示版本信息

    --optimize=OPT 性能优化



    gacutil的用法

    gacutil [命令] [参数]

    命令如下:

    -i <assembly_path> [-check_refs] [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

    安装配件到全局程序缓存中

    <assembly_path> 配件所在路径,配件钥包含配件清单(manifast)

    例如: -i myDll.dll

    -il <assembly_list_file> [-check_refs] [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

    安装多个配件到全局程序缓存中

    <assembly_list_file> 一个文件,包含要增加的配件列表

    例如:-il assembly_list.txt

    assembly_list.txt 的内容:

    assembly1.dll

    assembly2.dll

    -u <assembly_display_name> [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

    从全局程序缓存中卸载指定配件

    <assembly_display_name> 配件名称或者配件的部分名称,如果是部分名称,所有符合这个名称的配件都会被卸载

    例如 -u myDll,Version=1.2.1.0



    -ul <assembly_list_file> [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

    从全局程序缓存中卸载配件

    <assembly_list_file>包含配件列表的文件名

    例如: -ul assembly_list.txt

    assembly_list.txt的内容

    assembly1,Version=1.0.0.0,Culture=en,PublicKeyToken=0123456789abcdef

    assembly2,Version=2.0.0.0,Culture=en,PublicKeyToken=0123456789abcdef



    -us <assembly_path> [-package NAME] [-root ROOTDIR] [-gacdir GACDIR]

    从全局程序缓存中卸载配件

    <assembly path>配件所在路径

    Example: -us myDll.dll



    -l [assembly_name] [-root ROOTDIR] [-gacdir GACDIR]

    列出全局程序缓存中所有的配件

    如果指定 <assembly_name>参数,将只显示符合参数的配件



    -?

    显示帮助信息



    参数如下:

    -package <NAME>

    用来在 prefix/lib/mono 目录下增加一个名为NAME的目录,然后增加一个从 NAME/assembly_name 到全局程序缓存中的配件的一个链接



    -gacdir <GACDIR>

    指定全局程序缓存的目录,如果不是标准的全局程序缓存目录,将使用MONO_GAC_PATH环境变量来引用配件。



    -root <ROOTDIR>

    用来集成automake工具



    -check_refs

    检查将要导入的配件不被任何未强命名的配件引用



    -f

    Mono gacut不考虑兼容性,gacutil总强行安装新配件



    -r <reference_scheme> <reference_id> <description>

    Mono gacutil 并没有实现跟踪引用,当这个参数使用时,或发出一个警告信息



    其它工具基本可以使用 –help参数来了解其使用方法。



    3.2 Hello Mono

    做了这么多准备工作,现在是进入我们的HelloMono的时候了。利用文本编辑工具输入下面的代码,保存为HelloMono.cs文件。

    using System;

    namespace Kuaff.MonoGuide.Ch2

    {

    public class HelloMono

    {

    public static void Main(string[] args)

    {

    Console.WriteLine(“Hello Mono!”);

    }

    }

    }



    在终端中进入文件所在目录,输入mcs HelloMono.cs,则编译生成HelloMono.exe文件。


    在终端中输入mono helloMono.exe,则会看到“Hello Mono!”出现。




    3.3 Mono开发工具

    在Windows下,你可以采用开源的#develop IDE开发工具编写Mono程序。在Linux操作系统上,你可以使用MonoDevelop、eclipse进行开发。当然,你也可以使用一般的文本编辑工具如Emacs、KWrite、Kedit和Kate等编写csharp文件,然后利用mcs工具进行编辑。

    MonoDevelop

    在终端中输入MonoDevelop。


    图3.3.1 MonoDevelop启动画面

    目前这个MonoDevelop功能还不能说是强大,但是相对来说,对编写c#程序很有帮助。

    Ø 随Mono发布的一款IDE工具

    Ø 以工程的方式组织C#文件

    Ø 插件式设计,随着大家对这款开发工具的熟悉,越来越多的插件会发布出来,它的功能也会越来越强大

    Ø 多模板设计,可以开发控制台程序、C#类库、GTK#、GNOME#、Glade#、ILasm、java、WebServices、MonoDevelop插件等程序

    Ø 集成帮助信息

    Ø 语法加亮、代码自动提示

    ……

    当然,目前MonoDevelop还有很多功能还不完善,如没有界面设计工具(没办法、Windows.Form还没实现)、首选项还很简单、没有集成NAnt、NUnit等工具。


    图3.3.2 MonoDevelop开发工具

    后面的章节的例子都是在MonoDevelop上开发的。

    菜单:

    File菜单

    New File:新建一个文件,这里按照解决方案的不同进行了分类。

    C#:支持Session的WebServices、 C# WebServices、空C#文件、

    Gnome#程序、Gtk#Window

    Java:空java文件、AWT小应用程序、AWT程序、AWT对话框、

    AWT Frame、AWT OK对话框、AWT面板

    Misc:空白HTML文件、空白资源文件、空白文本文件、空白XML

    文件

    MonoDevelop:简单MonoDevelop菜单命令、MonoDevelop Pad、

    简单MonoDevelop视图、简单MonoDevelop命令

    Nemerle:空白Nemerle文件

    New Solution/Project:新建一个解决方案、工程。按照工程不同页进行了分类。

    C#:控制台工程、空的工程、Glade#工程、Gnome#工程、

    Gtk#工程、C#类库

    ILAsm:ILAsm控制台工程

    Java:空的java工程、IKVM控制台工程、IKVM Gtk#工程、

    java控制台工程

    MonoDevelop:一个空的工程

    Nemerle:一个空的Nemerle工程

    Open:打开文件

    Close File:关闭文件

    Close Solution:关闭解决方案、工程

    Save:保存

    Save as:保存为

    Save All:保存所有

    Import VS Project:从Visula Studio.net工程导入

    Recent Files:最新打开的文件

    Recent Solutions:最新打开的工程

    Quit:退出



    Edit菜单

    Undo:撤销

    Redo:恢复刚才操作

    Cut:剪切

    Copy:复制

    Paste:粘贴

    Delete:删除

    Select All:选择全部

    Word Count:字数统计

    Preference:首选项,可以定制自己的偏爱



    View菜单

    Solution:显示解决方案视图

    Classes:显示类视图

    Files:显示文件视图

    Task List:显示任务列表视图

    Help:显示帮助视图

    Output:显示输出视图

    Layout:布局,可以将目前的视图设置保存为一种布局

    Full Screen:全屏显示MonoDevelop



    Run菜单

    Compile:编译

    Compile All:编译全部

    Run:运行,



    Search菜单

    Find:查找

    Find Next:查找下一个

    Replace:替换

    Find In Files:多文件查找

    Replace In Files:多文件替换

    Toggle Bookmark:增加书签

    Previous Bookmark:前一个书签

    Next Bookmark:后一个书签

    Clear Bookmark:清除书签

    Goto Line:转到行

    Goto Matching Brace:转到对应的括号



    Window菜单

    Next Window:下一个窗口

    Previous Window:前一个窗口

    Close All:关闭所有窗口



    Help菜单

    Tip of the Day:每日提示

    Web:查看联机文档

    About:开发者以及版权信息

    以下是对菜单对应的工具栏


    增加引用的部件

    在我们使用visual studio.net的时候,当我们需要引用第三方的配件的时候,需要将其加入到引用中,在MonoDevelop也要这样做,这样在编译程序的时候,就告诉了mcs需要使用-r参数将引用包含进来,否则编译的时候会出错。

    在你的C#工程的解决方案视图中,选择Reference,点击右键,选择Edit Reference,会弹出对话框。






    在弹出对话框中有三个标签卡(Tab),分别显示全局程序缓存中的配件、工程已经引用的配件以及其他配件。


    在全局程序缓存中,列出当GAC中所有的配件,你可以根据需要选、删所需的配件,在Project标签卡上,显示出当前的引用,你可以在这里删除不需要的引用。在第三个标签卡中,你可以选择第三方的配件,如SharpZipLib.dll等,这些配件不一定加入到全局程序缓存中。

    Eclipse

    Eclipse是IBM捐献出的一款极棒的开发工具,我主要使用它开发java程序。它的插件机制使它不仅仅成为一款和JBuilder相媲美的工具,许多公司和开发还在其上开发了大量的插件,可以用它来设计UML、其他开发语言,现在推出的富客户端技术将使它成为工具的载体,你可以在上面开发类似photoshop一样的工具。它的C#插件可以用来编辑C#文件,这是improve发布的插件。

    如果要运行,你需要安装JDK,可以到http://java.sun.com区下载一个JDK1.4.2的安装包,有针对各平台的版本。到http://www.eclipse.org下载Eclipse 3.0或者3.1的版本,按照说明安装。


    图3.3.3 Eclipse开发工具

    读者不要期望C#插件能有java插件那么强大的功能。这个C#插件并不是Eclipse的官方插件,使用起来不尽人意,在介绍的过程中会提到,但是C#插件本可以做的和java插件一样好。将C#插件安装到Eclipse的插件目录。

    启动Eclipse,在菜单中选择新建一个工程,会显示工程向导。这里有java工程的向导、插件开发向导等,本可以做一个C#的向导,进入C#的透视图,但是这个插件没有提供这个功能。所以我们选择简单工程(Simple->Project)。






    图3.3.4 新建工程

    选择下一步,输入项目名称和项目的保存目录。


    图3.3.5 保存项目

    完成后Eclipse将显示资源透视图。新建一个C#文件。在菜单中选择

    File->New->Other,启动向导,选择C#->C#文件。


    图3.3.6 新建一个C#文件

    输入文件名HelloEclipse.cs,保存文件。在编辑器中可以修改生成的C#文件。HelloEclipse.cs文件的代码如下:

    using System;

    namespace Kuaff.MonoGuide.Ch3 {

    Class HelloEclipse {

    Public static void Main() {

    Console.WriteLine(“Hello Eclipse!”);

    }

    }

    }

    如果要编译这个文件,还需在首选项里设置Mono编译器mcs的文件,打开首先项:


    图3.3.6 设置mcs编译器

    一旦设置,修改完毕C#文件,保存的时候自动编译此文件。这时在工程目录下生成了HelloEclipse.exe文件。

    打开终端,进入工程所在目录,执行mono HelloEclipse.exe,将会输出“Hello Eclipse!”。


    图3.3.7 执行HelloEclipse.exe程序

    在这个c#插件中无法引用其他的配件。修改一下我们前面的代码:

    using System;

    using Gtk;

    namespace Kuaff.MonoGuide.Ch3 {

    Class HelloEclipse {

    Public static void Main() {

    Console.WriteLine(“Hello Eclipse!”);

    }

    }


     
    展开全文
  • Mono学习1

    2012-08-10 11:42:19
    打算在Linux系统上学习使用Mono开发项目,在这之前我想在Windows上运行并熟悉了下Mono的开发方式。 开发环境:MonoDevelop3.0.3.5 安装的软件 1. GTK2.0# 用于Mono图形界面开发 2. Mono2.10.8 3. PostgreSql...
  • IDEA JetBrains Mono字体介绍和安装

    万次阅读 多人点赞 2020-01-21 10:44:55
    Intellij IDEA 公司 JetBrains 推出了一种新字体:JetBrains Mono,它是专开发人员设计的。...因此,在 JetBrains Mono 的设计阶段,它就充分考虑到了长时间工作可能导致的眼睛疲劳问题,比如字母的大小和形状、...
  • Linux下mono配置

    2010-07-24 11:20:00
    mono配置
  • unity3D中Mono内存泄漏

    千次阅读 2018-07-18 11:27:42
    本文介绍了在腾讯游戏在Unity游戏开发过程中常见的Mono内存管理问题,并介绍了一系列解决的策略和方法。 什么是Mono内存  对于目前绝大多数基于Unity引擎开发的项目而言,其托管堆内存是由Mono分配和管理的。...
  • 注意:如果是直接下载的zip包,解压之后检查mono/external/bdwgc文件夹是否为空,是的话,到主干把bdwgc里面的内容全部down下来。 NDK版本:android-ndk-r16b-linux-x86_64 开始 1、卸载旧版本mono编译环境 sudo apt...
  • Unity 3D MonoBehaviour Mono行为

    千次阅读 2015-07-08 15:15:21
    MonoBehaviour Mono行为 Inherits from Behaviour MonoBehaviour is the base class every script derives from. MonoBehaviour是每个脚本的基类. Using Javascript every script automatically derives from ...
  • Hello Mono ·醉若星 发表于 2007-12-13 20:34:00 0 推荐 本章内容 ü   Mono 命令 ü   Hello Mono ü   Mono 的开发工具 ü   Mono 中文问题 3.1 Mono 命令 ...
  • Unity重新编译mono实现热更新

    万次阅读 多人点赞 2016-07-18 21:21:54
    linux下编译unity mono实现热更新代码。
  • Unity与mono内存管理

    2021-03-08 16:43:39
    【C#与mono】 C#有跨平台的特性,因为C#代码先被编译器变成CIL(公共中间语言,Common Intermediate Language),CLR(公共语言运行时,Common Language Runtime)控制着CIL的解释和执行。平台按照一定的标准(.Net...
  • VINS-Mono-demo

    2018-12-09 17:10:22
    VINS-Mono-demo引言1.创建ROS工作空间2.VINS部分3.AR4.相机和IMU之间无外部参数5.用自己的设备cam+imu 引言 1.创建ROS工作空间 mkdir -p ~/VINSMono_ws/src cd .. //的依然可以编译他 catkin_make //ROS...
  • Reactor Mono和Flux 进行反应式编程详解

    万次阅读 2019-12-24 11:08:16
    官网:https://projectreactor.io/ 教程:... Reactor的类型 Reactor有两种类型,Flux<T>和Mono<T>。Flux类似RaxJava的Observable,它可以触发零到多个事件,并根据实际情况结束...
  • mono下使用Nhibernate

    2016-02-26 21:03:35
    突发奇想要在mac下写ASP.NET, 选择了mono之后出了一堆的问题。 昨天尝试使用Sqlite作为数据库结果花费了大量的时间一致没有找明白该如何解决,今天尝试连接mysql终于成功了。这里简单回顾下如何使用NHibernate操作...
  • Linux+Mono+Asp.net入门:05CentOs安装Mono(上) 最关键的步骤来了! 准备工作 常见问题 a. Xshell显示中文乱码问题 [文件]–>[打开]–>在打开的session中选择连接的那个,点击[属性] -> [终端], 编码...
  • 本文分享Unity中Mono脚本单例模式 一般在项目中, 我们会使用一些全局的Mono对象, 但是只需要一份, 这时候单例模式是很适合的. 今天给大家介绍下Mono类型的单例怎么写. 非线程安全 在Unity开发中, 大部分情况下我们不...
  • 简介 Mono支持内存自动回收,因为MONO集成了内存回收算法。在1.X到2.X的版本中,MONO集成了贝母...BOEHM属于一个开源项目,其实现支持C/C的内存管理及GC,在C/C项目中,将分配内存部分接口(malloc或者其他分配...
  • .NET跨平台 - WCF & Mono

    2019-09-22 14:56:46
    让WCF运行在Linux上(寄宿于服务器程序) WCF介绍请自行 bing 搜索 使用的开发工具vs2017,系统 Ubuntu16.04 ...Mono版本信息( 具体安装请百度 Ubuntu安装Mono,推荐: Ubuntu安装Mono ): Je...
  • mono学习安装配置

    2014-06-16 18:04:51
    http://bbs.csdn.net/topics/390533357 http://blog.csdn.net/ojlovecd/article/details/6289943  开始调试 ...//安装1========================================== Xamarin Mono For An
  • mono类的单例

    2020-11-09 21:35:31
    } } private void Awake() { if (_single==null) { //如果为空 则说明第一次生成 ,,保留 不销毁 DontDestroyOnLoad(gameObject); } else { //否则已存在,销毁当前物体 Destroy(gameObject); } }
  • 先讲解一下mono特性 一个很重要的信息:mono内存从系统里面申请的内存不会返回给系统 mono内存不足的时候会预申请内存(内存大小不定有可能10m有可能5m) 最近优化一个mono内存泄露问题 引起mono一直撑大多数都...
  • 03-Mono & Flux操作

    2021-04-03 15:55:48
    上一节主要介绍了如何基于Mono和Flux构建一个数据流,Mono是Flux的特例,但大部分API 都是一致的所以重点讲的是Flux。本章将讲Flux和Mono的操作符,如 转换、过滤、异常处理、日志、Debug等一些API。 1. buffer ...
  • mono本身是用ASNI C开发的,所以mono的使用也就是调用一堆API,mono使用的句柄和类型对外开放时都被隐藏了,比如MonoClass、MonoObject,对外声明的都只是结构指针,mono的API返回的对象,类型相关的比如MonoClass...
  • Unity优化杂谈2(MONO内存)

    千次阅读 2017-10-10 15:09:30
    Mono内存是Unity中不会释放的内存,他的容量一旦被撑大,项目所占的内存就会跟着增大,不能手动释放。是一个比较危险的地方,wetest给出的...根据我这里面显示mono里面主要:(具体项目具体分析) 1. protobuf所存

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,855
精华内容 3,942
关键字:

mono为空