changes
-removed 'owner' attribute from ILASM (it just prints a warning and is
stripped from the docs)
-changed the referenced dlls to the beta-2 set
-added some options to csc:
fullpaths
win32res
noconfig
utf8output
Submitted by: Steve Loughran <steve_l@iseran.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269485 13f79535-47bb-0310-9956-ffa450edef68
master
| @@ -143,6 +143,8 @@ Other changes: | |||
| * <fixrlf> can now with CR only line-ends and can use an arbitraty | |||
| between 2 and 80. | |||
| * The .NET tasks have been adapted to the beta2 release of the framework. | |||
| Fixed bugs: | |||
| ----------- | |||
| @@ -6,7 +6,6 @@ | |||
| <body bgcolor="#ffffff"> | |||
| <h1>.NET classes for Ant</h1> | |||
| <p>By Steve Loughran; steve_l@iseran.com</p> | |||
| <h2>Vision</h2> | |||
| <p> | |||
| @@ -54,7 +53,6 @@ removed from the build.xml files.</p> | |||
| <li>Type Library Exporter (TlbExp.exe) .dll -> .tlb</li> | |||
| <li>TlbImp.exe Type Library Importer </li> | |||
| <li>RegAsm.exe Assembly Registration Tool .dll -> .reg | registration</li> | |||
| <li>WebServiceUtil -SOAP proxy import, SDL generation tool</li> | |||
| </ol> | |||
| <h2>Ant Wrapper for net tasks</h2> | |||
| @@ -97,7 +95,7 @@ and behaviours. Probability: 100%. Impact: 2 days.</li> | |||
| To use the net tasks one needs | |||
| <ul> | |||
| <li> A Win2K box (or any other platform which supports the .net build tools)</li> | |||
| <li> A Windows box (or any other platform which supports the .net build tools)</li> | |||
| <li> JavaVM - Java1.1 or later; Java1.3 recommended.</li> | |||
| @@ -118,6 +116,15 @@ version crimson.jar and jaxp.jar.</li> | |||
| <hr> | |||
| <h2> Change Log </h2> | |||
| <h4>Version 0.4</h4> | |||
| This is the beta-2 revision of the tasks. | |||
| <ol> | |||
| <li>ILASM: pulled the owner attribute, added keyfile for giving binaries a strong name | |||
| (MD5 hash of the checksum) | |||
| <li>CSC: added win32res , noConfig, utf8output, fullpaths | |||
| <li>CSC: | |||
| </ol> | |||
| <h4>Version 0.3</h4> | |||
| The changes here reflect Beta-1 of the dotnet SDK and experience of use in | |||
| @@ -244,6 +251,11 @@ Specifying the output file with <b>'outfile'</b> seems prudent. </p> | |||
| <td valign="top">Should a failed compile halt the build?</td> | |||
| <td valign="top">"true"(default) or "false"</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">fullpaths</td> | |||
| <td valign="top">print the full path of files on on errors</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">includes</td> | |||
| <td valign="top">comma separated list of patterns of files that must be | |||
| @@ -274,6 +286,13 @@ Specifying the output file with <b>'outfile'</b> seems prudent. </p> | |||
| <td valign="top">name of main class for executables</td> | |||
| <td valign="top">"com.example.project.entrypoint"</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">noConfig</td> | |||
| <td valign="top">a flag which tells the compiler not | |||
| to read in the compiler settings files 'csc.rsp' in its | |||
| bin directory and then the local directory</td> | |||
| <td valign="top">"true" or "false"(default)</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">optimize</td> | |||
| <td valign="top">optimisation flag</td> | |||
| @@ -308,7 +327,12 @@ Specifying the output file with <b>'outfile'</b> seems prudent. </p> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">unsafe</td> | |||
| <td valign="top">enable unsafe code</td> | |||
| <td valign="top">enable the <b>unsafe</b> keyword</td> | |||
| <td valign="top">"true" or "false"(default)</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">utf8output</td> | |||
| <td valign="top">require all compiler output to be in utf-8 format</td> | |||
| <td valign="top">"true" or "false"(default)</td> | |||
| </tr> | |||
| <tr> | |||
| @@ -322,6 +346,12 @@ Specifying the output file with <b>'outfile'</b> seems prudent. </p> | |||
| <td valign="top">filename of icon to include</td> | |||
| <td valign="top">"res/myicon.ico"</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">win32res</td> | |||
| <td valign="top">filename of a win32 resource (.RES)file to include | |||
| This is not a .NET resource, but it what windows is used to.</td> | |||
| <td valign="top">"res/myapp.res"</td> | |||
| </tr> | |||
| </table> | |||
| <p> | |||
| @@ -344,7 +374,7 @@ Example | |||
| <hr> | |||
| <h2> Task: ilasm </h2> | |||
| <p>Task to assemble .net 'Intermediate Language' files. | |||
| The task will only work on win2K until other platforms support csc.exe or | |||
| The task will only work on windows until other platforms support csc.exe or | |||
| an equivalent. ilasm.exe must be on the execute path too. | |||
| </p> | |||
| <p> | |||
| @@ -399,7 +429,8 @@ manually specified with <b>outfile</b> | |||
| <tr> | |||
| <td valign="top">extraOptions</td> | |||
| <td valign="top">Any extra options which aren't explicitly | |||
| supported by the ilasm task </td> | |||
| supported by the ilasm task, primarily because they | |||
| arent really documented: use ilasm /? to see them</td> | |||
| <td></td> | |||
| </tr> | |||
| @@ -408,6 +439,11 @@ manually specified with <b>outfile</b> | |||
| <td valign="top">Should a failed compile halt the build?</td> | |||
| <td valign="top">"true"(default)</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">fullpaths</td> | |||
| <td valign="top">Should error text provide the full path to files</td> | |||
| <td valign="top">"true"(default)</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">includes</td> | |||
| <td valign="top">comma separated list of patterns of files that must be | |||
| @@ -418,6 +454,12 @@ manually specified with <b>outfile</b> | |||
| <td valign="top">the name of a file. Each line of this file is | |||
| taken to be an include pattern</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">keyfile</td> | |||
| <td valign="top">the name of a file containing a private key, with which | |||
| the assembly output is checksumed and then MD5 signed | |||
| to have a <i>strong name</i></td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">listing</td> | |||
| <td valign="top">Produce a listing (off by default). Listings go to the | |||
| @@ -429,11 +471,6 @@ manually specified with <b>outfile</b> | |||
| <td valign="top">filename of output</td> | |||
| <td valign="top">"example.exe"</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">owner</td> | |||
| <td valign="top">restrict disassembly by setting the 'owner' string</td> | |||
| <td valign="top">"secret"</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">resourceFile</td> | |||
| <td valign="top">name of resource file to include</td> | |||
| @@ -222,9 +222,10 @@ public class CSharp | |||
| } | |||
| /** | |||
| * Fix C# reference inclusion. | |||
| * C# is really dumb in how it handles inclusion. You have to list | |||
| * every 'assembly' -read DLL that is imported. So already you are | |||
| * making a platform assumption -shared libraries have a .dll extension | |||
| * making a platform assumption -shared libraries have a .dll;"+ extension | |||
| * and the poor developer has to know every library which is included | |||
| * why the compiler cant find classes on the path or in a directory, | |||
| * is a mystery. | |||
| @@ -236,27 +237,43 @@ public class CSharp | |||
| * Casing is chosen to match that of the file system <i>exactly</i> | |||
| * so may work on a unix box too. | |||
| */ | |||
| protected static final String DEFAULT_REFERENCE_LIST | |||
| ="System.dll;System.Drawing.dll;System.Data.dll;"+ | |||
| "System.Diagnostics.dll;"+ | |||
| "System.DirectoryServices.dll;"+ | |||
| "System.IO.dll;"+ | |||
| "System.Management.dll;"+ | |||
| "System.Messaging.dll;"+ | |||
| "System.Net.dll;"+ | |||
| "System.Runtime.Remoting.dll;"+ | |||
| "System.Runtime.Serialization.Formatters.Soap.dll;"+ | |||
| "System.Security.dll;"+ | |||
| "System.ServiceProcess.dll;"+ | |||
| "System.Text.RegularExpressions.dll;"+ | |||
| "System.Timers.dll;"+ | |||
| "System.Web.dll;"+ | |||
| "System.Web.Services.dll;"+ | |||
| "System.WinForms.dll;"+ | |||
| "System.XML.dll;"+ | |||
| "System.XML.Serialization.dll;"+ | |||
| "Microsoft.ComServices.dll;"; | |||
| protected static final String DEFAULT_REFERENCE_LIST= | |||
| "Accessibility.dll;"+ | |||
| "cscompmgd.dll;"+ | |||
| "CustomMarshalers.dll;"+ | |||
| "IEExecRemote.dll;"+ | |||
| "IEHost.dll;"+ | |||
| "IIEHost.dll;"+ | |||
| "ISymWrapper.dll;"+ | |||
| "Microsoft.JScript.dll;"+ | |||
| "Microsoft.VisualBasic.dll;"+ | |||
| "Microsoft.VisualC.dll;"+ | |||
| "Microsoft.Vsa.dll;"+ | |||
| "Mscorcfg.dll;"+ | |||
| "RegCode.dll;"+ | |||
| "System.Configuration.Install.dll;"+ | |||
| "System.Data.dll;"+ | |||
| "System.Design.dll;"+ | |||
| "System.DirectoryServices.dll;"+ | |||
| "System.EnterpriseServices.dll;"+ | |||
| "System.dll;"+ | |||
| "System.Drawing.Design.dll;"+ | |||
| "System.Drawing.dll;"+ | |||
| "System.Management.dll;"+ | |||
| "System.Messaging.dll;"+ | |||
| "System.Runtime.Remoting.dll;"+ | |||
| "System.Runtime.Serialization.Formatters.Soap.dll;"+ | |||
| "System.Security.dll;"+ | |||
| "System.ServiceProcess.dll;"+ | |||
| "System.Web.dll;"+ | |||
| "System.Web.RegularExpressions.dll;"+ | |||
| "System.Web.Services.dll;"+ | |||
| "System.Windows.Forms.dll;"+ | |||
| "System.XML.dll;"; | |||
| /** | |||
| * get default reference list | |||
| * @return null or a string of references. | |||
| @@ -608,6 +625,67 @@ public class CSharp | |||
| else | |||
| return null; | |||
| } | |||
| /** icon for incorporation into apps | |||
| */ | |||
| protected File _win32res; | |||
| /** | |||
| * Set the win32 icon | |||
| * @param fileName path to the file. Can be relative, absolute, whatever. | |||
| */ | |||
| public void setWin32Res(File fileName) { | |||
| _win32res = fileName; | |||
| } | |||
| /** | |||
| * get the argument or null for no argument needed | |||
| * | |||
| * @return The Win32Icon Parameter to CSC | |||
| */ | |||
| protected String getWin32ResParameter() { | |||
| if (_win32res!=null) | |||
| return "/win32res:"+_win32res.toString(); | |||
| else | |||
| return null; | |||
| } | |||
| /** | |||
| * utf out flag | |||
| */ | |||
| protected boolean _utf8output=false; | |||
| /** | |||
| * enable generation of utf8 output from the compiler. | |||
| */ | |||
| public void setUtf8Output(boolean enabled) { | |||
| _utf8output=enabled; | |||
| } | |||
| protected String getUtf8OutpuParameter() { | |||
| return _utf8output?"/utf8output":null; | |||
| } | |||
| protected boolean _noconfig=false; | |||
| protected void setNoConfig(boolean enabled) { | |||
| _noconfig=enabled; | |||
| } | |||
| protected String getNoConfigParameter() { | |||
| return _noconfig?"/noconfig":null; | |||
| } | |||
| // /fullpaths | |||
| protected boolean _fullpaths=false; | |||
| public void setFullPaths(boolean enabled) { | |||
| _fullpaths=enabled; | |||
| } | |||
| protected String getFullPathsParameter() { | |||
| return _fullpaths?"/fullpaths":null; | |||
| } | |||
| /** defines list | |||
| * something like 'RELEASE;WIN32;NO_SANITY_CHECKS;;SOMETHING_ELSE' | |||
| @@ -720,6 +798,7 @@ public class CSharp | |||
| _additionalModules=null; | |||
| _includeDefaultReferences=true; | |||
| _extraOptions=null; | |||
| _fullpaths=true; | |||
| } | |||
| /** | |||
| @@ -760,8 +839,12 @@ public class CSharp | |||
| command.addArgument(getOutputFileParameter()); | |||
| command.addArgument(getIncludeDefaultReferencesParameter()); | |||
| command.addArgument(getDefaultReferenceParameter()); | |||
| command.addArgument(getWin32ResParameter()); | |||
| command.addArgument(getUtf8OutpuParameter()); | |||
| command.addArgument(getNoConfigParameter()); | |||
| command.addArgument(getFullPathsParameter()); | |||
| command.addArgument(getExtraOptionsParameter()); | |||
| //get dependencies list. | |||
| DirectoryScanner scanner = super.getDirectoryScanner(_srcDir); | |||
| String[] dependencies = scanner.getIncludedFiles(); | |||
| @@ -144,11 +144,9 @@ public class Ilasm | |||
| _listing = false; | |||
| _verbose=false; | |||
| _debug=true; | |||
| _owner=null; | |||
| _outputFile=null; | |||
| _failOnError=true; | |||
| _resourceFile=null; | |||
| _owner=null; | |||
| _extraOptions=null; | |||
| } | |||
| @@ -212,10 +210,6 @@ public class Ilasm | |||
| return null; | |||
| } | |||
| /** owner string is a slightly trivial barrier to disassembly | |||
| */ | |||
| protected String _owner; | |||
| /** | |||
| * Sets the Owner attribute | |||
| @@ -224,21 +218,9 @@ public class Ilasm | |||
| */ | |||
| public void setOwner(String s) { | |||
| _owner=s; | |||
| log("This option is not supported by ILASM as of Beta-2, and will be ignored",Project.MSG_WARN); | |||
| } | |||
| /** | |||
| * Gets the Owner switch for ilasm | |||
| * | |||
| * @return The Owner string | |||
| */ | |||
| protected String getOwnerParameter() { | |||
| if(notEmpty(_owner)) | |||
| return "/owner="+_owner; | |||
| else | |||
| return null; | |||
| } | |||
| /** test for a string containing something useful | |||
| * @param string to test | |||
| * @returns true if the argument is not null or empty | |||
| @@ -373,6 +355,24 @@ public class Ilasm | |||
| return _debug?"/debug":null; | |||
| } | |||
| /** file containing private key | |||
| */ | |||
| private File _keyfile; | |||
| public void setKeyfile(File keyfile) { | |||
| this._keyfile=keyfile; | |||
| } | |||
| /** get the argument or null for no argument needed | |||
| */ | |||
| protected String getKeyfileParameter() { | |||
| if(_keyfile!=null) | |||
| return "/keyfile:"+_keyfile.toString(); | |||
| else | |||
| return null; | |||
| } | |||
| /** any extra command options? | |||
| */ | |||
| protected String _extraOptions; | |||
| @@ -446,9 +446,9 @@ public class Ilasm | |||
| command.addArgument(getTargetTypeParameter()); | |||
| command.addArgument(getListingParameter()); | |||
| command.addArgument(getOutputFileParameter()); | |||
| command.addArgument(getOwnerParameter()); | |||
| command.addArgument(getResourceFileParameter()); | |||
| command.addArgument(getVerboseParameter()); | |||
| command.addArgument(getKeyfileParameter()); | |||
| command.addArgument(getExtraOptionsParameter()); | |||