org.apache.tools.ant.taskdefs.optional.dotnet
Class CSharp

java.lang.Object
  extended by org.apache.tools.ant.ProjectComponent
      extended by org.apache.tools.ant.Task
          extended by org.apache.tools.ant.taskdefs.MatchingTask
              extended by org.apache.tools.ant.taskdefs.optional.dotnet.DotnetBaseMatchingTask
                  extended by org.apache.tools.ant.taskdefs.optional.dotnet.DotnetCompile
                      extended by org.apache.tools.ant.taskdefs.optional.dotnet.CSharp
All Implemented Interfaces:
java.lang.Cloneable, SelectorContainer

public class CSharp
extends DotnetCompile

Compiles C# source into executables or modules. csc.exe on Windows or mcs on other platforms must be on the execute path, unless another executable or the full path to that executable is specified in the executable parameter

All parameters are optional: <csc/> should suffice to produce a debug build of all *.cs files. However, naming an destFilestops the csc compiler from choosing an output name from random, and allows the dependency checker to determine if the file is out of date.

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 destFile seems prudent.

For more complex source trees, nested src elemements can be supplied. When such an element is present, the implicit fileset is ignored. This makes sense, when you think about it :)

For historical reasons the pattern **/*.cs is preset as includes list and you can not override it with an explicit includes attribute. Use nested <src> elements instead of the basedir attribute if you need more control.

References to external files can be made through the references attribute, or (since Ant1.6), via nested <reference> filesets. With the latter, the timestamps of the references are also used in the dependency checking algorithm.

Example

<csc
       optimize="true"
       debug="false"
       docFile="documentation.xml"
       warnLevel="4"
       unsafe="false"
       targetType="exe"
       incremental="false"
       mainClass = "MainApp"
       destFile="NetApp.exe"
       >
           <src dir="src" includes="*.cs" />
       <reference file="${testCSC.dll}" />
       <define name="RELEASE" />
       <define name="DEBUG" if="debug.property"/>
       <define name="def3" unless="def3.property"/>
    </csc>
 

Since:
Ant 1.3

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.tools.ant.taskdefs.optional.dotnet.DotnetCompile
DotnetCompile.TargetTypes
 
Field Summary
protected  boolean unsafe
          enable unsafe code flag.
 
Fields inherited from class org.apache.tools.ant.taskdefs.optional.dotnet.DotnetCompile
additionalModules, debug, definitionList, executable, extraOptions, mainClass, REFERENCE_OPTION, referenceFilesets, resources, targetType, utf8output
 
Fields inherited from class org.apache.tools.ant.taskdefs.optional.dotnet.DotnetBaseMatchingTask
filesets, isWindows, outputFile, srcDir
 
Fields inherited from class org.apache.tools.ant.taskdefs.MatchingTask
fileset
 
Fields inherited from class org.apache.tools.ant.Task
target, taskName, taskType, wrapper
 
Fields inherited from class org.apache.tools.ant.ProjectComponent
description, location, project
 
Constructor Summary
CSharp()
          constructor inits everything and set up the search pattern
 
Method Summary
 void addCompilerSpecificOptions(NetCommand command)
          add Commands unique to C#.
 void clear()
          full cleanup
protected  void createResourceParameter(NetCommand command, DotnetResource resource)
          Build a C# style parameter.
protected  java.lang.String getDefinitionsParameter()
          override the superclasses version of this method (which we call) with a check for a definitions attribute, the contents of which are appended to the list.
protected  java.lang.String getDocFileParameter()
          get the argument or null for no argument needed
protected  java.lang.String getFileAlignParameter()
          get the argument or null for no argument needed
 java.lang.String getFileExtension()
          This method indicates the filename extension for C# files.
protected  java.lang.String getFullPathsParameter()
          Gets the fullPathsParameter attribute of the CSharp object
 boolean getIncremental()
          query the incrementalflag
protected  java.lang.String getIncrementalParameter()
          get the incremental build argument
protected  java.lang.String getNoConfigParameter()
          Gets the noConfigParameter attribute of the CSharp object
 java.lang.String getReferenceDelimiter()
          Returns the delimiter which C# uses to separate references, i.e., a semi colon.
 boolean getUnsafe()
          query the Unsafe attribute
protected  java.lang.String getUnsafeParameter()
          get the argument or null for no argument needed
 void setDefinitions(java.lang.String params)
          Semicolon separated list of defined constants.
 void setDocFile(java.io.File f)
          file for generated XML documentation
 void setFileAlign(int fileAlign)
          Set the file alignment.
 void setFullPaths(boolean enabled)
          If true, print the full path of files on errors.
 void setIncremental(boolean incremental)
          set the incremental compilation flag on or off.
 void setNoConfig(boolean enabled)
          A flag that tells the compiler not to read in the compiler settings files 'csc.rsp' in its bin directory and then the local directory
 void setOutputFile(java.io.File params)
          The output file.
 void setUnsafe(boolean unsafe)
          If true, enables the unsafe keyword.
 
Methods inherited from class org.apache.tools.ant.taskdefs.optional.dotnet.DotnetCompile
addDefine, addReference, addReferenceFilesets, addResource, addResources, createNetCommand, execute, fillInSharedParameters, getAdditionalModulesParameter, getDebug, getDebugParameter, getDefinitionsDelimiter, getDestFileParameter, getExecutable, getExtraOptions, getExtraOptionsParameter, getExtraOptionsParameters, getFailOnError, getFilePattern, getIncludeDefaultReferences, getIncludeDefaultReferencesParameter, getMainClass, getMainClassParameter, getOptimize, getOptimizeParameter, getReferenceFilesParameter, getReferencesParameter, getTargetType, getTargetTypeParameter, getUtf8OutputParameter, getWarnLevel, getWarnLevelParameter, getWin32IconParameter, getWin32Res, getWin32ResParameter, isFileManagedBinary, isUseResponseFile, notEmpty, setAdditionalModules, setDebug, setDestDir, setExecutable, setExtraOptions, setFailOnError, setIncludeDefaultReferences, setMainClass, setOptimize, setReferenceFiles, setReferences, setTargetType, setTargetType, setUseResponseFile, setUtf8Output, setWarnLevel, setWin32Icon, setWin32Res, validate
 
Methods inherited from class org.apache.tools.ant.taskdefs.optional.dotnet.DotnetBaseMatchingTask
addFilesAndExecute, addFilesToCommand, addSrc, buildFileList, getDestFile, getOutputFileTimestamp, getSrcDir, setDestFile, setSrcDir
 
Methods inherited from class org.apache.tools.ant.taskdefs.MatchingTask
add, addAnd, addContains, addContainsRegexp, addCustom, addDate, addDepend, addDepth, addDifferent, addFilename, addMajority, addModified, addNone, addNot, addOr, addPresent, addSelector, addSize, addType, appendSelector, createExclude, createExcludesFile, createInclude, createIncludesFile, createPatternSet, getDirectoryScanner, getImplicitFileSet, getSelectors, hasSelectors, selectorCount, selectorElements, setCaseSensitive, setDefaultexcludes, setExcludes, setExcludesfile, setFollowSymlinks, setIncludes, setIncludesfile, setProject, XsetIgnore, XsetItems
 
Methods inherited from class org.apache.tools.ant.Task
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
 
Methods inherited from class org.apache.tools.ant.ProjectComponent
clone, getDescription, getLocation, getProject, setDescription, setLocation
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

unsafe

protected boolean unsafe
enable unsafe code flag. Clearly set to false by default

Constructor Detail

CSharp

public CSharp()
constructor inits everything and set up the search pattern

Method Detail

clear

public void clear()
full cleanup

Overrides:
clear in class DotnetCompile

setDocFile

public void setDocFile(java.io.File f)
file for generated XML documentation

Parameters:
f - output file

getDocFileParameter

protected java.lang.String getDocFileParameter()
get the argument or null for no argument needed

Returns:
The DocFile Parameter to CSC

setFileAlign

public void setFileAlign(int fileAlign)
Set the file alignment. Valid values are 0,512, 1024, 2048, 4096, 8192, and 16384, 0 means 'leave to the compiler'

Parameters:
fileAlign - the value to use.

getFileAlignParameter

protected java.lang.String getFileAlignParameter()
get the argument or null for no argument needed

Returns:
The OutputFile Parameter to CSC

setFullPaths

public void setFullPaths(boolean enabled)
If true, print the full path of files on errors.

Parameters:
enabled - The new fullPaths value

getFullPathsParameter

protected java.lang.String getFullPathsParameter()
Gets the fullPathsParameter attribute of the CSharp object

Returns:
The fullPathsParameter value or null if unset

setIncremental

public void setIncremental(boolean incremental)
set the incremental compilation flag on or off.

Parameters:
incremental - on/off flag

getIncremental

public boolean getIncremental()
query the incrementalflag

Returns:
true if incremental compilation is turned on

getIncrementalParameter

protected java.lang.String getIncrementalParameter()
get the incremental build argument

Returns:
The Incremental Parameter to CSC

setOutputFile

public void setOutputFile(java.io.File params)
The output file. This is identical to the destFile attribute.

Parameters:
params - The new outputFile value

setUnsafe

public void setUnsafe(boolean unsafe)
If true, enables the unsafe keyword.

Parameters:
unsafe - The new Unsafe value

getUnsafe

public boolean getUnsafe()
query the Unsafe attribute

Returns:
The Unsafe value

getUnsafeParameter

protected java.lang.String getUnsafeParameter()
get the argument or null for no argument needed

Returns:
The Unsafe Parameter to CSC

setNoConfig

public void setNoConfig(boolean enabled)
A flag that tells the compiler not to read in the compiler settings files 'csc.rsp' in its bin directory and then the local directory

Parameters:
enabled - The new noConfig value

getNoConfigParameter

protected java.lang.String getNoConfigParameter()
Gets the noConfigParameter attribute of the CSharp object

Returns:
The noConfigParameter value

setDefinitions

public void setDefinitions(java.lang.String params)
Semicolon separated list of defined constants.

Parameters:
params - The new definitions value

getDefinitionsParameter

protected java.lang.String getDefinitionsParameter()
override the superclasses version of this method (which we call) with a check for a definitions attribute, the contents of which are appended to the list.

Overrides:
getDefinitionsParameter in class DotnetCompile
Returns:
The Definitions Parameter to CSC

addCompilerSpecificOptions

public void addCompilerSpecificOptions(NetCommand command)
add Commands unique to C#.

Specified by:
addCompilerSpecificOptions in class DotnetCompile
Parameters:
command - ongoing command

getReferenceDelimiter

public java.lang.String getReferenceDelimiter()
Returns the delimiter which C# uses to separate references, i.e., a semi colon.

Specified by:
getReferenceDelimiter in class DotnetCompile
Returns:
the delimiter.

getFileExtension

public java.lang.String getFileExtension()
This method indicates the filename extension for C# files.

Specified by:
getFileExtension in class DotnetCompile
Returns:
the file extension for C#, i.e., "cs" (without the dot).

createResourceParameter

protected void createResourceParameter(NetCommand command,
                                       DotnetResource resource)
Build a C# style parameter.

Specified by:
createResourceParameter in class DotnetCompile
Parameters:
command - the command.
resource - the resource.