第二部分(例子)
下面是一个完整的例子来逐一说明上面所提到的概念,以加深理解。
整个例子包含7个文件(在主目录下):
主目录为 …/Assembly ----源程序目录
…/Assembly/Bin ---- 编译结果输出的目录,也就是应用程序主目
录。
文件名
类型
说明
App.cs
Code源文件
主程序,包含程序入口,
属于namespace1
ClassA.cs
Code源文件
类型A,包含一个静态方法,
属于namespace1
ClassB.cs
Code源文件
类型B,包含一个静态方法,
属于namespace2
AssemblyInfo.cs
Code源文件
包含程序集签名信息,
版本信息等
App.Key
公钥/私钥对文件
用来给程序集签名,
生成强命名程序集
App.PublicKey
只包含共有密钥
只储存共有密钥,
用SN.exe来查看
App.exe.config
Xml格式配置文件
App.exe的应用程序配置文件
源代码
App.cs
namespace namespaceA {
public class App {
static void Main (string[] args) {
System.Console.WriteLine(ClassA.ShowMe());
System.Console.WriteLine(namespaceB.ClassB.ShowMe());
}
}
}
ClassA.cs
namespace namespaceA {
public class ClassA {
public static string ShowMe()
{
return "This is ClassA";
}
}
}
ClassB.cs
namespace namespaceB {
public class ClassB {
public static string ShowMe() {
return "This is ClassB";
}
}
}
AssemblyInfo.cs
////////////////////////////////////////////////////////////////////////////////
// Module: AssemblyInfo.cs
////////////////////////////////////////////////////////////////////////////////
using System.Reflection;
////////////////////////////////////////////////////////////////////////////////
// Set CompanyName, LegalCopyright, and LegalTrademarks
[assembly: AssemblyCompany("App Company")]
[assembly: AssemblyCopyright("Copyright (C) 2004 @ App Company")]
[assembly: AssemblyTrademark("App is a test only program")]
////////////////////////////////////////////////////////////////////////////////
// Set ProductName and ProductVersion
[assembly: AssemblyProduct("App Product")]
[assembly: AssemblyInformationalVersion("1.0.0.0")]
////////////////////////////////////////////////////////////////////////////////
// Set FileVersion and AssemblyVersion
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyTitle("App type assembly")]
[assembly: AssemblyDescription("App Aassembly is a test only assembly")]
////////////////////////////////////////////////////////////////////////////////
// Set Culture
[assembly: AssemblyCulture("")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("App.key")]
[assembly: AssemblyKeyName("")]
App.key和App.PublicKey是二进制格式存储的,不能直接查看。后面例子中会用