self-describing
/t:exe, /t:winexe, /t:library a single PE file that contains the manifest metadata tables.
/t:module doesn’t contain the manifest metadata tables.an extension of .netmodule.
The Assembly Linker(AL.exe) has no way to combine multiple files into a single file.
AL.exe /embed[resource], /link[resource], /win32res, /win32icon
CSC.exe /resource, /linkresource, /win32res, /win32icon
set the version resource fields using custom attributes that you apply at the assembly level in your source code.
//AssemblyInfo.cs
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("easyPower")]
[assembly: AssemblyDescription("easy Used Power")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("vOnsy.org")]
[assembly: AssemblyProduct("FSY easyPower Type Library")]
[assembly: AssemblyCopyright("Copyright © FSY 2007")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("80e341f5-3377-4a0a-8569-c7f1353b1b9b")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("2.0.0.0")]
Format of Version Numbers: Major Number, Minor Number, Build Number, Revision Number
§ AssemblyFileVersion This version number is stored in the Win32 version resource. This number is informational only; the CLR doesn’t examine or care about this version number in any way. Typically, you set the major and minor parts to represent the version you want the public to see. Then you increment the build and revision parts each time a build is performed. Ideally, Microsoft’s tool (such as CSC.exe or AL.exe) would automatically update the build and revision numbers for you (based on the data/time when the build was performed), but unfortunately they don’t. This version number can be seen when using Windows Explorer and is used to determine exactly when an assembly file was built.
§ AssemblyInformationalVersionAttribute This version number is also stored in the Win32 version resource, and again, this number is informational only; the CLR doesn’texamine or care about it in any way. This version number exists to indicate the version of the product that includes this assembly.Typically, you set the major and minor parts of this version number to represent the public version of your product. Then you increment the build and revision parts each time you package a complete product with all its assemblies.
§ AssemblyVersion This version number is stored in the AssemblyDef manifest metadata table. The CLR uses this version number when binding to strongly named assemblies. This number is extremely important and is used to uniquely identify an assembly. When starting to develop an assembly, you should set the major, minor, build, and revision numbers and shouldn’t change them until you’re ready to begin work on the next deployable version of your assembly. When you build an assembly, this version number in the referenced assembly is embedded in the AssemblyRef table’s entry. This means that an assembly is tightly bound to a specific version of a reference assembly.
//ps: VS2005 Version Number Manage is OK!
CLR Common Language Runtime
CTS
CLS Common Language Specification
attribute [assembly:CLSCompliant(true)]
*Acquiescence type function is internal
Enum,Arrary,Property,Index,Delegate,Event,Constructor,Destructor,Operator
=
Field or Method
******************************************************
using System;
class Test
{
//constructor
public Test() {}
//destructor
~Test() {}
//overload operator
public static Boolean operator == (Test t1, Test t2)
{
return true;
}
public static Boolean operator != (Test t1, Test t2)
{
return false;
}
public static Test operator + (Test t1, Test t2) { return null;}
//property
public String AProperty
{
get { return null;}
set {}
}
//index
public String this[Int32 x]
{
get { return null;}
set {}
}
//event
event EventHandler AnEvent;
}