Projects using .net should be able to use the same tool. This will avoid everyone being dependent on Visual Studio.net (if they have it) supplemented with makefiles and batch files. Anyone doing mixed java/dotnet development will be particulary grateful, as they can have a unified build process.
If at sometime in the future bits of .net do appear on different platforms then ant based build files will migrate -once the ant tasks have been migrated and any hard codings of DOS-descendant file system conventions removed from the build.xml files
The esoteric tasks can then supported on demand by those who need them. The initial .net tasks should provide a foundation for that demand creation to be simple.
External changes
All parameters are optional: <csc/> should suffice to produce a debug build of all *.cs files. References to external files do require explicit enumeration, so are one of the first attributes to consider adding.
The task is a directory based task, so attributes like includes="**/*.cs" and excludes="broken.cs" can be used to control the files pulled in. By default, all *.cs files from the project folder down are included in the command. When this happens the output file -if not specified- is taken as the first file in the list, which may be somewhat hard to control. Specifying the output file with 'outfile' seems prudent.
Attribute | Description | Example Values |
additionalModules | Semicolon separated list of modules to refer to | |
defaultexcludes | indicates whether default excludes should be used or not | "true"(default) or "false" |
definitions | defined constants | "RELEASE;BETA1" |
debug | include debug information | "true"(default) or "false" |
docFile | name of file for documentation | "doc.xml" |
excludes | comma separated list of patterns of files that must be excluded. No files (except default excludes) are excluded when omitted. | |
excludesfile | the name of a file. Each line of this file is taken to be an exclude pattern | |
extraOptions | Any extra options which aren't explicitly supported by the CSharp task | "/warnaserror+ /baseaddress:0x12840000" |
failOnError | Should a failed compile halt the build? | "true"(default) or "false" |
includes | comma separated list of patterns of files that must be included. All files are included when omitted. | |
includeDefaultReferences | Flag which when true automatically includes the common assemblies in dotnet beta1, and tells the compiler to link in mscore.dll | "true"(default) or "false" |
includesfile | the name of a file. Each line of this file is taken to be an include pattern | |
incremental | Incremental build flag. Avoid till it works | "true" or "false"(default) |
mainClass | name of main class for executables | "com.example.project.entrypoint" |
optimize | optimisation flag | "true" or "false"(default) |
outputFile | filename of output | "example.exe" |
references | Semicolon separated list of dlls to refer to | "mylib.dll;nunit.dll" |
referenceFiles | Ant Path descriptioon of references to include. Wildcards should work. | |
srcDir | source directory (default = project directory) | "." |
targetType | Type of target | "exe","module","winexe" or "library" |
unsafe | enable unsafe code | "true" or "false"(default) |
warnLevel | level of warning currently between 1 and 4 with 4 being the strictest. | "1"-"4" |
win32Icon | filename of icon to include | "res/myicon.ico" |
Example
<csc optimize="true" debug="false" docFile="documentation.xml" warnLevel="4" unsafe="false" targetType="exe" incremental="false" definitions="RELEASE" excludes="src/unicode_class.cs" mainClass = "MainApp" outputFile="NetApp.exe" />
All parameters are optional: <il/> should suffice to produce a debug build of all *.il files. The option set is roughly compatible with the CSharp class; even though the command line options are only vaguely equivalent. [The low level commands take things like /OUT=file, csc wants /out:file ... /verbose is used some places; /quiet here in ildasm... etc.] It would be nice if someone made all the command line tools consistent (and not as brittle as the java cmdline tools)
The task is a directory based task, so attributes like includes="*.il" and excludes="broken.il" can be used to control the files pulled in. Each file is built on its own, producing an appropriately named output file unless manually specified with outfile
Attribute | Description | Example |
defaultexcludes | indicates whether default excludes should be used or not ("yes"/"no"). Default excludes are used when omitted. | |
debug | include debug information | true (default) |
excludes | comma separated list of patterns of files that must be excluded. No files (except default excludes) are excluded when omitted. | |
excludesfile | the name of a file. Each line of this file is taken to be an exclude pattern | |
extraOptions | Any extra options which aren't explicitly supported by the ilasm task | |
failOnError | Should a failed compile halt the build? | "true"(default) |
includes | comma separated list of patterns of files that must be included. All files are included when omitted. | |
includesfile | the name of a file. Each line of this file is taken to be an include pattern | |
listing | Produce a listing (off by default). Listings go to the current output stream | "on", "off" (default) |
outputFile | filename of output | "example.exe" |
owner | restrict disassembly by setting the 'owner' string | "secret" |
resourceFile | name of resource file to include | "resources.res" |
srcDir | source directory (default = project directory) | |
targetType | Type of target. library means DLL is output. | "exe"(default),"library" |
verbose | output progress messages | "on", "off" (default) |
Example
<ilasm outputFile="app.exe" verbose="on" listing="on" owner="secret" />
Copyright © 2000 Apache Software Foundation. All rights Reserved.