Task to take a .NET or Mono -generated managed executable and turn it
into ILASM assembly code. Useful when converting imported typelibs into
assembler before patching and recompiling, as one has to do when doing
advanced typelib work.
As well as generating the named output file, the ildasm program
will also generate resource files
Icons.resources
Message.resources
and a .res file whose filename stub is derived
from the source in ways to obscure to determine.
There is no way to control whether or not these files are created, or where they are created
(they are created in the current directory; their names come from inside the
executable and may be those used by the original developer). This task
creates the resources in the directory specified by
resourceDir
if
set, else in the same directory as the
destFile
.
This task requires the .NET SDK installed and ildasm on the path.
To disassemble using alternate CLR systems, set the executable attribute
to the name/path of the alternate implementation -one that must
support all the classic ildasm commands.
Dependency logic: the task executes the command if the output file is missing
or older than the source file. It does not take into account changes
in the options of the task, or timestamp differences in resource files.
When the underlying ildasm executable fails for some reason, it leaves the
.il file in place with some error message. To prevent this from confusing
the dependency logic, the file specified by the
dest
attribute is
always deleted after an unsuccessful build.
setAssembler
public void setAssembler(boolean assembler)
enable (default) or disable assembly language in the output
setBytes
public void setBytes(boolean bytes)
enable or disable (default) the original bytes as comments
setDestFile
public void setDestFile(File destFile)
the output file (required)
setEncoding
public void setEncoding(Ildasm.EncodingTypes encoding)
Select the output encoding: ascii, utf8 or unicode
setExecutable
public void setExecutable(String executable)
override the name of the executable (normally ildasm) or set
its full path. Do not set a relative path, as the ugly hacks
needed to create resource files in the dest directory
force us to change to this directory before running the application.
i.e use <property location> to create an absolute path from a
relative one before setting this value.
setHeader
public void setHeader(boolean header)
include header information; default false.
setItem
public void setItem(String item)
name a single item to decode; a class or a method
e.g item="Myclass::method" or item="namespace1::namespace2::Myclass:method(void(int32))
setLinenumbers
public void setLinenumbers(boolean linenumbers)
include line number information; default=false
setMetadata
public void setMetadata(boolean metadata)
include metadata information
setProgressBar
public void setProgressBar(boolean progressBar)
show a graphical progress bar in a window during the process; off by default
setQuoteallnames
public void setQuoteallnames(boolean quoteallnames)
quote all names.
setRawExceptionHandling
public void setRawExceptionHandling(boolean rawExceptionHandling)
enable raw exception handling (default = false)
setResourceDir
public void setResourceDir(File resourceDir)
Set the name of the directory for resources to be created. We cannot control
their names, but we can say where they get created. If not set, the
directory of the dest file is used
setShowSource
public void setShowSource(boolean showSource)
include the source as comments (default=false)
setSourceFile
public void setSourceFile(File sourceFile)
the file to disassemble -required
setSrcFile
public void setSrcFile(File sourceFile)
alternate name for sourceFile
setVisibility
public void setVisibility(String visibility)
This method sets the visibility options. It chooses one or more of the following, with + signs to
concatenate them:
pub : Public
pri : Private
fam : Family
asm : Assembly
faa : Family and Assembly
foa : Family or Assembly
psc : Private Scope
e.g. visibility="pub+pri".
Family means
protected
in C#;