网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
使用 C# 2.0 命令行编译器
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
用 /lib,则需要将这三个 .NET 代码库手动复制到包含输入文件的目录中。还请注意,如果在给定的命令集中多次发出 /lib 标志,则结果将累积起来。

返回页首返回页首

理解 C# 2.0 引用别名

关于 /reference 选项需要进行的最后一点说明是,在 C# 2.0 中,现在可以为引用的程序集创建别名。通过该功能,可以解决在唯一命名的程序集中包含的名称完全相同的类型之间存在的名称冲突问题。

为了说明该功能的实用性,请在 C:\MyCSharpCode 目录中创建一个名为 MyCodeLibrary2 的新文件夹。将现有的 simpleType.cs 和 AsmInfo.cs 文件的副本放到新目录中。现在,向 SimpleType 中添加一个能够显示客户端提供的字符串的新方法:

/// <summary>/// Display a user supplied message./// </summary>public static void PrintMessage(string msg){ Console.WriteLine("You said: {0}", msg);}

编译这些文件,以创建一个名为 MyCodeLibrary2.dll 的新程序集,如下所示:

csc /t:library /out:MyCodeLibrary2.dll *.cs

最后,将这一新代码库的副本放到 MyClient 文件夹(图 8)中。


图 8. MyClient 文件夹中的新代码

现在,如果我们的当前客户端程序希望引用 MyCodeLibrary.dll 以及 MyCodeLibrary2.dll,则我们执行以下操作:

csc /t:exe /r:MyCodeLibrary.dll;MyCodeLibrary2.dll *.cs

编译器告诉我们,我们已经引入了名称冲突,因为这两个程序集都定义了一个名为 SimpleType 的类:

simpleTypeClient.cs(13,7): error CS0433: The type ''MyCodeLibrary.SimpleType''  exists in both ''c:\MyCSharpCode\MyClient\MyCodeLibrary.dll'' and  ''c:\MyCSharpCode\MyClient\MyCodeLibrary2.dll''

乍看起来,您可能认为可以通过在客户端代码中使用完全限定名称来修复该问题。但是,这样做无法纠正该问题,因为这两个程序集定义了相同的完全限定名称 (MyCodeLibrary。SimpleType)。

使用 /reference 标志的新别名选项,我们可以为引用的每个代码库生成唯一的名称。在我们这样做之后,我们就可以更新客户端代码,以便将某个类型与特定的程序集相关联。

第一步是修改 simpleTypeClient.cs 文件,以使用我们将通过新的 extern alias 语法在命令行指定的别名:

// Extern alias statements must be // listed before all other code!extern alias ST1;  extern alias ST2;using System;namespace MyClientApp{  public class MyApp  {    public static void Main()    {      // Bind assembly to type using the ''::'' operator.       ST1::MyCodeLibrary.SimpleType.DisplayEnvironment();      ST2::MyCodeLibrary.SimpleType.PrintMessage("Hello!");      Console.ReadLine();    }  }}

请注意,我们已经使用 C# 2.0 extern alias 语句捕获了在命令行定义的别名。这里,ST1(简单类型 1)是为 MyCodeLibrary.dll 定义的别名,而 ST2 是 MyCodeLibrary2.dll 的别名:

csc /r:ST1=MyCodeLibrary.dll /r:ST2=MyCodeLibrary2.dll *.cs 

给定这些别名,请注意 Main() 方法如何使用 C# 2.0 范围解析运算符 (::) 将程序集别名绑定到类型本身:

// This says "I want the MyCodeLibrary.SimpleType class // that is defined in MyCodeLibrary.dll".ST1::MyCodeLibrary.SimpleType.DisplayEnvironment();

进而,/reference 选项的这一变体可以提供一种避免名称冲突(当两个具有唯一名称的程序集包含名称完全相同的类型时发生)的方式。

返回页首返回页首

使用 /addmodule 生成多文件程序

就像您可能已经知道的那样,多文件程序集提供了一种将单个 .NET 二进制文件分解为多个较小的小文件的方式,这在远程下载 .NET 模块时证明很有帮助。多文件程序集的最终效果是让一组文件像

  • 下一篇资讯: C#中调用Windows API的要点
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号