Igor Zelmanovich 2ca9ca85d6 2007-01-29 Igor Zelmanovich <[email protected]> 19 年之前
..
Accessibility 49735d775a svn:eol-style=native 19 年之前
ByteFX.Data 546a1134d2 Converted source files to UTF-8 (without byte order mark). Use UTF-8 as the default encoding for compilers. 19 年之前
Commons.Xml.Relaxng 49b38bf0cb * Makefile (EXTRA_DISTFILES): Add Test/XmlFiles/nvdl.rng. 19 年之前
Compat.ICSharpCode.SharpZipLib 681cc93f09 In build: 20 年之前
Cscompmgd a230bc0c4c * ErrorLevel.cs: Removed extra Serializable attribute in 2.0 profile. 19 年之前
CustomMarshalers e0e48b7b54 * Makefile: Non consequential casing rename for thisdir 19 年之前
FirebirdSql.Data.Firebird 546a1134d2 Converted source files to UTF-8 (without byte order mark). Use UTF-8 as the default encoding for compilers. 19 年之前
I18N 3c976fc6fb 2006-11-20 Atsushi Enomoto <[email protected]> 19 年之前
IBM.Data.DB2 0e8decdb37 remove svn:executable from .cs files 20 年之前
ICSharpCode.SharpZipLib 7d4a3b1904 Remove old version and re-add new one. 20 年之前
Mainsoft.Web 8768338a40 remove TRACE from release build 19 年之前
Managed.Windows.Forms d12da11da0 2007-01-29 Andreia Gaita <[email protected]> 19 年之前
Microsoft.Build.Engine eb9fb79006 2007-01-29 Marek Sieradzki <[email protected]> 19 年之前
Microsoft.Build.Framework 2ae14b8ed4 2007-01-02 Marek Sieradzki <[email protected]> 19 年之前
Microsoft.Build.Tasks c150c48586 2007-01-29 Marek Sieradzki <[email protected]> 19 年之前
Microsoft.Build.Utilities 56c00429ef 2007-01-24 Marek Sieradzki <[email protected]> 19 年之前
Microsoft.JScript 49735d775a svn:eol-style=native 19 年之前
Microsoft.VisualC 431f1b3485 Moved assembly version and assembly reference constants to a common Consts.cs file. Updated 2.0.3600.0 assembly versions to 2.0.0.0. Updated some old beta version numbers to recent ones. Fixed hard coded assembly references to use constants with the appropriate version number. 20 年之前
Microsoft.Vsa 431f1b3485 Moved assembly version and assembly reference constants to a common Consts.cs file. Updated 2.0.3600.0 assembly versions to 2.0.0.0. Updated some old beta version numbers to recent ones. Fixed hard coded assembly references to use constants with the appropriate version number. 20 年之前
Mono.C5 9b9f08b655 fix line endings, set svn:eol-style to CRLF 19 年之前
Mono.Cairo 20925c16f3 2007-01-15 Alp Toker <[email protected]> 19 年之前
Mono.CompilerServices.SymbolWriter f593ee900b 19 年之前
Mono.Data 6b3826b9c0 2006-02-13 Daniel Morgan <[email protected]> 20 年之前
Mono.Data.SqliteClient 023ccf31b8 2007-01-26 Miguel de Icaza <[email protected]> 19 年之前
Mono.Data.SybaseClient 94f2368a07 2006-12-20 Nagappan A <[email protected]> 19 年之前
Mono.Data.Tds 1f80ec9591 * Tds70.cs : Fixed bug in FormatParameter() which caused 19 年之前
Mono.Data.TdsClient 431f1b3485 Moved assembly version and assembly reference constants to a common Consts.cs file. Updated 2.0.3600.0 assembly versions to 2.0.0.0. Updated some old beta version numbers to recent ones. Fixed hard coded assembly references to use constants with the appropriate version number. 20 年之前
Mono.Directory.LDAP b27c8e1534 remove .cvsignore from everywhere, as it is useless on svn 20 年之前
Mono.GetOptions 6665c19601 2006-10-09 Rafael Teixeira <[email protected]> 19 年之前
Mono.Http 01730a436c 2006-11-16 Gonzalo Paniagua Javier <[email protected]> 19 年之前
Mono.PEToolkit cae752893e Standardize file-endings. Set svn:eol-style=native on LF-terminated files. 20 年之前
Mono.Posix be179d14d6 2006-12-18 Lluis Sanchez Gual <[email protected]> 19 年之前
Mono.Security d299ff6a8e 2007-01-12 Sebastien Pouliot <[email protected]> 19 年之前
Mono.Security.Win32 431f1b3485 Moved assembly version and assembly reference constants to a common Consts.cs file. Updated 2.0.3600.0 assembly versions to 2.0.0.0. Updated some old beta version numbers to recent ones. Fixed hard coded assembly references to use constants with the appropriate version number. 20 年之前
Mono.Xml.Ext 546a1134d2 Converted source files to UTF-8 (without byte order mark). Use UTF-8 as the default encoding for compilers. 19 年之前
Novell.Directory.Ldap c397e4da86 Apply patch from Jon Larimer 19 年之前
Npgsql f25fffa806 19 年之前
OpenSystem.C e5c9778d3e Add an OpenSystem for GCC/CIL 19 年之前
PEAPI 66d84ed501 Fix bug #79860. Add support for Retargetable assembly flag. 19 年之前
System 2b72a5f7f1 Excluded test DefaultType in ToolboxItemAttributeTests.cs under 'TARGET_JVM' 19 年之前
System.Configuration 5add913d46 ignore properties with null or empty name 19 年之前
System.Configuration.Install 546a1134d2 Converted source files to UTF-8 (without byte order mark). Use UTF-8 as the default encoding for compilers. 19 年之前
System.Data 14001b2b7e Cosmetic: fix spelling; patch from David Mitchell 19 年之前
System.Data.OracleClient b537b2d2c7 Improved memory allocation time 19 年之前
System.Design 5d29819d94 2006-12-19 Chris Toshok <[email protected]> 19 年之前
System.DirectoryServices 61827eaee8 Apply patch from Jon Larimer 19 年之前
System.Drawing 65e373a639 TARGET_JVM: cleanup the test suite 19 年之前
System.Drawing.Design 33ac5cc94a 2006-10-25 Chris Toshok <[email protected]> 19 年之前
System.EnterpriseServices 546a1134d2 Converted source files to UTF-8 (without byte order mark). Use UTF-8 as the default encoding for compilers. 19 年之前
System.Management 14d29ae50f * MethodDataCollection.cs: Throw NotImplementedException in methods 19 年之前
System.Messaging 546a1134d2 Converted source files to UTF-8 (without byte order mark). Use UTF-8 as the default encoding for compilers. 19 年之前
System.Runtime.Remoting a8907b2e98 2006-01-09 Robert Jordan <[email protected]> 19 年之前
System.Runtime.Serialization 2292fde93d 2005-09-26 Atsushi Enomoto <[email protected]> 20 年之前
System.Runtime.Serialization.Formatters.Soap cbc52d2f1c release project file 19 年之前
System.Security b2f49647aa 2007-01-25 Atsushi Enomoto <[email protected]> 19 年之前
System.ServiceProcess acfc14e230 * ChangeLog: forgot to commit ChangeLog. 19 年之前
System.Transactions c2753de156 * DependentTransaction.cs: 19 年之前
System.Web 2ca9ca85d6 2007-01-29 Igor Zelmanovich <[email protected]> 19 年之前
System.Web.Services f7168e526b 2007-01-29 Atsushi Enomoto <[email protected]> 19 年之前
System.XML 14001b2b7e Cosmetic: fix spelling; patch from David Mitchell 19 年之前
corlib 4145bfd988 Test fixes for TARGET_JVM. 19 年之前
doc 5dc2037ab1 Added files removed during import 21 年之前
notes 25f95f44fc More files 24 年之前
ChangeLog c1a200daca 2007-01-19 Atsushi Enomoto <[email protected]> 19 年之前
LICENSE 0eed5bae7d Add MIT X11 LICENSE to the class dir 23 年之前
Makefile c1a200daca 2007-01-19 Atsushi Enomoto <[email protected]> 19 年之前
README d7b8f52eaa UPdate 19 年之前
ecma.pub 4847293c9c more executable bits 20 年之前
mono.pub 71ce0f66da Adding it again as a binary. 22 年之前
mono.snk 4847293c9c more executable bits 20 年之前
msfinal.pub 4847293c9c more executable bits 20 年之前

README

The class libraries are grouped together in the assemblies they belong.

Each directory here represents an assembly, and inside each directory we
divide the code based on the namespace they implement.

In addition, each assembly directory contains a Test directory that holds the
NUnit tests for that assembly.

We use a new build system which is described by various README files
in mcs/build

The build process typically builds an assembly, but in some cases it
also builds special versions of the assemblies intended to be used for
testing.

* Missing implementation bits

If you implement a class and you are missing implementation bits,
please use the attribute [MonoTODO]. This attribute can be used
to programatically generate our status web pages:

[MonoTODO]
int MyFunction ()
{
throw new NotImplementedException ();
}

Ideally, write a human description of the reason why there is
a MonoTODO, this will be useful in the future for our
automated tools that can assist in developers porting their
code.

Do not use MonoTODO attributes for reminding yourself of
internal changes that must be done. Use FIXMEs or other kinds
of comments in the source code for that purpose, and if the
problem requires to be followed up on, file a bug.

* Supporting .NET 1.2, .NET 1.1 and .NET 1.0 builds

The defines NET_1_1 and NET_2_0 are used to include
features. When NET_2_0 is defined, it also implies that the
NET_1_1 is defined.

To have code which is only available in an old version, use ONLY_1_0,
ONLY_1_1

* Tagging buggy code

If there is a bug in your implementation tag the problem by using
the word "FIXME" in the code, together with a description of the
problem.

Do not use XXX or obscure descriptions, because otherwise people
will not be able to understand what you mean.

* Tagging Problematic specs.

If the documentation and the Microsoft implementation do
differ (you wrote a test case to prove this), I suggest that you edit
the file `mcs/class/doc/API-notes' so we can keep track of these problems
and submit our comments to ECMA or Microsoft and seek clarification.

Sometimes the documentation might be buggy, and sometimes the implementation
might be buggy. Lets try to identify and pinpoint which one
is the correct one.

Sometimes the specification will be lame (consider Version.ToString (fieldCount)
where there is no way of knowing how many fields are available, making the API
not only stupid, but leading to unreliable code).

In those cases, use the keyword "LAMESPEC".


* Coding considerations and style.

In order to keep the code consistent, please use the following
conventions. From here on `good' and `bad' are used to attribute
things that would make the coding style match, or not match. It is not
a judgement call on your coding abilities, but more of a style and
look call. Please try to follow these guidelines to ensure prettiness.

Use 8 space tabs for writing your code (hopefully we can keep
this consistent). If you are modifying someone else's code, try
to keep the coding style similar.

Since we are using 8-space tabs, you might want to consider the Linus
Torvals trick to reduce code nesting. Many times in a loop, you will
find yourself doing a test, and if the test is true, you will nest.
Many times this can be changed. Example:


for (i = 0; i < 10; i++) {
if (something (i)) {
do_more ();
}
}

This take precious space, instead write it like this:

for (i = 0; i < 10; i++) {
if (!something (i))
continue;
do_more ();
}

A few guidelines:

* Use a space before an opening parenthesis when calling
functions, or indexing, like this:

method (a);
b [10];

* Do not put a space after the opening parenthesis and the
closing one, ie:

good: method (a); array [10];

bad: method ( a ); array[ 10 ];

* Inside a code block, put the opening brace on the same line
as the statement:

good:
if (a) {
code ();
code ();
}

bad:
if (a)
{
code ();
code ();
}

* Avoid using unecessary open/close braces, vertical space
is usually limited:

good:
if (a)
code ();

bad:
if (a) {
code ();
}

* When defining a method, use the C style for brace placement,
that means, use a new line for the brace, like this:

good:
void Method ()
{
}

bad:
void Method () {
}

* Properties and indexers are an exception, keep the
brace on the same line as the property declaration.
Rationale: this makes it visually
simple to distinguish them.

good:
int Property {
get {
return value;
}
}

bad:
int Property
{
get {
return value;
}
}

Notice how the accessor "get" also keeps its brace on the same
line.

For very small properties, you can compress things:

ok:
int Property {
get { return value; }
set { x = value; }
}

* Use white space in expressions liberally, except in the presence
of parenthesis:

good:

if (a + 5 > method (blah () + 4))

bad:
if (a+5>method(blah()+4))

* For any new files, please use a descriptive introduction, like
this:

//
// System.Comment.cs: Handles comments in System files.
//
// Author:
// Juan Perez ([email protected])
//
// (C) 2002 Address, Inc (http://www.address.com)
//

* If you are modyfing someone else's code, and your contribution
is significant, please add yourself to the Authors list.

* Switch statements have the case at the same indentation as the
switch:

switch (x) {
case 'a':
...
case 'b':
...
}

* Argument names should use the camel casing for
identifiers, like this:

good:
void Method (string myArgument)

bad:
void Method (string lpstrArgument)
void Method (string my_string)

* Empty methods: They should have the body of code using two
lines, in consistency with the rest:

good:
void EmptyMethod ()
{
}

bad:
void EmptyMethod () {}

void EmptyMethod ()
{}

* Line length: The line length for C# source code is 134 columns.


If your function declaration arguments go beyond
this point, please align your arguments to match the
opening brace, like this:

void Function (int arg, string argb,
int argc)
{
}

When invoking functions, the rule is different, the
arguments are not aligned with the previous
argument, instead they begin at the tabbed position,
like this:

void M ()
{
MethodCall ("Very long string that will force",
"Next argument on the 8-tab pos",
"Just like this one")

}

Here are a couple of examples:

class X : Y {

bool Method (int argument_1, int argument_2)
{
if (argument_1 == argument_2)
throw new Exception (Locale.GetText ("They are equal!");

if (argument_1 < argument_2) {
if (argument_1 * 3 > 4)
return true;
else
return false;
}

//
// This sample helps keep your sanity while using 8-spaces for tabs
//
VeryLongIdentifierWhichTakesManyArguments (
Argument1, Argument2, Argument3,
NestedCallHere (
MoreNested));
}

bool MyProperty {
get {
return x;
}

set {
x = value;
}
}

void AnotherMethod ()
{
if ((a + 5) != 4) {
}

while (blah) {
if (a)
continue;
b++;
}
}
}