Methods Summary |
---|
public void | execute()Create a typelib command
log("This task is deprecated and will be removed in a future version\n"
+ "of Ant. It is now part of the .NET Antlib:\n"
+ "http://ant.apache.org/antlibs/dotnet/index.html",
Project.MSG_WARN);
validate();
log("Importing typelib " + srcFile
+ " to assembly " + destFile
+ " in namespace " + namespace, Project.MSG_VERBOSE);
//rebuild unless the dest file is newer than the source file
if (!isExecuteNeeded()) {
return;
}
NetCommand command = new NetCommand(this, "ImportTypelib", "tlbimp");
command.setFailOnError(true);
command.addArgument(srcFile.toString());
//fill in args
command.addArgument("/nologo");
command.addArgument("/out:" + destFile);
command.addArgument("/namespace:", namespace);
if (useSysArray) {
command.addArgument("/sysarray");
}
if (unsafe) {
command.addArgument("/unsafe");
}
command.addArgument(extraOptions);
command.runCommand();
|
private boolean | isExecuteNeeded()Test for disassembly being needed; use existence and granularity
correct date stamps
if (!destFile.exists()) {
log("Destination file does not exist: a build is required",
Project.MSG_VERBOSE);
return true;
}
long sourceTime = srcFile.lastModified();
long destTime = destFile.lastModified();
if (sourceTime > (destTime + FILE_UTILS.getFileTimestampGranularity())) {
log("Source file is newer than the dest file: a rebuild is required",
Project.MSG_VERBOSE);
return true;
} else {
log("The output file is up to date", Project.MSG_VERBOSE);
return false;
}
|
public void | setDestFile(java.io.File destFile)This method names the output file.
This is an operation which is required to have been performed.
this.destFile = destFile;
|
public void | setExtraOptions(java.lang.String extraOptions)set any extra options that are not yet supported by this task.
this.extraOptions = extraOptions;
|
public void | setNamespace(java.lang.String namespace)This method sets what namespace the typelib is to be in.
This is an operation which is required to have been performed.
this.namespace = namespace;
|
public void | setSrcFile(java.io.File srcFile)This method sets which is the source .tlb file.
This is an operation which is required to have been performed.
this.srcFile = srcFile;
|
public void | setUnsafe(boolean unsafe)do you want unsafe code.
this.unsafe = unsafe;
|
public void | setUseSysArray(boolean useSysArray)set this to map a COM SafeArray to the System.Array class
this.useSysArray = useSysArray;
|
protected void | validate()validation code
if (destFile == null) {
throw new BuildException("destination file must be specified");
}
if (destFile.isDirectory()) {
throw new BuildException(
"destination file is a directory");
}
if (srcFile == null || !srcFile.exists()) {
throw new BuildException(
"source file does not exist");
}
if (srcFile.isDirectory()) {
throw new BuildException(
"source file is a directory");
}
if (namespace == null) {
throw new BuildException("No namespace");
}
|