From 0a5ec434c83e1e9bdec95b4a59f5f0f34ecb05ba Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Fri, 26 Sep 2014 13:39:27 +0100 Subject: [PATCH 01/14] Preliminary support for postgresql --- default.ps1 | 2 +- src/Dbdeploy.Console/OptionsManager.cs | 2 +- .../Database/DatabaseSchemaVersionManager.cs | 14 ++- src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs | 4 +- .../Database/PostgresqlDbmsSyntax.cs | 38 +++++++ src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj | 18 +++ .../CreateSchemaVersionTable.postgresql.sql | 12 ++ .../Resources/postgresql_apply.vm | 18 +++ .../Resources/postgresql_undo.vm | 15 +++ src/Net.Sf.Dbdeploy/packages.config | 1 + src/Test.Net.Sf.Dbdeploy/App.config | 2 + .../Database/DbProvidersTest.cs | 6 + ...tgresqlDatabaseSchemaVersionManagerTest.cs | 104 ++++++++++++++++++ .../Database/ScriptGenerationTest.cs | 2 +- .../Database/postgresql_expected.sql | 32 ++++++ .../Test.Net.Sf.Dbdeploy.csproj | 10 ++ src/Test.Net.Sf.Dbdeploy/packages.config | 1 + src/dbproviders.xml | 5 + 18 files changed, 281 insertions(+), 5 deletions(-) create mode 100644 src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs create mode 100644 src/Net.Sf.Dbdeploy/Resources/CreateSchemaVersionTable.postgresql.sql create mode 100644 src/Net.Sf.Dbdeploy/Resources/postgresql_apply.vm create mode 100644 src/Net.Sf.Dbdeploy/Resources/postgresql_undo.vm create mode 100644 src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs create mode 100644 src/Test.Net.Sf.Dbdeploy/Resources/Database/postgresql_expected.sql diff --git a/default.ps1 b/default.ps1 index 7747d1e..227abf2 100644 --- a/default.ps1 +++ b/default.ps1 @@ -1 +1 @@ -$framework = '4.0' Properties { $root_dir = Split-Path $psake.build_script_file $build_artifacts_dir = "$root_dir\build\" $package_dir = "$root_dir\package" $code_dir = "source" $solution = "src\dbdeploy.net.sln" $api_key_file = "bintray.api.key" $configuration = "Debug" $scripts_dir = "$root_dir\scripts" } Task Build { Exec { msbuild $solution } } Task Clean { Exec { msbuild "$solution" /t:Clean /p:Configuration=$configuration /v:quiet "/p:OutDir=$build_artifacts_dir\" } if (Test-Path $build_artifacts_dir){ Remove-Item $build_artifacts_dir -recurse } if (Test-Path $package_dir){ Remove-Item $package_dir -recurse } } Task BuildPackage -depends Clean -description "Builds a package on 'build'. git needs to be on the path " { if (-not (Test-Path $build_artifacts_dir)){ mkdir $build_artifacts_dir } if (-not (Test-Path $package_dir)){ mkdir $package_dir } $version, $commits, $hash = $(git describe --tags --long) -split "-" $version = $version -replace "v","" # remove the v because the correct format for assemblies does not include include $hash = $hash.Substring(1) # the hash starts with g, for git, remove it $date_tag = $(get-date -Uformat "%Y%m%d_%H%M") $version_cs_content = @" // Do not commit the changes to this file. using System.Reflection; [assembly: AssemblyVersionAttribute("$version")] [assembly: AssemblyInformationalVersionAttribute("$version-$commits-$hash-$date_tag")] [assembly: AssemblyFileVersionAttribute("$version")] "@ $version_cs_content | set-content .\src\SolutionVersionAssemblyInfo.cs Write-Host "Building" -ForegroundColor Green Exec { msbuild "$solution" /t:Build /p:Configuration=$configuration /v:quiet "/p:OutDir=$build_artifacts_dir" } foreach($filename in @('Net.Sf.Dbdeploy.ilmerge.dll', 'dbdeploy.ilmerge.exe', 'dbdeploy.NAnt.ilmerge.dll','dbdeploy.Powershell.ilmerge.dll','msbuild.dbdeploy.task.ilmerge.dll')){ $original = $filename.Replace(".ilmerge.",".") Move-Item $build_artifacts_dir\$original $build_artifacts_dir\$filename } tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\Net.Sf.Dbdeploy.dll Net.Sf.Dbdeploy.ilmerge.dll nvelocity.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:exe /out:$build_artifacts_dir\dbdeploy.exe dbdeploy.ilmerge.exe Net.Sf.Dbdeploy.dll NDesk.Options.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\dbdeploy.NAnt.dll dbdeploy.NAnt.ilmerge.dll NAnt.Core.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\dbdeploy.Powershell.dll dbdeploy.Powershell.ilmerge.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\msbuild.dbdeploy.task.dll msbuild.dbdeploy.task.ilmerge.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt mkdir $build_artifacts_dir\console mkdir $build_artifacts_dir\powershell mkdir $build_artifacts_dir\nant mkdir $build_artifacts_dir\msbuild mkdir $build_artifacts_dir\lib mkdir $build_artifacts_dir\scripts Copy-Item -Path $build_artifacts_dir\dbdeploy.exe -Destination $build_artifacts_dir\console Copy-Item -Path $build_artifacts_dir\dbdeploy.Powershell.dll -Destination $build_artifacts_dir\powershell Copy-Item -Path $build_artifacts_dir\dbdeploy.NAnt.dll -Destination $build_artifacts_dir\nant Copy-Item -Path $build_artifacts_dir\msbuild.dbdeploy.task.dll -Destination $build_artifacts_dir\msbuild Copy-Item -Path $build_artifacts_dir\Net.Sf.Dbdeploy.dll -Destination $build_artifacts_dir\lib Copy-Item -Path $scripts_dir\*.sql -Destination $build_artifacts_dir\scripts Get-ChildItem build -Exclude console,msbuild,nant,powershell,scripts,lib |Remove-Item -recurse Write-Host "Creating packages" -ForegroundColor Green Get-ChildItem $build_artifacts_dir\ -recurse | Write-Zip -IncludeEmptyDirectories -EntryPathRoot "build" -OutputPath $package_dir\dbdeploy.net-$version.zip git checkout .\src\SolutionVersionAssemblyInfo.cs Write-Host "Package created at $package_dir\dbdeploy.net-$version.zip" -ForegroundColor Green } Task PublishPackage -description "Publish last packaged version " { if (-not (Test-Path $api_key_file)){ throw "Missing api username and key for bintray at '$api_key_file'. Needs to a file containing just . Grab it at https://bintray.com/profile/edit" } $latest_package = (Get-ChildItem $package_dir)[0] $version = $latest_package.BaseName.Split("-")[1] $root_api_url = "https://api.bintray.com" $api_key_contents = (Get-Content $api_key_file).Trim() $api_username = $api_key_contents.split(" ")[0] $api_key = $api_key_contents.split(" ")[1] $web_client = new-object System.Net.WebClient # force the basic auth header to avoid two trips (one for the 401 and another with the header) $basic_auth_header= [Convert]::ToBase64String([System.Text.Encoding]::Utf8.GetBytes($api_username+":"+$api_key)) $web_client.Headers["Authorization"] = "Basic "+$basic_auth_header $web_client.Uploadfile("$root_api_url/content/brunomlopes/generic/dbdeploy.NET/$version/$($latest_package.Name)", "PUT", $latest_package.FullName) $web_client.UploadData("$root_api_url/content/brunomlopes/generic/dbdeploy.NET/$version/publish", "POST", [System.Text.Encoding]::Utf8.GetBytes("{'discard':false}")) } Task Help { Write-Documentation } Task default -depends Help \ No newline at end of file +$framework = '4.0' Properties { $root_dir = Split-Path $psake.build_script_file $build_artifacts_dir = "$root_dir\build\" $package_dir = "$root_dir\package" $code_dir = "source" $solution = "src\dbdeploy.net.sln" $api_key_file = "bintray.api.key" $configuration = "Debug" $scripts_dir = "$root_dir\scripts" } Task Build { Exec { msbuild $solution } } Task Clean { Exec { msbuild "$solution" /t:Clean /p:Configuration=$configuration /v:quiet "/p:OutDir=$build_artifacts_dir\" } if (Test-Path $build_artifacts_dir){ Remove-Item $build_artifacts_dir -recurse } if (Test-Path $package_dir){ Remove-Item $package_dir -recurse } } Task BuildPackage -depends Clean -description "Builds a package on 'build'. git needs to be on the path " { if (-not (Test-Path $build_artifacts_dir)){ mkdir $build_artifacts_dir } if (-not (Test-Path $package_dir)){ mkdir $package_dir } $version, $commits, $hash = $(git describe --tags --long) -split "-" $version = $version -replace "v","" # remove the v because the correct format for assemblies does not include include $hash = $hash.Substring(1) # the hash starts with g, for git, remove it $date_tag = $(get-date -Uformat "%Y%m%d_%H%M") $version_cs_content = @" // Do not commit the changes to this file. using System.Reflection; [assembly: AssemblyVersionAttribute("$version")] [assembly: AssemblyInformationalVersionAttribute("$version-$commits-$hash-$date_tag")] [assembly: AssemblyFileVersionAttribute("$version")] "@ $version_cs_content | set-content .\src\SolutionVersionAssemblyInfo.cs Write-Host "Building" -ForegroundColor Green Exec { msbuild "$solution" /t:Build /p:Configuration=$configuration /v:quiet "/p:OutDir=$build_artifacts_dir" } foreach($filename in @('Net.Sf.Dbdeploy.ilmerge.dll', 'dbdeploy.ilmerge.exe', 'dbdeploy.NAnt.ilmerge.dll','dbdeploy.Powershell.ilmerge.dll','msbuild.dbdeploy.task.ilmerge.dll')){ $original = $filename.Replace(".ilmerge.",".") Move-Item $build_artifacts_dir\$original $build_artifacts_dir\$filename } tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\Net.Sf.Dbdeploy.dll Net.Sf.Dbdeploy.ilmerge.dll nvelocity.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:exe /out:$build_artifacts_dir\dbdeploy.exe dbdeploy.ilmerge.exe Net.Sf.Dbdeploy.dll NDesk.Options.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\dbdeploy.NAnt.dll dbdeploy.NAnt.ilmerge.dll NAnt.Core.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\dbdeploy.Powershell.dll dbdeploy.Powershell.ilmerge.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\msbuild.dbdeploy.task.dll msbuild.dbdeploy.task.ilmerge.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt mkdir $build_artifacts_dir\console mkdir $build_artifacts_dir\powershell mkdir $build_artifacts_dir\nant mkdir $build_artifacts_dir\msbuild mkdir $build_artifacts_dir\lib mkdir $build_artifacts_dir\scripts Copy-Item -Path $build_artifacts_dir\dbdeploy.exe -Destination $build_artifacts_dir\console Copy-Item -Path $build_artifacts_dir\dbdeploy.Powershell.dll -Destination $build_artifacts_dir\powershell Copy-Item -Path $build_artifacts_dir\dbdeploy.NAnt.dll -Destination $build_artifacts_dir\nant Copy-Item -Path $build_artifacts_dir\msbuild.dbdeploy.task.dll -Destination $build_artifacts_dir\msbuild Copy-Item -Path $build_artifacts_dir\Net.Sf.Dbdeploy.dll -Destination $build_artifacts_dir\lib Copy-Item -Path $scripts_dir\*.sql -Destination $build_artifacts_dir\scripts Get-ChildItem build -Exclude console,msbuild,nant,powershell,scripts,lib |Remove-Item -recurse Write-Host "Creating packages" -ForegroundColor Green Get-ChildItem $build_artifacts_dir\ -recurse | Write-Zip -IncludeEmptyDirectories -EntryPathRoot "build" -OutputPath $package_dir\dbdeploy.net-$version.zip nuget pack dbdeploy.net.nuspec -version $version -OutputDirectory $package_dir -Verbosity quiet git checkout .\src\SolutionVersionAssemblyInfo.cs Write-Host "Package created at $package_dir\dbdeploy.net-$version.zip" -ForegroundColor Green Write-Host "Nuget package created at $package_dir\dbdeploy.net-$version.nuget" -ForegroundColor Green } Task PublishPackage -description "Publish last packaged version " { if (-not (Test-Path $api_key_file)){ throw "Missing api username and key for bintray at '$api_key_file'. Needs to a file containing just . Grab it at https://bintray.com/profile/edit" } $latest_package = (Get-ChildItem $package_dir)[0] $version = $latest_package.BaseName.Split("-")[1] $root_api_url = "https://api.bintray.com" $api_key_contents = (Get-Content $api_key_file).Trim() $api_username = $api_key_contents.split(" ")[0] $api_key = $api_key_contents.split(" ")[1] $web_client = new-object System.Net.WebClient # force the basic auth header to avoid two trips (one for the 401 and another with the header) $basic_auth_header= [Convert]::ToBase64String([System.Text.Encoding]::Utf8.GetBytes($api_username+":"+$api_key)) $web_client.Headers["Authorization"] = "Basic "+$basic_auth_header $web_client.Uploadfile("$root_api_url/content/brunomlopes/generic/dbdeploy.NET/$version/$($latest_package.Name)", "PUT", $latest_package.FullName) $web_client.UploadData("$root_api_url/content/brunomlopes/generic/dbdeploy.NET/$version/publish", "POST", [System.Text.Encoding]::Utf8.GetBytes("{'discard':false}")) } Task Help { Write-Documentation } Task default -depends Help \ No newline at end of file diff --git a/src/Dbdeploy.Console/OptionsManager.cs b/src/Dbdeploy.Console/OptionsManager.cs index e643f0b..a637bbb 100644 --- a/src/Dbdeploy.Console/OptionsManager.cs +++ b/src/Dbdeploy.Console/OptionsManager.cs @@ -87,7 +87,7 @@ private static OptionSet Initialize(DbDeployConfig config, ConfigFileInfo config options .Add( "d|dbms=", - "DBMS type ('mssql', 'mysql' or 'ora')", + "DBMS type ('mssql', 'mysql', 'ora' or 'postgres')", s => config.Dbms = s) .Add( diff --git a/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs b/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs index 8f3eae5..dbe314f 100755 --- a/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs +++ b/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs @@ -70,7 +70,7 @@ public virtual IList GetAppliedChanges() var changeEntry = new ChangeEntry(folder, scriptNumber); changeEntry.ChangeId = GetValue(reader, "ChangeId"); changeEntry.ScriptName = GetValue(reader, "ScriptName"); - changeEntry.Status = (ScriptStatus)GetValue(reader, "ScriptStatus"); + changeEntry.Status = (ScriptStatus)GetByteValue(reader, "ScriptStatus"); changeEntry.Output = GetValue(reader, "ScriptOutput"); changes.Add(changeEntry); @@ -184,6 +184,18 @@ private static T GetValue(IDataReader reader, string name) return value; } + // Npgsql doesn't have a mapping to byte that I know of. + // This is here to support that particular case + private static byte GetByteValue(IDataReader reader, string name) + { + var columnValue = reader[name]; + if (columnValue != DBNull.Value) + { + return Convert.ToByte(columnValue); + } + return default(byte); + } + /// /// Creates the change log table in the database. /// diff --git a/src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs b/src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs index 8d4e8fd..1dbbca0 100755 --- a/src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs +++ b/src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs @@ -30,8 +30,10 @@ public virtual IDbmsSyntax CreateDbmsSyntax() return new MsSqlDbmsSyntax(); case "mysql": return new MySqlDbmsSyntax(); + case "postgresql": + return new PostgresqlDbmsSyntax(); default: - throw new ArgumentException("Supported dbms: ora, mssql, mysql"); + throw new ArgumentException("Supported dbms: ora, mssql, mysql, postgresql"); } } diff --git a/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs b/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs new file mode 100644 index 0000000..66b0a60 --- /dev/null +++ b/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs @@ -0,0 +1,38 @@ +namespace Net.Sf.Dbdeploy.Database +{ + public class PostgresqlDbmsSyntax : DbmsSyntax + { + /// + /// Initializes a new instance of the class. + /// + public PostgresqlDbmsSyntax() : base("postgresql") + {} + + public override string TableExists(string tableName) + { + return base.TableExists(tableName.ToLowerInvariant()); + } + + /// + /// Gets the get timestamp. + /// + /// + /// The get timestamp. + /// + public override string CurrentTimestamp + { + get { return "CURRENT_DATE"; } + } + + /// + /// Gets the syntax to get the current user. + /// + /// + /// The current user syntax. + /// + public override string CurrentUser + { + get { return "CURRENT_USER"; } + } + } +} \ No newline at end of file diff --git a/src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj b/src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj index cbdca51..9871d42 100755 --- a/src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj +++ b/src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj @@ -71,6 +71,12 @@ + + ..\packages\Npgsql.2.2.1\lib\net40\Mono.Security.dll + + + ..\packages\Npgsql.2.2.1\lib\net40\Npgsql.dll + ..\packages\NVelocity.1.0.3\lib\NVelocity.dll @@ -96,6 +102,7 @@ + @@ -189,6 +196,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + @@ -211,6 +224,11 @@ PreserveNewest + + + PreserveNewest + + + + ..\packages\Npgsql.2.2.1\lib\net40\Mono.Security.dll + False ..\packages\Moq.4.1.1308.2321\lib\net40\Moq.dll @@ -86,6 +89,9 @@ False ..\..\lib\NAnt.Core.dll + + ..\packages\Npgsql.2.2.1\lib\net40\Npgsql.dll + False ..\..\lib\nunit.core.dll @@ -124,6 +130,7 @@ + @@ -218,6 +225,9 @@ Always + + Always + diff --git a/src/Test.Net.Sf.Dbdeploy/packages.config b/src/Test.Net.Sf.Dbdeploy/packages.config index 6e63897..f28c5eb 100644 --- a/src/Test.Net.Sf.Dbdeploy/packages.config +++ b/src/Test.Net.Sf.Dbdeploy/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file diff --git a/src/dbproviders.xml b/src/dbproviders.xml index ac3400a..5e34dcd 100755 --- a/src/dbproviders.xml +++ b/src/dbproviders.xml @@ -17,4 +17,9 @@ assemblyName="MySql.Data, Version=1.0.7.30072, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection" /> + From f69bd5836bd9112fe9e08010f9b5d49cadda592b Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Fri, 26 Sep 2014 18:51:12 +0100 Subject: [PATCH 02/14] Can now update postgresql databases --- src/Dbdeploy.Console/OptionsManager.cs | 2 +- .../Database/DatabaseSchemaVersionManager.cs | 2 +- ...tgresqlDatabaseSchemaVersionManagerTest.cs | 89 ++++++++++++++++++- 3 files changed, 89 insertions(+), 4 deletions(-) diff --git a/src/Dbdeploy.Console/OptionsManager.cs b/src/Dbdeploy.Console/OptionsManager.cs index a637bbb..86c34b5 100644 --- a/src/Dbdeploy.Console/OptionsManager.cs +++ b/src/Dbdeploy.Console/OptionsManager.cs @@ -87,7 +87,7 @@ private static OptionSet Initialize(DbDeployConfig config, ConfigFileInfo config options .Add( "d|dbms=", - "DBMS type ('mssql', 'mysql', 'ora' or 'postgres')", + "DBMS type ('mssql', 'mysql', 'ora' or 'postgresql')", s => config.Dbms = s) .Add( diff --git a/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs b/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs index dbe314f..14fa3c7 100755 --- a/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs +++ b/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs @@ -129,7 +129,7 @@ public virtual void RecordScriptStatus(ChangeScript script, ScriptStatus status, { var sql = string.Format( CultureInfo.InvariantCulture, -@"INSERT INTO {0} (Folder, ScriptNumber, ScriptName, StartDate, CompleteDate, AppliedBy, ScriptStatus, ScriptOutput) VALUES (@1, @2, @3, {1}, {2}, {3}, @4, @5) +@"INSERT INTO {0} (Folder, ScriptNumber, ScriptName, StartDate, CompleteDate, AppliedBy, ScriptStatus, ScriptOutput) VALUES (@1, @2, @3, {1}, {2}, {3}, @4, @5) ; SELECT ChangeId FROM {0} WHERE Folder = @1 and ScriptNumber = @2", this.changeLogTableName, this.syntax.CurrentTimestamp, diff --git a/src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs b/src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs index e908d5a..6c3bd56 100644 --- a/src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs +++ b/src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs @@ -6,6 +6,11 @@ using System.Linq; using System.Reflection; using System.Text; +using Dbdeploy.Powershell; +using Net.Sf.Dbdeploy.Appliers; +using Net.Sf.Dbdeploy.Configuration; +using Net.Sf.Dbdeploy.Database.SqlCmd; +using Net.Sf.Dbdeploy.Scripts; using Npgsql; using NUnit.Framework; @@ -20,7 +25,7 @@ class PostgresqlDatabaseSchemaVersionManagerTest : AbstractDatabaseSchemaVersion protected override void EnsureTableDoesNotExist(string tableName) { - ExecuteSql("DROP TABLE IF EXISTS " + TableName); + ExecuteSql("DROP TABLE IF EXISTS " + tableName); } protected override string ConnectionString @@ -85,7 +90,79 @@ public override void TestShouldReturnEmptySetWhenTableHasNoRows() public override void TestShouldCreateChangeLogTableWhenToldToDoSo() { base.TestShouldCreateChangeLogTableWhenToldToDoSo(); + } + + [Test] + public void TestChangeDateIncludesTime() + { + this.EnsureTableDoesNotExist(TableName); + + var factory = new DbmsFactory(this.Dbms, this.ConnectionString); + var dbmsSyntax = factory.CreateDbmsSyntax(); + + var changeScripts = new ChangeScript[] + { + new StubChangeScript(1, "1.test.sql", "SELECT 1;"), + }; + + var queryExecuter = new QueryExecuter(factory); + + var doScriptApplier = new DirectToDbApplier( + queryExecuter, + databaseSchemaVersion, + QueryStatementSplitter, + dbmsSyntax, + TableName, + new LambdaTextWriter(s => { })); + doScriptApplier.Apply(changeScripts, true); + + var now = DateTime.UtcNow; + var date = ExecuteScalar("SELECT CompleteDate FROM {0} LIMIT 1", TableName); + Assert.Less(Math.Abs((now - date).TotalMilliseconds), TimeSpan.FromSeconds(1).TotalMilliseconds); + + } + + [Test] + public void TestCanExecuteAnUpdateScript() + { + this.EnsureTableDoesNotExist("TableWeWillUse"); + this.EnsureTableDoesNotExist(TableName); + + var factory = new DbmsFactory(this.Dbms, this.ConnectionString); + var dbmsSyntax = factory.CreateDbmsSyntax(); + + var changeScripts = new ChangeScript[] + { + new StubChangeScript(1, "1.test.sql", "CREATE TABLE TableWeWillUse (Id int NULL);"), + new StubChangeScript(2, "2.test.sql", "INSERT INTO TableWeWillUse VALUES (1);"), + }; + + var queryExecuter = new QueryExecuter(factory); + + + var doScriptApplier = new DirectToDbApplier( + queryExecuter, + databaseSchemaVersion, + QueryStatementSplitter, + dbmsSyntax, + TableName, + new LambdaTextWriter(s => {})); + + var changeScriptRepository = new ChangeScriptRepository(changeScripts.ToList()); + + var controller = new Controller( + changeScriptRepository, + databaseSchemaVersion, + doScriptApplier, + null, + true, + new LambdaTextWriter(s => { })); + + controller.ProcessChangeScripts(null); + + this.AssertTableExists("TableWeWillUse"); } + protected override IDbConnection GetConnection() { @@ -99,6 +176,14 @@ protected override void InsertRowIntoTable(int i) commandBuilder.Append("(ScriptNumber, Folder, StartDate, CompleteDate, AppliedBy, ScriptName, ScriptStatus, ScriptOutput)"); commandBuilder.AppendFormat(" VALUES ({0}, '{1}', CURRENT_DATE, CURRENT_DATE, CURRENT_USER, 'Unit test', 1, '')", i, FOLDER); ExecuteSql(commandBuilder.ToString()); - } + } + + private static QueryStatementSplitter QueryStatementSplitter = new QueryStatementSplitter + { + Delimiter = ";", + DelimiterType = DbDeployDefaults.DelimiterType, + LineEnding = DbDeployDefaults.LineEnding, + }; + } } From 87c710ac79171ea1e53a44152de8cbfbbcff5ac1 Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Fri, 26 Sep 2014 18:51:45 +0100 Subject: [PATCH 03/14] Fix bug with current datetime --- src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs b/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs index 66b0a60..4bd0e52 100644 --- a/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs +++ b/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs @@ -21,7 +21,7 @@ public override string TableExists(string tableName) /// public override string CurrentTimestamp { - get { return "CURRENT_DATE"; } + get { return "CURRENT_TIMESTAMP"; } } /// From 8d8df55f76602511053c7c530b5f0c272a3fe367 Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Fri, 26 Sep 2014 18:53:49 +0100 Subject: [PATCH 04/14] Fix small bugs with version ordering and deploying --- src/Net.Sf.Dbdeploy/DbDeployer.cs | 2 ++ src/Net.Sf.Dbdeploy/UniqueChange.cs | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Net.Sf.Dbdeploy/DbDeployer.cs b/src/Net.Sf.Dbdeploy/DbDeployer.cs index 3988ac0..ec83d4f 100644 --- a/src/Net.Sf.Dbdeploy/DbDeployer.cs +++ b/src/Net.Sf.Dbdeploy/DbDeployer.cs @@ -59,6 +59,8 @@ public void Execute(DbDeployConfig config, TextWriter infoWriter) if (config.OutputFile != null) { + if(config.OutputFile.Exists) config.OutputFile.Delete(); + doWriter = new StreamWriter(config.OutputFile.OpenWrite(), config.Encoding); doScriptApplier = new TemplateBasedApplier( diff --git a/src/Net.Sf.Dbdeploy/UniqueChange.cs b/src/Net.Sf.Dbdeploy/UniqueChange.cs index 411f827..d58d0dc 100644 --- a/src/Net.Sf.Dbdeploy/UniqueChange.cs +++ b/src/Net.Sf.Dbdeploy/UniqueChange.cs @@ -46,8 +46,17 @@ public UniqueChange(string folder, int scriptNumber) this.Folder = folder; this.ScriptNumber = scriptNumber; - Version version; - Version.TryParse(folder.TrimStart('v'), out version); + Version version; + var folderWithoutV = folder.TrimStart('v','V'); + int singleDigitVersion; + if(int.TryParse(folderWithoutV, out singleDigitVersion)) + { + version = new Version(singleDigitVersion,0); + } + else + { + Version.TryParse(folderWithoutV, out version); + } this.Version = version; } From 2c5260d470590813a24fbb2a91b2d4b1db1e5a72 Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Fri, 26 Sep 2014 18:54:15 +0100 Subject: [PATCH 05/14] Push-dbupdate now autocreates table if needed --- src/Dbdeploy.Powershell/Commands/DbUpdateBase.cs | 14 ++++++++++++++ .../Commands/ExportDbUpdate.cs | 15 +++------------ src/Dbdeploy.Powershell/Commands/PushDbUpdate.cs | 8 +------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/Dbdeploy.Powershell/Commands/DbUpdateBase.cs b/src/Dbdeploy.Powershell/Commands/DbUpdateBase.cs index 975af2c..f198b70 100644 --- a/src/Dbdeploy.Powershell/Commands/DbUpdateBase.cs +++ b/src/Dbdeploy.Powershell/Commands/DbUpdateBase.cs @@ -87,5 +87,19 @@ protected string ToAbsolutePath(string deltasDirectory) return deltasDirectory; } + + protected DbDeployConfig ConfigFromParameters() + { + return new DbDeployConfig + { + Dbms = this.DatabaseType, + ConnectionString = this.ConnectionString, + ChangeLogTableName = this.TableName, + ScriptDirectory = new DirectoryInfo(this.deltasDirectory), + AutoCreateChangeLogTable = this.AutoCreateChangeLogTable, + ForceUpdate = this.ForceUpdate, + UseSqlCmd = this.UseSqlCmd + }; + } } } \ No newline at end of file diff --git a/src/Dbdeploy.Powershell/Commands/ExportDbUpdate.cs b/src/Dbdeploy.Powershell/Commands/ExportDbUpdate.cs index e83ec3e..ba4a31d 100644 --- a/src/Dbdeploy.Powershell/Commands/ExportDbUpdate.cs +++ b/src/Dbdeploy.Powershell/Commands/ExportDbUpdate.cs @@ -30,21 +30,12 @@ protected override void ProcessRecord() return; } - var config = new DbDeployConfig - { - Dbms = this.DatabaseType, - ConnectionString = this.ConnectionString, - ChangeLogTableName = this.TableName, - ScriptDirectory = new DirectoryInfo(this.deltasDirectory), - AutoCreateChangeLogTable = this.AutoCreateChangeLogTable, - ForceUpdate = this.ForceUpdate, - UseSqlCmd = this.UseSqlCmd, - OutputFile = new FileInfo(this.ToAbsolutePath(this.OutputFile)) - }; + var config = ConfigFromParameters(); + config.OutputFile = new FileInfo(this.ToAbsolutePath(this.OutputFile)); if (!string.IsNullOrEmpty(this.UndoOutputFile)) { - config.OutputFile = new FileInfo(this.ToAbsolutePath(UndoOutputFile)); + config.UndoOutputFile = new FileInfo(this.ToAbsolutePath(UndoOutputFile)); } var deployer = new DbDeployer(); diff --git a/src/Dbdeploy.Powershell/Commands/PushDbUpdate.cs b/src/Dbdeploy.Powershell/Commands/PushDbUpdate.cs index 335e898..7c5cc7e 100644 --- a/src/Dbdeploy.Powershell/Commands/PushDbUpdate.cs +++ b/src/Dbdeploy.Powershell/Commands/PushDbUpdate.cs @@ -13,13 +13,7 @@ protected override void ProcessRecord() { base.ProcessRecord(); - var config = new DbDeployConfig - { - Dbms = DatabaseType, - ConnectionString = ConnectionString, - ChangeLogTableName = TableName, - ScriptDirectory = new DirectoryInfo(deltasDirectory), - }; + var config = ConfigFromParameters(); var deployer = new DbDeployer(); deployer.Execute(config, new LambdaTextWriter(WriteVerbose)); From cce7f989187b9889709885a0fedab261287d4c56 Mon Sep 17 00:00:00 2001 From: Tony Briscolino Date: Mon, 15 Dec 2014 11:16:50 -0600 Subject: [PATCH 06/14] changed syntax of apply script to use current_timestamp instead of getdate for mysql --- src/Net.Sf.Dbdeploy/Resources/mysql_apply.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Net.Sf.Dbdeploy/Resources/mysql_apply.vm b/src/Net.Sf.Dbdeploy/Resources/mysql_apply.vm index bcade98..4409e2d 100644 --- a/src/Net.Sf.Dbdeploy/Resources/mysql_apply.vm +++ b/src/Net.Sf.Dbdeploy/Resources/mysql_apply.vm @@ -8,7 +8,7 @@ INSERT INTO ${changeLogTableName} (Folder, ScriptNumber, ScriptName, StartDate, ${script.getContent()} UPDATE ${changeLogTableName} -SET CompleteDate = getdate(), ScriptStatus = 1, ScriptOutput = '' +SET CompleteDate = current_timestamp(), ScriptStatus = 1, ScriptOutput = '' WHERE Folder = '$script.Folder' AND ScriptNumber = $script.ScriptNumber$!{separator}${delimiter} COMMIT$!{separator}${delimiter} From dbe07348f425df5f404c6b1445afb834cfa1811e Mon Sep 17 00:00:00 2001 From: Tony Briscolino Date: Mon, 15 Dec 2014 11:20:45 -0600 Subject: [PATCH 07/14] upgrade nant to version 0.92 --- Tools/nant/README.txt | 22 +- Tools/nant/bin/NAnt.CompressionTasks.dll | Bin 36864 -> 36864 bytes Tools/nant/bin/NAnt.CompressionTasks.xml | 604 +- Tools/nant/bin/NAnt.Core.dll | Bin 376832 -> 409600 bytes Tools/nant/bin/NAnt.Core.xml | 11456 +++---- Tools/nant/bin/NAnt.DotNetTasks.dll | Bin 131072 -> 135168 bytes Tools/nant/bin/NAnt.DotNetTasks.xml | 5115 ++-- Tools/nant/bin/NAnt.MSNetTasks.dll | Bin 28672 -> 28672 bytes Tools/nant/bin/NAnt.MSNetTasks.xml | 528 +- Tools/nant/bin/NAnt.NUnit.dll | Bin 8704 -> 8704 bytes Tools/nant/bin/NAnt.NUnit.xml | 190 +- Tools/nant/bin/NAnt.NUnit1Tasks.dll | Bin 36864 -> 36864 bytes Tools/nant/bin/NAnt.NUnit1Tasks.xml | 338 +- Tools/nant/bin/NAnt.NUnit2Tasks.dll | Bin 32768 -> 32768 bytes Tools/nant/bin/NAnt.NUnit2Tasks.xml | 400 +- Tools/nant/bin/NAnt.SourceControlTasks.dll | Bin 40960 -> 40960 bytes Tools/nant/bin/NAnt.SourceControlTasks.xml | 1580 +- Tools/nant/bin/NAnt.VSNetTasks.dll | Bin 167936 -> 180224 bytes Tools/nant/bin/NAnt.VSNetTasks.xml | 3166 +- Tools/nant/bin/NAnt.VisualCppTasks.dll | Bin 49152 -> 49152 bytes Tools/nant/bin/NAnt.VisualCppTasks.xml | 1334 +- Tools/nant/bin/NAnt.Win32Tasks.dll | Bin 36864 -> 40960 bytes Tools/nant/bin/NAnt.Win32Tasks.xml | 1118 +- Tools/nant/bin/NAnt.exe | Bin 12800 -> 13312 bytes Tools/nant/bin/NAnt.exe.config | 132 +- Tools/nant/bin/NAnt.xml | 88 +- Tools/nant/bin/NDoc.Documenter.NAnt.dll | Bin 131072 -> 131072 bytes Tools/nant/bin/lib/net/1.0/nunit.core.dll | Bin 86016 -> 0 bytes .../nant/bin/lib/net/1.0/nunit.framework.dll | Bin 45056 -> 0 bytes Tools/nant/bin/lib/net/1.0/nunit.util.dll | Bin 86016 -> 0 bytes Tools/nant/contrib/NAnt.Contrib.Tasks.dll | Bin 1171456 -> 1236992 bytes Tools/nant/contrib/NAnt.Contrib.Tasks.xml | 24648 ++++++++-------- .../ReplaceCharacter/ReplaceCharacter.cs | 115 + .../Filters/ReplaceCharacter/default.build | 39 + .../HelloWindowsForms/HelloWindowsForms.build | 59 + .../HelloWindowsForms.vbproj | 107 + .../examples/HelloWindowsForms/MainForm.resx | 105 + .../examples/HelloWindowsForms/MainForm.vb | 60 + Tools/nant/examples/HelloWorld/HelloWorld.cs | 5 + Tools/nant/examples/HelloWorld/HelloWorld.js | 1 + Tools/nant/examples/HelloWorld/HelloWorld.vb | 8 + Tools/nant/examples/HelloWorld/default.build | 39 + .../NUnit2/ReferenceAssemblies/Helper.cs | 6 + .../ReferenceAssemblies/ReferenceTest.cs | 12 + .../NUnit2/ReferenceAssemblies/default.build | 47 + .../examples/ScriptTask/script-sample.build | 25 + Tools/nant/examples/Simple/Simple.build | 22 + Tools/nant/examples/Simple/Simple.cs | 5 + .../Solution/cpp/WinForms/AssemblyInfo.cpp | 58 + .../examples/Solution/cpp/WinForms/Form1.cpp | 15 + .../examples/Solution/cpp/WinForms/Form1.h | 59 + .../examples/Solution/cpp/WinForms/Form1.resX | 42 + .../examples/Solution/cpp/WinForms/ReadMe.txt | 33 + .../Solution/cpp/WinForms/WinForms.sln | 21 + .../Solution/cpp/WinForms/WinForms.vcproj | 194 + .../examples/Solution/cpp/WinForms/app.ico | Bin 0 -> 1078 bytes .../examples/Solution/cpp/WinForms/app.rc | 52 + .../examples/Solution/cpp/WinForms/cpp.build | 27 + .../examples/Solution/cpp/WinForms/resource.h | 3 + .../examples/Solution/cpp/WinForms/stdafx.cpp | 7 + .../examples/Solution/cpp/WinForms/stdafx.h | 14 + .../nant/examples/Solution/cpp/default.build | 11 + .../examples/Solution/cs/WinForms/App.ico | Bin 0 -> 1078 bytes .../Solution/cs/WinForms/AssemblyInfo.cs | 58 + .../examples/Solution/cs/WinForms/Form1.cs | 69 + .../examples/Solution/cs/WinForms/Form1.resx | 42 + .../Solution/cs/WinForms/WinForms.csproj | 119 + .../Solution/cs/WinForms/WinForms.sln | 21 + .../examples/Solution/cs/WinForms/cs.build | 28 + Tools/nant/examples/Solution/cs/default.build | 11 + .../Solution/vb/WinForms/AssemblyInfo.vb | 32 + .../examples/Solution/vb/WinForms/Form1.resx | 42 + .../examples/Solution/vb/WinForms/Form1.vb | 39 + .../Solution/vb/WinForms/WinForms.sln | 21 + .../Solution/vb/WinForms/WinForms.vbproj | 112 + .../examples/Solution/vb/WinForms/vb.build | 28 + Tools/nant/examples/Solution/vb/default.build | 11 + .../Solution/vjs/WinForms/AssemblyInfo.jsl | 58 + .../examples/Solution/vjs/WinForms/Form1.jsl | 67 + .../examples/Solution/vjs/WinForms/Form1.resx | 42 + .../Solution/vjs/WinForms/WinForms.sln | 21 + .../Solution/vjs/WinForms/WinForms.vjsproj | 106 + .../examples/Solution/vjs/WinForms/vjs.build | 27 + .../nant/examples/Solution/vjs/default.build | 11 + .../SimpleExtension.build | 25 + .../SimpleExtensionObject/SimpleExtension.cs | 12 + .../SimpleExtensionObject/circle.xsl | 16 + .../SimpleExtensionObject/circles.xml | 10 + Tools/nant/examples/UserTask/UserTask.cs | 31 + Tools/nant/examples/UserTask/default.build | 28 + Tools/nant/examples/examples.build | 16 + Tools/nant/schema/nant.xsd | 59 +- lib/NAnt.Core.dll | Bin 356352 -> 409600 bytes 93 files changed, 28267 insertions(+), 24805 deletions(-) delete mode 100755 Tools/nant/bin/lib/net/1.0/nunit.core.dll delete mode 100755 Tools/nant/bin/lib/net/1.0/nunit.framework.dll delete mode 100755 Tools/nant/bin/lib/net/1.0/nunit.util.dll create mode 100644 Tools/nant/examples/Filters/ReplaceCharacter/ReplaceCharacter.cs create mode 100644 Tools/nant/examples/Filters/ReplaceCharacter/default.build create mode 100644 Tools/nant/examples/HelloWindowsForms/HelloWindowsForms.build create mode 100644 Tools/nant/examples/HelloWindowsForms/HelloWindowsForms.vbproj create mode 100644 Tools/nant/examples/HelloWindowsForms/MainForm.resx create mode 100644 Tools/nant/examples/HelloWindowsForms/MainForm.vb create mode 100644 Tools/nant/examples/HelloWorld/HelloWorld.cs create mode 100644 Tools/nant/examples/HelloWorld/HelloWorld.js create mode 100644 Tools/nant/examples/HelloWorld/HelloWorld.vb create mode 100644 Tools/nant/examples/HelloWorld/default.build create mode 100644 Tools/nant/examples/NUnit2/ReferenceAssemblies/Helper.cs create mode 100644 Tools/nant/examples/NUnit2/ReferenceAssemblies/ReferenceTest.cs create mode 100644 Tools/nant/examples/NUnit2/ReferenceAssemblies/default.build create mode 100644 Tools/nant/examples/ScriptTask/script-sample.build create mode 100644 Tools/nant/examples/Simple/Simple.build create mode 100644 Tools/nant/examples/Simple/Simple.cs create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/AssemblyInfo.cpp create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/Form1.cpp create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/Form1.h create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/Form1.resX create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/ReadMe.txt create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/WinForms.sln create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/WinForms.vcproj create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/app.ico create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/app.rc create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/cpp.build create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/resource.h create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/stdafx.cpp create mode 100644 Tools/nant/examples/Solution/cpp/WinForms/stdafx.h create mode 100644 Tools/nant/examples/Solution/cpp/default.build create mode 100644 Tools/nant/examples/Solution/cs/WinForms/App.ico create mode 100644 Tools/nant/examples/Solution/cs/WinForms/AssemblyInfo.cs create mode 100644 Tools/nant/examples/Solution/cs/WinForms/Form1.cs create mode 100644 Tools/nant/examples/Solution/cs/WinForms/Form1.resx create mode 100644 Tools/nant/examples/Solution/cs/WinForms/WinForms.csproj create mode 100644 Tools/nant/examples/Solution/cs/WinForms/WinForms.sln create mode 100644 Tools/nant/examples/Solution/cs/WinForms/cs.build create mode 100644 Tools/nant/examples/Solution/cs/default.build create mode 100644 Tools/nant/examples/Solution/vb/WinForms/AssemblyInfo.vb create mode 100644 Tools/nant/examples/Solution/vb/WinForms/Form1.resx create mode 100644 Tools/nant/examples/Solution/vb/WinForms/Form1.vb create mode 100644 Tools/nant/examples/Solution/vb/WinForms/WinForms.sln create mode 100644 Tools/nant/examples/Solution/vb/WinForms/WinForms.vbproj create mode 100644 Tools/nant/examples/Solution/vb/WinForms/vb.build create mode 100644 Tools/nant/examples/Solution/vb/default.build create mode 100644 Tools/nant/examples/Solution/vjs/WinForms/AssemblyInfo.jsl create mode 100644 Tools/nant/examples/Solution/vjs/WinForms/Form1.jsl create mode 100644 Tools/nant/examples/Solution/vjs/WinForms/Form1.resx create mode 100644 Tools/nant/examples/Solution/vjs/WinForms/WinForms.sln create mode 100644 Tools/nant/examples/Solution/vjs/WinForms/WinForms.vjsproj create mode 100644 Tools/nant/examples/Solution/vjs/WinForms/vjs.build create mode 100644 Tools/nant/examples/Solution/vjs/default.build create mode 100644 Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.build create mode 100644 Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.cs create mode 100644 Tools/nant/examples/StyleTask/SimpleExtensionObject/circle.xsl create mode 100644 Tools/nant/examples/StyleTask/SimpleExtensionObject/circles.xml create mode 100644 Tools/nant/examples/UserTask/UserTask.cs create mode 100644 Tools/nant/examples/UserTask/default.build create mode 100644 Tools/nant/examples/examples.build diff --git a/Tools/nant/README.txt b/Tools/nant/README.txt index e0ba4b6..79edf19 100755 --- a/Tools/nant/README.txt +++ b/Tools/nant/README.txt @@ -55,12 +55,12 @@ Compilation and Installation You will need the .NET Framework SDK as well as the runtime components if you intend to compile programs. - Note: NAnt currently supports versions 1.0, 1.1 and 2.0 + Note: NAnt currently supports versions 1.0, 1.1, 2.0, 3.5, and 4.0 of the Microsoft .NET Framework. or - * Mono for Windows (version 1.0 or higher) + * Mono for Windows (version 2.0 or higher) Available from http://www.mono-project.com/downloads/ @@ -73,7 +73,7 @@ Compilation and Installation Available from: http://www.freedesktop.org/Software/pkgconfig - * A working Mono installation and development libraries (version 1.0 or higher) + * A working Mono installation and development libraries (version 2.0 or higher) Available from: http://www.mono-project.com/downloads/ @@ -85,28 +85,28 @@ Compilation and Installation GNU Make -------- - make install MONO= MCS=csc prefix= [DESTDIR=] + make install MONO= MCS=csc prefix= [DESTDIR=] [TARGET=] - eg. make install MONO= MCS=csc prefix="c:\Program Files" + eg. make install MONO= MCS=csc prefix="c:\Program Files" TARGET=net-2.0 NMake ----- - nmake -f Makefile.nmake install prefix= [DESTDIR=] + nmake -f Makefile.nmake install prefix= [DESTDIR=] [TARGET=] - eg. nmake -f Makefile.nmake install prefix="c:\Program Files" + eg. nmake -f Makefile.nmake install prefix="c:\Program Files" TARGET=net-4.0 Building NAnt using Mono: GNU Make -------- - make install prefix= [DESTDIR=] + make install prefix= [DESTDIR=] [TARGET=] - eg. make install prefix="c:\Program Files" + eg. make install prefix="c:\Program Files" TARGET=mono-4.0 NMake ----- - nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix= [DESTDIR=] + nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix= [DESTDIR=] [TARGET=] eg. nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix=/usr/local/ @@ -123,7 +123,7 @@ Documentation is available in HTML format, in the doc/ directory. License ------- -Copyright (C) 2001-2008 Gerry Shaw +Copyright (C) 2001-2012 Gerry Shaw This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Tools/nant/bin/NAnt.CompressionTasks.dll b/Tools/nant/bin/NAnt.CompressionTasks.dll index 20b1da07b6f794a83a159d14aa3d38261eca88ca..11c81c281312584ebb75dda9b3722af425a8a383 100755 GIT binary patch literal 36864 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 V0~HTcJW%mK#RC-&R6HOa_`iW2-0}bb diff --git a/Tools/nant/bin/NAnt.CompressionTasks.xml b/Tools/nant/bin/NAnt.CompressionTasks.xml index 9d90cb8..fb029f0 100755 --- a/Tools/nant/bin/NAnt.CompressionTasks.xml +++ b/Tools/nant/bin/NAnt.CompressionTasks.xml @@ -5,9 +5,9 @@ - - Summary description for ExpandTask. - + + Summary description for ExpandTask. + @@ -42,85 +42,92 @@ - - Overwrite files, even if they are newer than the corresponding - entries in the archive. The default is . - + + Overwrite files, even if they are newer than the corresponding + entries in the archive. The default is . + - - Expands a file packed using GZip compression. - - - Expands "test.tar.gz" to "test2.tar". - - - ]]> - - + + Expands a file packed using GZip compression. + + + Expands "test.tar.gz" to "test2.tar". + + + ]]> + + - - Extracts the file from the gzip archive. - + + Extracts the file from the gzip archive. + - - The file to expand. - + + The file to expand. + - - The destination file. - + + The destination file. + - - Creates a tar file from the specified filesets. - - - Uses #ziplib (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. - - - - Tar all files in ${build.dir} and ${doc.dir} into a file - called "backup.tar.gz", and apply gzip compression to it. - - - - - - - - - - - ]]> - - + + Creates a tar file from the specified filesets. + + + Uses #ziplib (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. + + + + Tar all files in ${build.dir} and ${doc.dir} into a file + called "backup.tar.gz", and apply gzip compression to it. + + + + + + + + + + + ]]> + + - - Creates the tar file. - + + Creates the tar file. + - - The tar file to create. - + + The tar file to create. + - - Include empty directories in the generated tar file. The default is - . - + + Include empty directories in the generated tar file. The default is + . + + + + + Ignore directory structure of source directory, compress all files + into a single directory. + The default value is . + - - The set of files to be included in the archive. - + + The set of files to be included in the archive. + @@ -128,39 +135,39 @@ - - Extracts files from a tar archive. - - - - Uses #ziplib - (SharpZipLib), an open source Zip/GZip library written entirely in C#. - - - - Extracts all files from a gzipped tar, preserving the directory structure. - - - ]]> - - + + Extracts files from a tar archive. + + + + Uses #ziplib + (SharpZipLib), an open source Zip/GZip library written entirely in C#. + + + + Extracts all files from a gzipped tar, preserving the directory structure. + + + ]]> + + - - Extracts the files from the archive. - + + Extracts the files from the archive. + - - The archive file to expand. - + + The archive file to expand. + - - The directory where to store the expanded file(s). The default is - the project base directory. - + + The directory where to store the expanded file(s). The default is + the project base directory. + @@ -168,143 +175,150 @@ - - Extracts files from a zip archive. - - - - Uses #ziplib - (SharpZipLib), an open source Zip/GZip library written entirely in C#. - - - - Extracts all the file from the zip, preserving the directory structure. - - - ]]> - - + + Extracts files from a zip archive. + + + + Uses #ziplib + (SharpZipLib), an open source Zip/GZip library written entirely in C#. + + + + Extracts all the file from the zip, preserving the directory structure. + + + ]]> + + - - Extracts the files from the zip file. - + + Extracts the files from the zip file. + - - The archive file to expand. - + + The archive file to expand. + - - The directory where the expanded files should be stored. The - default is the project base directory. - + + The directory where the expanded files should be stored. The + default is the project base directory. + - - The character encoding that has been used for filenames inside the - zip file. The default is the system's OEM code page. - + + The character encoding that has been used for filenames inside the + zip file. The default is the system's OEM code page. + - - Creates a zip file from the specified filesets. - - - - Uses #ziplib - (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. - - - - - Zip all files in ${build.dir} and ${doc.dir} into a file - called "backup.zip". - - - - - - - - - - - ]]> - - + + Creates a zip file from the specified filesets. + + + + Uses #ziplib + (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. + + + + + Zip all files in ${build.dir} and ${doc.dir} into a file + called "backup.zip". + + + + + + + + + + + ]]> + + - - Creates the zip file. - + + Creates the zip file. + - - The zip file to create. - + + The zip file to create. + - - The comment for the file. - + + The comment for the file. + - - Date/time stamp for the files in the format MM/DD/YYYY HH:MM:SS. - + + Date/time stamp for the files in the format MM/DD/YYYY HH:MM:SS. + - - Desired level of compression. Possible values are 0 (STORE only) - to 9 (highest). The default is 6. - + + Desired level of compression. Possible values are 0 (STORE only) + to 9 (highest). The default is 6. + - - Include empty directories in the generated zip file. The default is - . - + + Include empty directories in the generated zip file. The default is + . + + + + + Ignore directory structure of source directory, compress all files + into a single directory. + The default value is . + - - The set of files to be included in the archive. - + + The set of files to be included in the archive. + - - Specifies the behaviour when a duplicate file is found. The default - is . - + + Specifies the behaviour when a duplicate file is found. The default + is . + - - The character encoding to use for filenames and comment inside the - zip file. The default is the system's OEM code page. - + + The character encoding to use for filenames and comment inside the + zip file. The default is the system's OEM code page. + - - Specifies how entries with the same name should be processed. - + + Specifies how entries with the same name should be processed. + - - Overwrite existing entry with same name. - + + Overwrite existing entry with same name. + - - Preserve existing entry with the same name. - + + Preserve existing entry with the same name. + - - Report failure when two entries have the same name. - + + Report failure when two entries have the same name. + @@ -337,19 +351,19 @@ - - No compression. - + + No compression. + - - GZIP compression. - + + GZIP compression. + - - BZIP2 compression. - + + BZIP2 compression. + @@ -382,45 +396,45 @@ - - A 3 digit octal string, specify the user, group and other modes - in the standard Unix fashion. Only applies to plain files. The - default is 644. - + + A 3 digit octal string, specify the user, group and other modes + in the standard Unix fashion. Only applies to plain files. The + default is 644. + - - A 3 digit octal string, specify the user, group and other modes - in the standard Unix fashion. Only applies to directories. The - default is 755. - + + A 3 digit octal string, specify the user, group and other modes + in the standard Unix fashion. Only applies to directories. The + default is 755. + - - The username for the tar entry. - + + The username for the tar entry. + - - The user identifier (UID) for the tar entry. - + + The user identifier (UID) for the tar entry. + - - The groupname for the tar entry. - + + The groupname for the tar entry. + - - The group identifier (GID) for the tar entry. - + + The group identifier (GID) for the tar entry. + - - The top level directory prefix. If set, all file and directory paths - in the fileset will have this value prepended. Can either be a single - directory name or a "/" separated path. - + + The top level directory prefix. If set, all file and directory paths + in the fileset will have this value prepended. Can either be a single + directory name or a "/" separated path. + @@ -474,11 +488,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -511,16 +525,16 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. - - Get the total number of files that are represented by the - filesets in this collection. - + + Get the total number of files that are represented by the + filesets in this collection. + @@ -535,28 +549,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -565,11 +579,11 @@ - - The top level directory prefix. If set, all file and directory paths - in the fileset will have this value prepended. Can either be a single - directory name or a "/" separated path. - + + The top level directory prefix. If set, all file and directory paths + in the fileset will have this value prepended. Can either be a single + directory name or a "/" separated path. + @@ -623,11 +637,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -660,16 +674,16 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. - - Get the total number of files that are represented by the - filesets in this collection. - + + Get the total number of files that are represented by the + filesets in this collection. + @@ -684,28 +698,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + diff --git a/Tools/nant/bin/NAnt.Core.dll b/Tools/nant/bin/NAnt.Core.dll index 6dd8f1b6c787fa44929a037c5a38ec45849f1ece..1083a4243562e450a009ea4262a393f427d44d01 100755 GIT binary patch literal 409600 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 z yQhB-?rseNVKnIOGZ0=ffmcY^S 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�%-cpJIwgzun?D#c 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%0AxG#U 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 *VW3{5YJq3=A4Lia`*}m;u&|#uL@_B} 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 r9Bad0gTNXD)*!G3fi(!ML0}C6YY - - Base class for all validator attributes. - + + Base class for all validator attributes. + @@ -36,50 +36,53 @@ cannot be converted to a . - - Indicates that property should be treated as a XML attribute for the - task. - - - Examples of how to specify task attributes - - #region Public Instance Properties - - [BuildAttribute("out", Required=true)] - public string Output { - get { return _out; } - set { _out = value; } - } - [BuildAttribute("optimize")] - [BooleanValidator()] - public bool Optimize { - get { return _optimize; } - set { _optimize = value; } - } - [BuildAttribute("warnlevel")] - [Int32Validator(0,4)] // limit values to 0-4 - public int WarnLevel { - get { return _warnLevel; } - set { _warnLevel = value; } - } - [BuildElement("sources")] - public FileSet Sources { - get { return _sources; } - set { _sources = value; } - } - - #endregion Public Instance Properties - - #region Private Instance Fields - - private string _out = null; - private bool _optimize = false; - private int _warnLevel = 4; - private FileSet _sources = new FileSet(); - - #endregion Private Instance Fields - - + + Indicates that property should be treated as a XML attribute for the + task. + + + Examples of how to specify task attributes + + #region Public Instance Properties + + [BuildAttribute("out", Required=true)] + public string Output { + get { return _out; } + set { _out = value; } + } + + [BuildAttribute("optimize")] + [BooleanValidator()] + public bool Optimize { + get { return _optimize; } + set { _optimize = value; } + } + + [BuildAttribute("warnlevel")] + [Int32Validator(0,4)] // limit values to 0-4 + public int WarnLevel { + get { return _warnLevel; } + set { _warnLevel = value; } + } + + [BuildElement("sources")] + public FileSet Sources { + get { return _sources; } + set { _sources = value; } + } + + #endregion Public Instance Properties + + #region Private Instance Fields + + private string _out = null; + private bool _optimize = false; + private int _warnLevel = 4; + private FileSet _sources = new FileSet(); + + #endregion Private Instance Fields + + @@ -91,85 +94,85 @@ is a zero-length . - - Gets or sets the name of the XML attribute. - - - The name of the XML attribute. - + + Gets or sets the name of the XML attribute. + + + The name of the XML attribute. + - - Gets or sets a value indicating whether the attribute is required. - - - if the attribute is required; otherwise, - . The default is . - + + Gets or sets a value indicating whether the attribute is required. + + + if the attribute is required; otherwise, + . The default is . + - - Gets or sets a value indicating whether property references should - be expanded. - - - if properties should be expanded; otherwise - . The default is . - + + Gets or sets a value indicating whether property references should + be expanded. + + + if properties should be expanded; otherwise + . The default is . + - - Used to specify how this attribute will be handled as the XML is - parsed and given to the element. - - - if XML should be processed; otherwise - . The default is . - + + Used to specify how this attribute will be handled as the XML is + parsed and given to the element. + + + if XML should be processed; otherwise + . The default is . + - - Indicates that property should be treated as a XML arrayList - - - - Should only be applied to properties exposing strongly typed arrays or - strongly typed collections. - - - The XML format is like this: - - - - - - - - ]]> - - - + + Indicates that property should be treated as a XML arrayList + + + + Should only be applied to properties exposing strongly typed arrays or + strongly typed collections. + + + The XML format is like this: + + + + + + + + ]]> + + + - - Indicates that the property should be treated as an XML element and - further processing should be done. - - - - The XML format is like this: - - - - - - - ]]> - - - + + Indicates that the property should be treated as an XML element and + further processing should be done. + + + + The XML format is like this: + + + + + + + ]]> + + + @@ -181,31 +184,31 @@ is a zero-length . - - Gets or sets the name of the attribute. - - - The name of the attribute. - + + Gets or sets the name of the attribute. + + + The name of the attribute. + - - Gets or sets a value indicating whether the attribute is required. - - - if the attribute is required; otherwise, - . The default is . - + + Gets or sets a value indicating whether the attribute is required. + + + if the attribute is required; otherwise, + . The default is . + - - Used to specify how this element will be handled as the XML is parsed - and given to the element. - - - if XML should be processed; otherwise - . The default is . - + + Used to specify how this element will be handled as the XML is parsed + and given to the element. + + + if XML should be processed; otherwise + . The default is . + @@ -235,31 +238,31 @@ is . - - Indicates that the property should be treated as a container for a - collection of build elements. - - - - Should only be applied to properties exposing strongly typed arrays or - strongly typed collections. - - - The XML format is like this: - - - - - - - - - - ]]> - - - + + Indicates that the property should be treated as a container for a + collection of build elements. + + + + Should only be applied to properties exposing strongly typed arrays or + strongly typed collections. + + + The XML format is like this: + + + + + + + + + + ]]> + + + @@ -272,15 +275,15 @@ is a zero-length . - - The name of the child element within the collection. - - - The name to check for in the XML of the elements in the collection. - - - This can be used for validation and schema generation. - + + The name of the child element within the collection. + + + The name to check for in the XML of the elements in the collection. + + + This can be used for validation and schema generation. + @@ -302,14 +305,14 @@ cannot be converted to a . - - Indicates that class should be treated as a NAnt element. - - - Attach this attribute to a subclass of Element to have NAnt be able - to recognize it. The name should be short but must not confict - with any other element already in use. - + + Indicates that class should be treated as a NAnt element. + + + Attach this attribute to a subclass of Element to have NAnt be able + to recognize it. The name should be short but must not confict + with any other element already in use. + @@ -321,18 +324,18 @@ is a zero-length . - - Gets or sets the name of the element. - - - The name of the element. - + + Gets or sets the name of the element. + + + The name of the element. + - - Indicates that a property should be treated as a XML file set for the - task. - + + Indicates that a property should be treated as a XML file set for the + task. + @@ -344,24 +347,24 @@ is a zero-length . - - Indicates that the value of the property to which the attribute is - assigned, can be configured on the framework-level in the NAnt application - configuration file. - - - - The following example shows a property of which the value can be - configured for a specific framework in the NAnt configuration file. - - - [FrameworkConfigurable("exename", Required=true)] - public virtual string ExeName { - get { return _exeName; } - set { _exeName = value; } - } - - + + Indicates that the value of the property to which the attribute is + assigned, can be configured on the framework-level in the NAnt application + configuration file. + + + + The following example shows a property of which the value can be + configured for a specific framework in the NAnt configuration file. + + + [FrameworkConfigurable("exename", Required=true)] + public virtual string ExeName { + get { return _exeName; } + set { _exeName = value; } + } + + @@ -373,30 +376,30 @@ is a zero-length . - - Gets or sets the name of the framework configuration attribute. - - The name of the framework configuration attribute. + + Gets or sets the name of the framework configuration attribute. + + The name of the framework configuration attribute. - - Gets or sets a value indicating whether the configuration attribute - is required. - - - if the configuration attribute is required; - otherwise, . The default is . - + + Gets or sets a value indicating whether the configuration attribute + is required. + + + if the configuration attribute is required; + otherwise, . The default is . + - - Gets or sets a value indicating whether property references should - be expanded. - - - if properties should be expanded; otherwise - . The default is . - + + Gets or sets a value indicating whether property references should + be expanded. + + + if properties should be expanded; otherwise + . The default is . + @@ -418,12 +421,12 @@ is a zero-length . - - Gets or sets the name of the function. - - - The name of the function. - + + Gets or sets the name of the function. + + + The name of the function. + @@ -453,23 +456,23 @@ - - Gets or sets the category of the function set. - - - The name of the category of the function set. - - - This will be displayed in the user docs. - + + Gets or sets the category of the function set. + + + The name of the category of the function set. + + + This will be displayed in the user docs. + - - Gets or sets the prefix of all functions in this function set. - - - The prefix of the functions in this function set. - + + Gets or sets the prefix of all functions in this function set. + + + The prefix of the functions in this function set. + @@ -526,30 +529,30 @@ - - The base of the number to validate, which must be 2, 8, 10, or 16. - - - The base of the number to validate. - - - The default is 10. - + + The base of the number to validate, which must be 2, 8, 10, or 16. + + + The base of the number to validate. + + + The default is 10. + - - Defines possible locations in which a task executable can be located. - + + Defines possible locations in which a task executable can be located. + - - Locates the task executable in the current Framework directory. - + + Locates the task executable in the current Framework directory. + - - Locates the task executable in the current Framework SDK directory. - + + Locates the task executable in the current Framework SDK directory. + @@ -605,15 +608,15 @@ is an empty string value and is set to . - - Gets or sets a value indicating whether an empty string or - should be a considered a valid value. - - - if an empty string or - should be considered a valid value; otherwise, . - The default is . - + + Gets or sets a value indicating whether an empty string or + should be a considered a valid value. + + + if an empty string or + should be considered a valid value; otherwise, . + The default is . + @@ -625,38 +628,41 @@ - - An optional error message that can be used to better describe the - regular expression error. - + + An optional error message that can be used to better describe the + regular expression error. + - - Indicates that property should be treated as a XML attribute for the - task. - - - Examples of how to specify task attributes - - // task XmlType default is string - [TaskAttribute("out", Required=true)] - string _out = null; // assign default value here - [TaskAttribute("optimize")] - [BooleanValidator()] - // during ExecuteTask you can safely use Convert.ToBoolean(_optimize) - string _optimize = Boolean.FalseString; - [TaskAttribute("warnlevel")] - [Int32Validator(0,4)] // limit values to 0-4 - // during ExecuteTask you can safely use Convert.ToInt32(_optimize) - string _warnlevel = "0"; - [BuildElement("sources")] - FileSet _sources = new FileSet(); - - NOTE: Attribute values must be of type of string if you want - to be able to have macros. The field stores the exact value during - Initialize. Just before ExecuteTask is called NAnt will expand - all the macros with the current values. - + + Indicates that property should be treated as a XML attribute for the + task. + + + Examples of how to specify task attributes + + // task XmlType default is string + [TaskAttribute("out", Required=true)] + string _out = null; // assign default value here + + [TaskAttribute("optimize")] + [BooleanValidator()] + // during ExecuteTask you can safely use Convert.ToBoolean(_optimize) + string _optimize = Boolean.FalseString; + + [TaskAttribute("warnlevel")] + [Int32Validator(0,4)] // limit values to 0-4 + // during ExecuteTask you can safely use Convert.ToInt32(_optimize) + string _warnlevel = "0"; + + [BuildElement("sources")] + FileSet _sources = new FileSet(); + + NOTE: Attribute values must be of type of string if you want + to be able to have macros. The field stores the exact value during + Initialize. Just before ExecuteTask is called NAnt will expand + all the macros with the current values. + @@ -668,14 +674,14 @@ is a zero-length . - - Indicates that class should be treated as a task. - - - Attach this attribute to a subclass of Task to have NAnt be able - to recognize it. The name should be short but must not confict - with any other task already in use. - + + Indicates that class should be treated as a task. + + + Attach this attribute to a subclass of Task to have NAnt be able + to recognize it. The name should be short but must not confict + with any other task already in use. + @@ -687,15 +693,15 @@ is a zero-length . - - Models a NAnt XML element in the build file. - - - - Automatically validates attributes in the element based on attributes - applied to members in derived classes. - - + + Models a NAnt XML element in the build file. + + + + Automatically validates attributes in the element based on attributes + applied to members in derived classes. + + @@ -710,30 +716,30 @@ The element that should be used to create a new instance of the class. - - Performs default initialization. - - - Derived classes that wish to add custom initialization should override - the method. - + + Performs default initialization. + + + Derived classes that wish to add custom initialization should override + the method. + - - Retrieves the location in the build file where the element is - defined. - - The element's build file location + + Retrieves the location in the build file where the element is + defined. + + The element's build file location - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the project. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the project. + @@ -747,11 +753,11 @@ - - Derived classes should override to this method to provide extra - initialization and validation not covered by the base class. - - The XML node of the element to use for initialization. + + Derived classes should override to this method to provide extra + initialization and validation not covered by the base class. + + The XML node of the element to use for initialization. @@ -770,33 +776,33 @@ - - Performs initialization using the given set of properties. - + + Performs initialization using the given set of properties. + - - Initializes all build attributes and child elements. - + + Initializes all build attributes and child elements. + - - Locates the XML node for the specified attribute in the project - configuration node. - - The name of attribute for which the XML configuration node should be located. - The framework to use to obtain framework specific information, or if no framework specific information should be used. - - The XML configuration node for the specified attribute, or - if no corresponding XML node could be - located. - - - If there's a valid current framework, the configuration section for - that framework will first be searched. If no corresponding - configuration node can be located in that section, the framework-neutral - section of the project configuration node will be searched. - + + Locates the XML node for the specified attribute in the project + configuration node. + + The name of attribute for which the XML configuration node should be located. + The framework to use to obtain framework specific information, or if no framework specific information should be used. + + The XML configuration node for the specified attribute, or + if no corresponding XML node could be + located. + + + If there's a valid current framework, the configuration section for + that framework will first be searched. If no corresponding + configuration node can be located in that section, the framework-neutral + section of the project configuration node will be searched. + @@ -824,12 +830,12 @@ - - Gets the name of the XML element used to initialize this element. - - - The name of the XML element used to initialize this element. - + + Gets the name of the XML element used to initialize this element. + + + The name of the XML element used to initialize this element. + @@ -861,21 +867,21 @@ - - Gets or sets the XML node of the element. - - - The XML node of the element. - + + Gets or sets the XML node of the element. + + + The XML node of the element. + - - Gets or sets the location in the build file where the element is - defined. - - - The location in the build file where the element is defined. - + + Gets or sets the location in the build file where the element is + defined. + + + The location in the build file where the element is defined. + @@ -955,10 +961,10 @@ - - Holds the dictionary that should be used for property - expansion. - + + Holds the dictionary that should be used for property + expansion. + @@ -969,21 +975,21 @@ - - Holds the names of the attributes that still need to be - processed. - + + Holds the names of the attributes that still need to be + processed. + - - Holds the names of the child nodes that still need to be - processed. - + + Holds the names of the child nodes that still need to be + processed. + - - Holds the logger for the current class. - + + Holds the logger for the current class. + @@ -1003,9 +1009,9 @@ - - Internal interface used for setting element attributes. - + + Internal interface used for setting element attributes. + @@ -1017,27 +1023,27 @@ - - The base of the directory of this dirlist. The default is the project - base directory. - + + The base of the directory of this dirlist. The default is the project + base directory. + - - Gets the collection of environment variables that should be passed - to external programs that are launched. - - - - The collection of environment variables that should be passed - to external programs that are launched. - - + + Gets the collection of environment variables that should be passed + to external programs that are launched. + + + + The collection of environment variables that should be passed + to external programs that are launched. + + - - The command-line arguments for the runtime engine. - + + The command-line arguments for the runtime engine. + @@ -1140,81 +1146,82 @@ is . - - Functions as a chainable TextReader - - - Implements a abstraction over a TextReader that allows the class to represent - either a TextReader or another ChainableReader to which it is chained. - By passing a ChainableReader as a constructor paramater it is possiable to - chain many ChainableReaders together. The last ChainableReader in the chain must - be based on a TextReader. - + + Functions as a chainable TextReader + + + Implements a abstraction over a TextReader that allows the class to represent + either a TextReader or another ChainableReader to which it is chained. + + By passing a ChainableReader as a constructor paramater it is possiable to + chain many ChainableReaders together. The last ChainableReader in the chain must + be based on a TextReader. + - - Makes it so all calls to Read and Peek are passed the ChainableReader - passed as a parameter. - - ChainableReader to forward calls to + + Makes it so all calls to Read and Peek are passed the ChainableReader + passed as a parameter. + + ChainableReader to forward calls to - - Makes it so all calls to Read and Peek are passed the TextReader - passed as a parameter. - - TextReader to forward calls to + + Makes it so all calls to Read and Peek are passed the TextReader + passed as a parameter. + + TextReader to forward calls to - - Forwards Peek calls to the TextReader or ChainableReader passed in the corresponding constructor. - - Character or -1 if end of stream + + Forwards Peek calls to the TextReader or ChainableReader passed in the corresponding constructor. + + Character or -1 if end of stream - - Forwards Read calls to the TextReader or ChainableReader passed in the corresponding constructor. - - - Character or -1 if end of stream. - + + Forwards Read calls to the TextReader or ChainableReader passed in the corresponding constructor. + + + Character or -1 if end of stream. + - - Closes the reader. - + + Closes the reader. + - - Calls close and supresses the finalizer for the object. - + + Calls close and supresses the finalizer for the object. + - - Gets a value indicating if the reader is backed by a stream in the - chain. - - - if the reader is backed by a stream; - otherwise, . - + + Gets a value indicating if the reader is backed by a stream in the + chain. + + + if the reader is backed by a stream; + otherwise, . + - - Allows a file's content to be modified while performing an operation. - + + Allows a file's content to be modified while performing an operation. + - - Called after construction and after properties are set. Allows - for filter initialization. - + + Called after construction and after properties are set. Allows + for filter initialization. + - - If then the filter will be used; otherwise, - skipped. The default is . - + + If then the filter will be used; otherwise, + skipped. The default is . + @@ -1329,11 +1336,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -1366,10 +1373,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -1390,28 +1397,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -1470,15 +1477,15 @@ - - Provides the abstract base class for types. - + + Provides the abstract base class for types. + - - Should be overridden by derived classes. clones the referenced types - data into the current instance. - + + Should be overridden by derived classes. clones the referenced types + data into the current instance. + @@ -1487,14 +1494,14 @@ - - The ID used to be referenced later. - + + The ID used to be referenced later. + - - The ID to use as the reference. - + + The ID to use as the reference. + @@ -1507,12 +1514,12 @@ - - Gets the name of the datatype. - - - The name of the datatype. - + + Gets the name of the datatype. + + + The name of the datatype. + @@ -1536,22 +1543,34 @@ The last in the chain. + + + Determines whether a given FilterChain is null or empty. + + + true if is null or empty; + otherwise, false. + + + The FilterChain to check. + + - - The filters to apply. - + + The filters to apply. + - - The encoding to assume when filter-copying files. The default is - system's current ANSI code page. - + + The encoding to assume when filter-copying files. The default is + system's current ANSI code page. + - - Configurator that initializes filters in the order in which they've - been specified in the build file. - + + Configurator that initializes filters in the order in which they've + been specified in the build file. + @@ -1605,11 +1624,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -1642,10 +1661,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -1660,28 +1679,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -1718,43 +1737,43 @@ - - Holds data for expression expansion between input and output. - + + Holds data for expression expansion between input and output. + - - Called after construction and after properties are set. Allows - for filter initialization. - + + Called after construction and after properties are set. Allows + for filter initialization. + - - Reads the next character applying the filter logic. - - Char as an int or -1 if at the end of the stream + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream - - Reads the next character applying the filter logic without advancing the current position in the stream. - - Char as an int or -1 if at the end of the stream + + Reads the next character applying the filter logic without advancing the current position in the stream. + + Char as an int or -1 if at the end of the stream - - Moves to the next character. - + + Moves to the next character. + - - Refills the buffer, running our input through - .) - + + Refills the buffer, running our input through + .) + - - Determines whether we've passed the end of our data. - + + Determines whether we've passed the end of our data. + @@ -1799,46 +1818,47 @@ - - Construct that allows this filter to be chained to the one - in the parameter chainedReader. - - Filter that the filter will be chained to + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to - - Reads the next character applying the filter logic. - - Char as an int or -1 if at the end of the stream + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream - - Reads the next character applying the filter logic without - advancing the current position in the stream. - Peek currently is not supported. - - - Char as an int or -1 if at the end of the stream. - + + Reads the next character applying the filter logic without + advancing the current position in the stream. + + Peek currently is not supported. + + + Char as an int or -1 if at the end of the stream. + - - - Helper function used to search for the filter's traget string. If the string - is found the result is true. If the string was not found false is returned and - nonMatchingChars contains the characters that were read to determine if the - string is present. - - - - It is assumed the stream is positioned at the character after the first character - in the target string. - - - First character in target string - Ture if the stream ended while search for the string. - Characters that were read while searching for the string. - + + + Helper function used to search for the filter's traget string. If the string + is found the result is true. If the string was not found false is returned and + nonMatchingChars contains the characters that were read to determine if the + string is present. + + + + It is assumed the stream is positioned at the character after the first character + in the target string. + + + First character in target string + Ture if the stream ended while search for the string. + Characters that were read while searching for the string. + @@ -1849,35 +1869,35 @@ Char as an int or -1 if at the end of the stream - - Compares to characters taking into account the _ignoreCase flag. - - - - + + Compares to characters taking into account the _ignoreCase flag. + + + + - - The string to be replaced. - + + The string to be replaced. + - - The new value for the replaced string. - Am empty string is permissible. - + + The new value for the replaced string. + Am empty string is permissible. + - - Determines if case will be ignored. - The default is . - + + Determines if case will be ignored. + The default is . + - - Delegate for Read and Peek. Allows the same implementation - to be used for both methods. - + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + @@ -1929,42 +1949,43 @@ - - Construct that allows this filter to be chained to the one - in the parameter chainedReader. - - Filter that the filter will be chained to + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to - - Reads the next character applying the filter logic. - - Char as an int or -1 if at the end of the stream + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream - - Reads the next character applying the filter logic without - advancing the current position in the stream. - Peek currently is not supported. - - - Char as an int or -1 if at the end of the stream. - + + Reads the next character applying the filter logic without + advancing the current position in the stream. + + Peek currently is not supported. + + + Char as an int or -1 if at the end of the stream. + - - Initialize the filter by setting its parameters. - + + Initialize the filter by setting its parameters. + - - Finds a token give that we are positioned at a beginning token character. Either a - token replacement is returned or the characters that were read looking for the token. - - A token was not found - A token was found by there is no replacement - The stream ended while looking for the token - Either the replacement token or the characters that were read looking for the token + + Finds a token give that we are positioned at a beginning token character. Either a + token replacement is returned or the characters that were read looking for the token. + + A token was not found + A token was found by there is no replacement + The stream ended while looking for the token + Either the replacement token or the characters that were read looking for the token @@ -1984,31 +2005,31 @@ - - Marks the beginning of a token. The default is "@". - + + Marks the beginning of a token. The default is "@". + - - Marks the end of a token. The default is "@". - + + Marks the end of a token. The default is "@". + - - Tokens and replacement values. - + + Tokens and replacement values. + - - Determines if case will be ignored. - The default is . - + + Determines if case will be ignored. + The default is . + - - Delegate for Read and Peek. Allows the same implementation - to be used for both methods. - + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + @@ -2033,24 +2054,24 @@ - - Construct that allows this filter to be chained to the one - in the parameter chainedReader. - - Filter that the filter will be chained to + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to - - Retrieves the next character with moving the position in the stream. - This method is not implemented - - -1 if end of stream otherwise a character + + Retrieves the next character with moving the position in the stream. + This method is not implemented + + -1 if end of stream otherwise a character - - Retrieves the next character in the stream. - - -1 if end of stream otherwise a character + + Retrieves the next character in the stream. + + -1 if end of stream otherwise a character @@ -2061,21 +2082,21 @@ Char as an int or -1 if at the end of the stream - - The number of spaces used when converting a tab. The default is - "8". - + + The number of spaces used when converting a tab. The default is + "8". + - - Delegate for Read and Peek. Allows the same implementation - to be used for both methods. - + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + - - Functions to return information for a given assembly. - + + Functions to return information for a given assembly. + @@ -2124,13 +2145,13 @@ - - Gets the full name of the assembly, also known as the display name. - - The assembly to get the full name for. - - The full name of the assembly, also known as the display name. - + + Gets the full name of the assembly, also known as the display name. + + The assembly to get the full name for. + + The full name of the assembly, also known as the display name. + @@ -2143,19 +2164,19 @@ - - Gets the physical location, in codebase format, of the loaded file - that contains the manifest. - - The assembly to get the location for. - - The location of the specified assembly. - + + Gets the physical location, in codebase format, of the loaded file + that contains the manifest. + + The assembly to get the location for. + + The location of the specified assembly. + - - Functions that return information about an assembly's identity. - + + Functions that return information about an assembly's identity. + @@ -2291,49 +2312,49 @@ - - Converts the argument to an integer. - - value to be converted - converted to integer. The function fails with an exception when the conversion is not possible. + + Converts the argument to an integer. + + value to be converted + converted to integer. The function fails with an exception when the conversion is not possible. - - Converts the argument to double - - The value to be converted. - converted to double. The function fails with an exception when the conversion is not possible. + + Converts the argument to double + + The value to be converted. + converted to double. The function fails with an exception when the conversion is not possible. - - Converts the argument to a string. - - The value to be converted. - - converted to string. The function fails - with an exception when the conversion is not possible. - - - Named method ConvertToString as a static ToString method would break - CLS compliance. - + + Converts the argument to a string. + + The value to be converted. + + converted to string. The function fails + with an exception when the conversion is not possible. + + + Named method ConvertToString as a static ToString method would break + CLS compliance. + - - Converts the argument to a datetime. - - value to be converted - converted to datetime. The function fails with an exception when the conversion is not possible. + + Converts the argument to a datetime. + + value to be converted + converted to datetime. The function fails with an exception when the conversion is not possible. - - Converts the argument to a boolean - - The string value to be converted to boolean. Must be 'true' or 'false'. - - converted to boolean. The function fails - with an exception when the conversion is not possible. - + + Converts the argument to a boolean + + The string value to be converted to boolean. Must be 'true' or 'false'. + + converted to boolean. The function fails + with an exception when the conversion is not possible. + @@ -2345,96 +2366,96 @@ - - Gets the year component of the specified date. - - The date of which to get the year component. - - The year, between 1 and 9999. - + + Gets the year component of the specified date. + + The date of which to get the year component. + + The year, between 1 and 9999. + - - Gets the month component of the specified date. - - The date of which to get the month component. - - The month, between 1 and 12. - + + Gets the month component of the specified date. + + The date of which to get the month component. + + The month, between 1 and 12. + - - Gets the day of the month represented by the specified date. - - The date of which to get the day of the month. - - The day value, between 1 and 31. - + + Gets the day of the month represented by the specified date. + + The date of which to get the day of the month. + + The day value, between 1 and 31. + - - Gets the hour component of the specified date. - - The date of which to get the hour component. - - The hour, between 0 and 23. - + + Gets the hour component of the specified date. + + The date of which to get the hour component. + + The hour, between 0 and 23. + - - Gets the minute component of the specified date. - - The date of which to get the minute component. - - The minute, between 0 and 59. - + + Gets the minute component of the specified date. + + The date of which to get the minute component. + + The minute, between 0 and 59. + - - Gets the seconds component of the specified date. - - The date of which to get the seconds component. - - The seconds, between 0 and 59. - + + Gets the seconds component of the specified date. + + The date of which to get the seconds component. + + The seconds, between 0 and 59. + - - Gets the milliseconds component of the specified date. - - The date of which to get the milliseconds component. - - The millisecond, between 0 and 999. - + + Gets the milliseconds component of the specified date. + + The date of which to get the milliseconds component. + + The millisecond, between 0 and 999. + - - Gets the number of ticks that represent the specified date. - - The date of which to get the number of ticks. - - The number of ticks that represent the date and time of the - specified date. - + + Gets the number of ticks that represent the specified date. + + The date of which to get the number of ticks. + + The number of ticks that represent the date and time of the + specified date. + - - Gets the day of the week represented by the specified date. - - The date of which to get the day of the week. - - The day of the week, ranging from zero, indicating Sunday, to six, - indicating Saturday. - + + Gets the day of the week represented by the specified date. + + The date of which to get the day of the week. + + The day of the week, ranging from zero, indicating Sunday, to six, + indicating Saturday. + - - Gets the day of the year represented by the specified date. - - The date of which to get the day of the year. - - The day of the year, between 1 and 366. - + + Gets the day of the year represented by the specified date. + + The date of which to get the day of the year. + + The day of the year, between 1 and 366. + @@ -2450,14 +2471,14 @@ is less than 1 or greater than 12. - - Returns an indication whether the specified year is a leap year. - - A 4-digit year. - - if is a leap year; - otherwise, . - + + Returns an indication whether the specified year is a leap year. + + A 4-digit year. + + if is a leap year; + otherwise, . + @@ -2490,10 +2511,26 @@ for the invariant culture. + + + Converts the specified to its equivalent + string representation. + + A to convert. + A format string. + + A string representation of formatted + using the specified format + + + is formatted with the + for the invariant culture. + + - - Groups a set of functions for dealing with directories. - + + Groups a set of functions for dealing with directories. + @@ -2583,28 +2620,28 @@ The specified path, file name, or both exceed the system-defined maximum length. - - Determines whether the given path refers to an existing directory - on disk. - - The path to test. - - if refers to an - existing directory; otherwise, . - - - Remove directory "test", if it exists. - - - ]]> - - + + Determines whether the given path refers to an existing directory + on disk. + + The path to test. + + if refers to an + existing directory; otherwise, . + + + Remove directory "test", if it exists. + + + ]]> + + - - Functions for requesting information from DNS. - + + Functions for requesting information from DNS. + @@ -2648,9 +2685,9 @@ - - Provide information about the current environment and platform. - + + Provide information about the current environment and platform. + @@ -2710,27 +2747,27 @@ - - Gets the user name of the person who started the current thread. - - - The name of the person logged on to the system who started the - current thread. - - - - Modify the home directory of the current user on unix-based systems. - - - - - - - - ]]> - - + + Gets the user name of the person who started the current thread. + + + The name of the person logged on to the system who started the + current thread. + + + + Modify the home directory of the current user on unix-based systems. + + + + + + + + ]]> + + @@ -2743,28 +2780,28 @@ Environment variable does not exist. - - Gets a value indicating whether the specified environment variable - exists. - - The environment variable that should be checked. - - if the environment variable exists; otherwise, - . - - - - Execute a set of tasks only if the "BUILD_DEBUG" environment - variable is set. - - - - ... - - ]]> - - + + Gets a value indicating whether the specified environment variable + exists. + + The environment variable that should be checked. + + if the environment variable exists; otherwise, + . + + + + Execute a set of tasks only if the "BUILD_DEBUG" environment + variable is set. + + + + ... + + ]]> + + @@ -2784,39 +2821,39 @@ - - Gets the newline string defined for this environment. - - - A string containing CRLF for non-Unix platforms, or LF for Unix - platforms. - - - Output two lines in a log file. - - - ]]> - - - - - - Groups a set of functions for dealing with files. - - - - Returns the creation date and time of the specified file. + Gets the newline string defined for this environment. - The file for which to obtain creation date and time information. - The creation date and time of the specified file. + A string containing CRLF for non-Unix platforms, or LF for Unix + platforms. - The specified file does not exist. - is a zero-length string, contains only white space, or contains one or more invalid characters. - The specified path, file name, or both exceed the system-defined maximum length. - The parameter is in an invalid format. + + Output two lines in a log file. + + + ]]> + + + + + + Groups a set of functions for dealing with files. + + + + + Returns the creation date and time of the specified file. + + The file for which to obtain creation date and time information. + + The creation date and time of the specified file. + + The specified file does not exist. + is a zero-length string, contains only white space, or contains one or more invalid characters. + The specified path, file name, or both exceed the system-defined maximum length. + The parameter is in an invalid format. @@ -2844,24 +2881,24 @@ The parameter is in an invalid format. - - Determines whether the specified file exists. - - The file to check. - - if refers to an - existing file; otherwise, . - - - Execute a set of tasks, if file "output.xml" does not exist. - - - ... - - ]]> - - + + Determines whether the specified file exists. + + The file to check. + + if refers to an + existing file; otherwise, . + + + Execute a set of tasks, if file "output.xml" does not exist. + + + ... + + ]]> + + @@ -2900,9 +2937,9 @@ The caller does not have path discovery permission. - - Functions that provide version information for a physical file on disk. - + + Functions that provide version information for a physical file on disk. + @@ -2954,14 +2991,14 @@ - - Checks whether the specified framework exists, and is valid. - - The framework to test. - - if the specified framework exists ; otherwise, - . - + + Checks whether the specified framework exists, and is valid. + + The framework to test. + + if the specified framework exists ; otherwise, + . + @@ -2976,20 +3013,20 @@ - - Gets the identifier of the current target framework. - - - The identifier of the current target framework. - + + Gets the identifier of the current target framework. + + + The identifier of the current target framework. + - - Gets the identifier of the runtime framework. - - - The identifier of the runtime framework. - + + Gets the identifier of the runtime framework. + + + The identifier of the runtime framework. + @@ -3257,58 +3294,58 @@ - - Rounds the value to the nearest whole number - - Number to be rounded, can be anything convertible to a double. - - Rounded value. - + + Rounds the value to the nearest whole number + + Number to be rounded, can be anything convertible to a double. + + Rounded value. + - - Returns the largest whole number less than or equal to the specified - number. - - value to be , can be anything convertible to a double - - The largest whole number less than or equal to the specified number. - + + Returns the largest whole number less than or equal to the specified + number. + + value to be , can be anything convertible to a double + + The largest whole number less than or equal to the specified number. + - - Returns the smallest whole number greater than or equal to the specified number - - value - - The smallest whole number greater than or equal to the specified number. - + + Returns the smallest whole number greater than or equal to the specified number + + value + + The smallest whole number greater than or equal to the specified number. + - - Returns the absolute value of the specified number - - value to take the absolute value from - - when is greater - than or equal to zero; otherwise, -. - + + Returns the absolute value of the specified number + + value to take the absolute value from + + when is greater + than or equal to zero; otherwise, -. + - - Gets the base directory of the appdomain in which NAnt is running. - - - The base directory of the appdomain in which NAnt is running. - + + Gets the base directory of the appdomain in which NAnt is running. + + + The base directory of the appdomain in which NAnt is running. + - - Gets the NAnt assembly. - - - The NAnt assembly. - + + Gets the NAnt assembly. + + + The NAnt assembly. + @@ -3440,34 +3477,34 @@ - - Gets the base directory of the current project. - - - The base directory of the current project. - + + Gets the base directory of the current project. + + + The base directory of the current project. + - - Checks whether the specified target exists. - - The target to test. - - if the specified target exists; otherwise, - . - - - - Execute target "clean", if it exists. - - - - - - ]]> - - + + Checks whether the specified target exists. + + The target to test. + + if the specified target exists; otherwise, + . + + + + Execute target "clean", if it exists. + + + + + + ]]> + + @@ -3491,14 +3528,14 @@ Target does not exist. - - Checks whether the specified task exists. - - The task to test. - - if the specified task exists; otherwise, - . - + + Checks whether the specified task exists. + + The task to test. + + if the specified task exists; otherwise, + . + @@ -3512,29 +3549,29 @@ Task is not available. - - Checks whether the specified property exists. - - The property to test. - - if the specified property exists; otherwise, - . - - - - Execute a set of tasks if the "build.debug" property - exists. - - - - - - - - ]]> - - + + Checks whether the specified property exists. + + The property to test. + + if the specified property exists; otherwise, + . + + + + Execute a set of tasks if the "build.debug" property + exists. + + + + + + + + ]]> + + @@ -3569,45 +3606,45 @@ - - Gets the name of the platform on which NAnt is running. - - - The name of the platform on which NAnt is running. - + + Gets the name of the platform on which NAnt is running. + + + The name of the platform on which NAnt is running. + - - Checks whether NAnt is running on Windows (and not just 32-bit Windows - as the name may lead you to believe). - - - if NAnt is running on Windows; - otherwise, . - + + Checks whether NAnt is running on Windows (and not just 32-bit Windows + as the name may lead you to believe). + + + if NAnt is running on Windows; + otherwise, . + - - Checks whether NAnt is running on Windows. - - - if NAnt is running on Windows; - otherwise, . - + + Checks whether NAnt is running on Windows. + + + if NAnt is running on Windows; + otherwise, . + - - Checks whether NAnt is running on Unix. - - - if NAnt is running on Unix; - otherwise, . - + + Checks whether NAnt is running on Unix. + + + if NAnt is running on Unix; + otherwise, . + - - Functions that return information about an operating system. - + + Functions that return information about an operating system. + @@ -3952,26 +3989,26 @@ - - Factory method to return a new instance of ExecTask - - - + + Factory method to return a new instance of ExecTask + + + - - Returns the length of the specified string. - - input string - - The string's length. - - - string::get-length('foo') ==> 3 - - - string::get-length('') ==> 0 - + + Returns the length of the specified string. + + input string + + The string's length. + + + string::get-length('foo') ==> 3 + + + string::get-length('') ==> 0 + @@ -4015,108 +4052,108 @@ - - Tests whether the specified string starts with the specified prefix - string. - - test string - prefix string - - when is a prefix for - the string . Meaning, the characters at the - beginning of are identical to - ; otherwise, . - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::starts-with('testing string', 'test') ==> true - - - string::starts-with('testing string', 'testing') ==> true - - - string::starts-with('testing string', 'string') ==> false - - - string::starts-with('test', 'testing string') ==> false - + + Tests whether the specified string starts with the specified prefix + string. + + test string + prefix string + + when is a prefix for + the string . Meaning, the characters at the + beginning of are identical to + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::starts-with('testing string', 'test') ==> true + + + string::starts-with('testing string', 'testing') ==> true + + + string::starts-with('testing string', 'string') ==> false + + + string::starts-with('test', 'testing string') ==> false + - - Tests whether the specified string ends with the specified suffix - string. - - test string - suffix string - - when is a suffix for - the string . Meaning, the characters at the - end of are identical to - ; otherwise, . - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::ends-with('testing string', 'string') ==> true - - - string::ends-with('testing string', '') ==> true - - - string::ends-with('testing string', 'bring') ==> false - - - string::ends-with('string', 'testing string') ==> false - + + Tests whether the specified string ends with the specified suffix + string. + + test string + suffix string + + when is a suffix for + the string . Meaning, the characters at the + end of are identical to + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::ends-with('testing string', 'string') ==> true + + + string::ends-with('testing string', '') ==> true + + + string::ends-with('testing string', 'bring') ==> false + + + string::ends-with('string', 'testing string') ==> false + - - Returns the specified string converted to lowercase. - - input string - - The string in lowercase. - - - The casing rules of the invariant culture are used to convert the - to lowercase. - - - string::to-lower('testing string') ==> 'testing string' - - - string::to-lower('Testing String') ==> 'testing string' - - - string::to-lower('Test 123') ==> 'test 123' - + + Returns the specified string converted to lowercase. + + input string + + The string in lowercase. + + + The casing rules of the invariant culture are used to convert the + to lowercase. + + + string::to-lower('testing string') ==> 'testing string' + + + string::to-lower('Testing String') ==> 'testing string' + + + string::to-lower('Test 123') ==> 'test 123' + - - Returns the specified string converted to uppercase. - - input string - - The string in uppercase. - - - The casing rules of the invariant culture are used to convert the - to uppercase. - - - string::to-upper('testing string') ==> 'TESTING STRING' - - - string::to-upper('Testing String') ==> 'TESTING STRING' - - - string::to-upper('Test 123') ==> 'TEST 123' - + + Returns the specified string converted to uppercase. + + input string + + The string in uppercase. + + + The casing rules of the invariant culture are used to convert the + to uppercase. + + + string::to-upper('testing string') ==> 'TESTING STRING' + + + string::to-upper('Testing String') ==> 'TESTING STRING' + + + string::to-upper('Test 123') ==> 'TEST 123' + @@ -4150,101 +4187,101 @@ - - Tests whether the specified string contains the given search string. - - The string to search. - The string to locate within . - - if is found in - ; otherwise, . - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::contains('testing string', 'test') ==> true - - - string::contains('testing string', '') ==> true - - - string::contains('testing string', 'Test') ==> false - - - string::contains('testing string', 'foo') ==> false - + + Tests whether the specified string contains the given search string. + + The string to search. + The string to locate within . + + if is found in + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::contains('testing string', 'test') ==> true + + + string::contains('testing string', '') ==> true + + + string::contains('testing string', 'Test') ==> false + + + string::contains('testing string', 'foo') ==> false + - - Returns the position of the first occurrence in the specified string - of the given search string. - - The string to search. - The string to locate within . - - - The lowest-index position of in - if it is found, or -1 if - does not contain . - - - If is an empty string, the return value - will always be 0. - - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::index-of('testing string', 'test') ==> 0 - - - string::index-of('testing string', '') ==> 0 - - - string::index-of('testing string', 'Test') ==> -1 - - - string::index-of('testing string', 'ing') ==> 4 - + + Returns the position of the first occurrence in the specified string + of the given search string. + + The string to search. + The string to locate within . + + + The lowest-index position of in + if it is found, or -1 if + does not contain . + + + If is an empty string, the return value + will always be 0. + + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::index-of('testing string', 'test') ==> 0 + + + string::index-of('testing string', '') ==> 0 + + + string::index-of('testing string', 'Test') ==> -1 + + + string::index-of('testing string', 'ing') ==> 4 + - - Returns the position of the last occurrence in the specified string - of the given search string. - - The string to search. - The string to locate within . - - - The highest-index position of in - if it is found, or -1 if - does not contain . - - - If is an empty string, the return value - is the last index position in . - - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::last-index-of('testing string', 'test') ==> 0 - - - string::last-index-of('testing string', '') ==> 13 - - - string::last-index-of('testing string', 'Test') ==> -1 - - - string::last-index-of('testing string', 'ing') ==> 11 - + + Returns the position of the last occurrence in the specified string + of the given search string. + + The string to search. + The string to locate within . + + + The highest-index position of in + if it is found, or -1 if + does not contain . + + + If is an empty string, the return value + is the last index position in . + + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::last-index-of('testing string', 'test') ==> 0 + + + string::last-index-of('testing string', '') ==> 13 + + + string::last-index-of('testing string', 'Test') ==> -1 + + + string::last-index-of('testing string', 'ing') ==> 11 + @@ -4311,64 +4348,64 @@ - - Returns the given string trimmed of whitespace. - - input string - - The string with any leading or trailing - white space characters removed. - - - string::trim(' test ') ==> 'test' - - - string::trim('\t\tfoo \r\n') ==> 'foo' - - - - - Returns the given string trimmed of leading whitespace. - - input string - - The string with any leading - whites pace characters removed. - - - string::trim-start(' test ') ==> 'test ' - - - string::trim-start('\t\tfoo \r\n') ==> 'foo \r\n' - - - - - Returns the given string trimmed of trailing whitespace. - - input string - - The string with any trailing - white space characters removed. - - - string::trim-end(' test ') ==> ' test' - - - string::trim-end('\t\tfoo \r\n') ==> '\t\tfoo' - - - - Returns the total number of days represented by the specified - , expressed in whole and fractional days. + Returns the given string trimmed of whitespace. - A . + input string - The total number of days represented by the given . + The string with any leading or trailing + white space characters removed. + + string::trim(' test ') ==> 'test' + + + string::trim('\t\tfoo \r\n') ==> 'foo' + - + + + Returns the given string trimmed of leading whitespace. + + input string + + The string with any leading + whites pace characters removed. + + + string::trim-start(' test ') ==> 'test ' + + + string::trim-start('\t\tfoo \r\n') ==> 'foo \r\n' + + + + + Returns the given string trimmed of trailing whitespace. + + input string + + The string with any trailing + white space characters removed. + + + string::trim-end(' test ') ==> ' test' + + + string::trim-end('\t\tfoo \r\n') ==> '\t\tfoo' + + + + + Returns the total number of days represented by the specified + , expressed in whole and fractional days. + + A . + + The total number of days represented by the given . + + + Returns the total number of hours represented by the specified , expressed in whole and fractional hours. @@ -4703,17 +4740,17 @@ - - Provides the abstract base class for tasks. - - - A task is a piece of code that can be executed. - + + Provides the abstract base class for tasks. + + + A task is a piece of code that can be executed. + - - Executes the task unless it is skipped. - + + Executes the task unless it is skipped. + @@ -4785,61 +4822,61 @@ - - Initializes the configuration of the task using configuration - settings retrieved from the NAnt configuration file. - - - TO-DO : Remove this temporary hack when a permanent solution is - available for loading the default values from the configuration - file if a build element is constructed from code. - + + Initializes the configuration of the task using configuration + settings retrieved from the NAnt configuration file. + + + TO-DO : Remove this temporary hack when a permanent solution is + available for loading the default values from the configuration + file if a build element is constructed from code. + - Initializes the task. + Initializes the task. - Initializes the task. + Initializes the task. - Executes the task. + Executes the task. - - Locates the XML node for the specified attribute in either the - configuration section of the extension assembly or the.project. - - The name of attribute for which the XML configuration node should be located. - The framework to use to obtain framework specific information, or if no framework specific information should be used. - - The XML configuration node for the specified attribute, or - if no corresponding XML node could be - located. - - - If there's a valid current framework, the configuration section for - that framework will first be searched. If no corresponding - configuration node can be located in that section, the framework-neutral - section of the project configuration node will be searched. - + + Locates the XML node for the specified attribute in either the + configuration section of the extension assembly or the.project. + + The name of attribute for which the XML configuration node should be located. + The framework to use to obtain framework specific information, or if no framework specific information should be used. + + The XML configuration node for the specified attribute, or + if no corresponding XML node could be + located. + + + If there's a valid current framework, the configuration section for + that framework will first be searched. If no corresponding + configuration node can be located in that section, the framework-neutral + section of the project configuration node will be searched. + - - Determines if task failure stops the build, or is just reported. - The default is . - + + Determines if task failure stops the build, or is just reported. + The default is . + - - Determines whether the task should report detailed build log messages. - The default is . - + + Determines whether the task should report detailed build log messages. + The default is . + - - If then the task will be executed; otherwise, - skipped. The default is . - + + If then the task will be executed; otherwise, + skipped. The default is . + @@ -4849,14 +4886,14 @@ - - The name of the task. - + + The name of the task. + - - The prefix used when sending messages to the log. - + + The prefix used when sending messages to the log. + @@ -4880,42 +4917,42 @@ - - The name of the file which will have its attributes set. This is - provided as an alternate to using the task's fileset. - + + The name of the file which will have its attributes set. This is + provided as an alternate to using the task's fileset. + - - All the matching files and directories in this fileset will have - their attributes set. - + + All the matching files and directories in this fileset will have + their attributes set. + - - Set the archive attribute. The default is . - + + Set the archive attribute. The default is . + - - Set the hidden attribute. The default is . - + + Set the hidden attribute. The default is . + - - Set the normal file attributes. This attribute is only valid if used - alone. The default is . - + + Set the normal file attributes. This attribute is only valid if used + alone. The default is . + - - Set the read-only attribute. The default is . - + + Set the read-only attribute. The default is . + - - Set the system attribute. The default is . - + + Set the system attribute. The default is . + @@ -5064,189 +5101,320 @@ - - The resource which must be available. - + + The resource which must be available. + - - The type of resource which must be present. - + + The type of resource which must be present. + - - The property that must be set if the resource is available. - + + The property that must be set if the resource is available. + - - Defines the possible resource checks. - + + Defines the possible resource checks. + - - Determines whether a given file exists. - + + Determines whether a given file exists. + - - Determines whether a given directory exists. - + + Determines whether a given directory exists. + - - Determines whether a given framework is available. - + + Determines whether a given framework is available. + - - Determines whether a given SDK is available. - + + Determines whether a given SDK is available. + + + Calls a NAnt target in the current project. + + + + When the is used to execute a target, both that + target and all its dependent targets will be re-executed. + + + To avoid dependent targets from being executed more than once, two + options are available: + + + + + Add an "unless" attribute with value "${target::has-executed('<target name>')}" + to the dependent targets. + + + + + Set the attribute on the + to (recommended). + + + + + + + Call the target "build". + + + + ]]> + + + + + This shows how a project could 'compile' a debug and release build + using a common compile target. + + + + + + + + + + + + + + + + + + ]]> + + + The parameter of the + defaults to , + causing the "init" target to be executed for both + the "debug" and "release" build. + + + This results in the following build log: + + + build: + + init: + + [echo] initializing + + compile: + + [echo] compiling with debug = false + + init: + + [echo] initializing + + compile: + + [echo] compiling with debug = true + + BUILD SUCCEEDED + + + If the "init" should only be executed once, set the + attribute of the + to . + + + The build log would then look like this: + + + build: + + init: + + [echo] initializing + + compile: + + [echo] compiling with debug = false + + compile: + + [echo] compiling with debug = true + + BUILD SUCCEEDED + + + + + + Executes the specified target. + + + + + Makes sure the is not calling its own + parent. + + + + + NAnt target to call. + + + + + Force an execute even if the target has already been executed. The + default is . + + + + + Execute the specified targets dependencies -- even if they have been + previously executed. The default is . + + + - Calls a NAnt target in the current project. + + Executes an alternate set of task or type definition depending on + conditions that are individually set on each group. + - When the is used to execute a target, both that - target and all its dependent targets will be re-executed. + The selects one among a number of possible + alternatives. It consists of a sequence of <when> elements + followed by an optional <otherwise> element. - To avoid dependent targets from being executed more than once, two - options are available: + Each <when> element has a single attribute, test, which + specifies an expression. The content of the <when> and + <otherwise> elements is a set of nested tasks. + + + The content of the first, and only the first, <when> + element whose test is is executed. If no + <when> element is , the + content of the <otherwise> element is executed. + If no <when> element is , and no + <otherwise> element is present, nothing is done. - - - - Add an "unless" attribute with value "${target::has-executed('<target name>')}" - to the dependent targets. - - - - - Set the attribute on the - to (recommended). - - - - Call the target "build". + Execute alternate set of tasks depending on the configuration being + built. + + + + ... + + + + ... + + + Build configuration '${build.config}' is not supported! + + ]]> - This shows how a project could 'compile' a debug and release build - using a common compile target. + Define a sources patternset holding an alternate set of patterns + depending on the configuration being built. - - - - - - - - - - - - - - + + + + + + + + + + + + + + Build configuration '${build.config}' is not supported! + + ]]> - - The parameter of the - defaults to , - causing the "init" target to be executed for both - the "debug" and "release" build. - - - This results in the following build log: - - - build: - - init: - [echo] initializing - - compile: - - [echo] compiling with debug = false - - init: - - [echo] initializing - - compile: - - [echo] compiling with debug = true - - BUILD SUCCEEDED - - - If the "init" should only be executed once, set the - attribute of the - to . - - - The build log would then look like this: - - - build: - - init: - [echo] initializing - - compile: - - [echo] compiling with debug = false - - compile: - - [echo] compiling with debug = true - - BUILD SUCCEEDED - - - - Executes the specified target. - + + + One or more alternative sets of tasks to execute. + + The set of tasks to add. - + - Makes sure the is not calling its own - parent. + The set of tasks to execute if none of the + elements are . - - - NAnt target to call. - + + + Gets a value indicating whether a fallback element is defined. + + + if a fallback element is defined; otherwise, + . + - - - Force an execute even if the target has already been executed. The - default is . - + + + Groups a set of tasks to execute when a condition is met. + - - - Execute the specified targets dependencies -- even if they have been - previously executed. The default is . - + + + Executes embedded tasks/elements in the order in which they are defined. + + + + + Creates and executes the embedded (child XML nodes) elements. + + + + + Gets a value indicating whether the element is performing additional + processing using the that was use to + initialize the element. + + + , as a is + responsable for creating tasks from the nested build elements. + + + + + Used to test arbitrary boolean expression. + @@ -5259,8 +5427,38 @@ explicitly overwrite files with the attribute. - When a is used to select files to copy, the - attribute must be set. Files that are + Entire directory structures can be copied to a new location. For this + to happen, the following criteria must be met: + + + + + Everything in the fileset is included + + + + + The directory structure is not flattened + + + + + Empty directories are included + + + + + Destination directory does not exist + + + + + If any of these items are not met, then the files within the source + directory will be copied over instead of the entire directory structure. + + + When a is used to select files or directories to + copy, the attribute must be set. Files that are located under the base directory of the will be copied to a directory under the destination directory matching the path relative to the base directory of the , @@ -5341,7 +5539,7 @@ + ]]> @@ -5354,9 +5552,9 @@ - - Checks whether the task is initialized with valid attributes. - + + Checks whether the task is initialized with valid attributes. + @@ -5365,30 +5563,30 @@ A file that has to be copied does not exist or could not be copied. - - Actually does the file copies. - + + Actually does the file copies. + - - The file to copy. - + + The file to copy. + - - The file to copy to. - + + The file to copy to. + - - The directory to copy to. - + + The directory to copy to. + - - Overwrite existing files even if the destination files are newer. - The default is . - + + Overwrite existing files even if the destination files are newer. + The default is . + @@ -5410,21 +5608,21 @@ - - Chain of filters used to alter the file's content as it is copied. - + + Chain of filters used to alter the file's content as it is copied. + - - The encoding to use when reading files. The default is the system's - current ANSI code page. - + + The encoding to use when reading files. The default is the system's + current ANSI code page. + - - The encoding to use when writing the files. The default is - the encoding of the input file. - + + The encoding to use when writing the files. The default is + the encoding of the input file. + @@ -5432,10 +5630,16 @@ - The key of the is the absolute path of + FileCopyMap should now be considered a readonly hashtable. Any changes to + this property will not be taken into account during the file operation + task. To interact with the file operation, use the + property. + + + The key of the is the absolute path of the destination file and the value is a holding the path and last write time of the most recently updated - source file that is selected to be copied or moved to the + source file that is selected to be copied or moved to the destination file. @@ -5443,34 +5647,389 @@ - - - Holds the absolute paths and last write time of a given file. - - - + - Initializes a new instance of the - class for the specified file and last write time. + Gets the operation map containing all the files/directories to + perform file operations on. + + + + The type of class for this object inherits from KeyedCollection + and is structured so that the key of this collection contains the + full path of the target file/location while the value contains + the object + with the operation details. + + + On Windows, the + is case-insensitive. + + + + + + Holds the absolute paths and last write time of a given file. + + + + + Initializes a new instance of the + class + for the specified . + + + A object containing + the full path and last write time of the file the object represents. + + + + + Initializes a new instance of the + class for the specified file and last write time. The absolute path of the file. The last write time of the file. - - Gets the absolute path of the current file. - - - The absolute path of the current file. - + + Gets the absolute path of the current file. + + + The absolute path of the current file. + - - Gets the time when the current file was last written to. - - - The time when the current file was last written to. - + + Gets the time when the current file was last written to. + + + The time when the current file was last written to. + + + + + Provides methods and properties to properly manage file operations for + NAnt file system based tasks (such as CopyTask and MoveTask). + + + + + Initializes a new instance of the + class with the + source and target locations specified. + + + A object representing the file/location + where the file operation will start. + + + A object representing the file/location + where the file operation will end. + + + + + Normalizes the attributes of + . + + + + + Checks to see whether or not the full path of + + matches the full path of + . + + + is + used to check path equality. + + + true if both paths match; otherwise false. + + + + + Checks to see whether or not the full path of + + is identical to the full path of + . + + + The difference between this method and SourceEqualsTarget is + that the casing of the path is never ignored regardless of + operating system. + + + true if both paths are identical; otherwise false. + + + + + Updates the source of a given instance based on the + . + + If the LastWriteTime property of the + is greater than the LastWriteTime property of + , then + is + replaced with . + + + + The new to replace + the current + object. + + + + + Returns a that represents the current + . + + + A that represents the current + . + + + + + Checks to see if a given + target is considered outdated. + + + A used for comparison purposes + against . + + + The to check. + + + true if the target file is considered out of date; otherwise + false + + + + + Checks to see if the target directory does not exist or that + it does match the source directory name but not string casing. + + + Source directory to check against . + + + The target directory to validate. + + + true if the target directory does not exist or matches the source + directory name but not casing; otherwise false + + + + + Checks to see whether is a file type or + a directory type. + + + The FileSystemInfo type used to compare with. + + + The object to check. + + + true if is the same type as + ; otherwise, false. + + + + + Gets or sets the string comparer to use when comparing + the source path to the target path. + + + + + Gets the full path of + . + + + + + Gets the details of the source path. + + + + + Gets the type of + . + + + + + Gets the type of the file operation an instance of + represents. + + + + + Gets a value indicating whether + is + outdated. + + + true if + is + outdated (or simply a directory); otherwise, false. + + + + + Gets the full path of + . + + + + + Gets the details of the target path. + + + + + Gets the type of + . + + + + + A collection class used to track all of the + objects for + a given file operation task (such as the CopyTask or MoveTask). + + + + + The StringComparer used when comparing file paths. + + + + + Initializes a new instance of the + + class that uses the default string comparer. + + + + + Initializes a new instance of the + + class that uses the specified string comparer. + + + The string comparer to use when comparing keys in the + . + + + + + Determines whether the + contains the + specified key. + + + The key to locate in the + . + + + true if the + contains an element with the specified key; otherwise, false. + + + + + Counts the number of directory operations in a collection. + + + The number of directory operations performed by this collection. + + + + + Counts the number of file operations in a collection. + + + The number of file operations performed by this collection. + + + + + Converts the current instance of + to + the old style FileCopyMap hashtable. + + + The contents of + in a + new hashtable. + + + + + Extracts the key from the specified + element. + + + The from which to + extract the key. + + + The key for the specified + . + + + + + Inserts an element into the + at the + specified index. + + + The zero-based index at which item should be inserted. + + + The to insert. + + + + + Replaces the item at the specified index with the specified item. + + + The zero-based index of the item to be replaced. + + + The new item. + + + + + Used to identify the type of operation a given + represent. + + + + + Indicates that the operation is from file to file. + + + + + Indicates that the operation is from file to directory. + + + + + Indicates that the operation is from directory to directory. + @@ -5532,19 +6091,19 @@ - - Ensures the supplied attributes are valid. - + + Ensures the supplied attributes are valid. + - - The file to delete. - + + The file to delete. + - - The directory to delete. - + + The directory to delete. + @@ -5553,28 +6112,28 @@ - - All the files in the file set will be deleted. - + + All the files in the file set will be deleted. + - - Controls whether to show the name of each deleted file or directory. - The default is . - + + Controls whether to show the name of each deleted file or directory. + The default is . + - - An empty task that allows a build file to contain a description. - - - Set a description. - - This is a description. - ]]> - - + + An empty task that allows a build file to contain a description. + + + Set a description. + + This is a description. + ]]> + + @@ -5663,33 +6222,33 @@ - - Outputs the message to the build log or the specified file. - + + Outputs the message to the build log or the specified file. + - - The encoding to use when writing message to a file. The default is - UTF-8 encoding without a Byte Order Mark (BOM). - + + The encoding to use when writing message to a file. The default is + UTF-8 encoding without a Byte Order Mark (BOM). + - - The message to output. - + + The message to output. + - - Gets or sets the inline content that should be output. - - - The inline content that should be output. - + + Gets or sets the inline content that should be output. + + + The inline content that should be output. + - - The file to write the message to. - + + The file to write the message to. + @@ -5791,9 +6350,9 @@ - - Will be used to ensure thread-safe operations. - + + Will be used to ensure thread-safe operations. + @@ -5819,14 +6378,14 @@ The that was started. - - Reads from the stream until the external program is ended. - + + Reads from the stream until the external program is ended. + - - Reads from the stream until the external program is ended. - + + Reads from the stream until the external program is ended. + @@ -5838,53 +6397,53 @@ The task is not available or not configured for the current framework. - - The name of the executable that should be used to launch the - external program. - - - The name of the executable that should be used to launch the external - program, or if no name is specified. - - - If available, the configured value in the NAnt configuration - file will be used if no name is specified. - + + The name of the executable that should be used to launch the + external program. + + + The name of the executable that should be used to launch the external + program, or if no name is specified. + + + If available, the configured value in the NAnt configuration + file will be used if no name is specified. + - - Gets the filename of the external program to start. - - - The filename of the external program. - - - Override in derived classes to explicitly set the location of the - external tool. - + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Gets the file to which the standard output should be redirected. - - - The file to which the standard output should be redirected, or - if the standard output should not be - redirected. - - - The default implementation will never allow the standard output - to be redirected to a file. Deriving classes should override this - property to change this behaviour. - + + Gets the file to which the standard output should be redirected. + + + The file to which the standard output should be redirected, or + if the standard output should not be + redirected. + + + The default implementation will never allow the standard output + to be redirected to a file. Deriving classes should override this + property to change this behaviour. + @@ -5897,23 +6456,23 @@ - - Gets the working directory for the application. - - - The working directory for the application. - + + Gets the working directory for the application. + + + The working directory for the application. + - - The maximum amount of time the application is allowed to execute, - expressed in milliseconds. Defaults to no time-out. - + + The maximum amount of time the application is allowed to execute, + expressed in milliseconds. Defaults to no time-out. + - - The command-line arguments for the external program. - + + The command-line arguments for the external program. + @@ -5992,31 +6551,31 @@ - - Gets the value that the process specified when it terminated. - - - The code that the associated process specified when it terminated, - or -1000 if the process could not be started or did not - exit (in time). - + + Gets the value that the process specified when it terminated. + + + The code that the associated process specified when it terminated, + or -1000 if the process could not be started or did not + exit (in time). + - - Gets the unique identifier for the spawned application. - + + Gets the unique identifier for the spawned application. + - - Gets or sets a value indicating whether the application should be - spawned. If you spawn an application, its output will not be logged - by NAnt. The default is . - + + Gets or sets a value indicating whether the application should be + spawned. If you spawn an application, its output will not be logged + by NAnt. The default is . + - - Gets the command-line arguments, separated by spaces. - + + Gets the command-line arguments, separated by spaces. + @@ -6025,19 +6584,19 @@ does not hold a valid file name. - - Executes the external program. - + + Executes the external program. + - - The program to execute without command arguments. - - - The path will not be evaluated to a full path using the project - base directory. - - + + The program to execute without command arguments. + + + The path will not be evaluated to a full path using the project + base directory. + + The command-line arguments for the program. These will be @@ -6047,24 +6606,24 @@ - - Environment variables to pass to the program. - + + Environment variables to pass to the program. + - - The directory in which the command will be executed. - - - The directory in which the command will be executed. The default - is the project's base directory. - - - - The working directory will be evaluated relative to the project's - base directory if it is relative. - - + + The directory in which the command will be executed. + + + The directory in which the command will be executed. The default + is the project's base directory. + + + + The working directory will be evaluated relative to the project's + base directory if it is relative. + + @@ -6080,64 +6639,64 @@ - - Specifies whether the external program should be executed using a - runtime engine, if configured. The default is . - - - if the external program should be executed - using a runtime engine; otherwise, . - + + Specifies whether the external program should be executed using a + runtime engine, if configured. The default is . + + + if the external program should be executed + using a runtime engine; otherwise, . + - - Specifies whether the external program is a managed application - which should be executed using a runtime engine, if configured. - The default is . - - - if the external program should be executed - using a runtime engine; otherwise, . - + + Specifies whether the external program is a managed application + which should be executed using a runtime engine, if configured. + The default is . + + + if the external program should be executed + using a runtime engine; otherwise, . + - - Gets the filename of the external program to start. - - - The filename of the external program. - + + Gets the filename of the external program to start. + + + The filename of the external program. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - The directory the program is in. - - - - The directory the program is in. The default is the project's base - directory. - - - The basedir will be evaluated relative to the project's base - directory if it is relative. - - + + The directory the program is in. + + + + The directory the program is in. The default is the project's base + directory. + + + The basedir will be evaluated relative to the project's base + directory if it is relative. + + - - The file to which the standard output will be redirected. - - - By default, the standard output is redirected to the console. - + + The file to which the standard output will be redirected. + + + By default, the standard output is redirected to the console. + @@ -6150,11 +6709,11 @@ - - Gets or sets a value indicating whether the application should be - spawned. If you spawn an application, its output will not be logged - by NAnt. The default is . - + + Gets or sets a value indicating whether the application should be + spawned. If you spawn an application, its output will not be logged + by NAnt. The default is . + @@ -6275,69 +6834,69 @@ - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Sets the timestamp of a given file to a specified time. - + + Sets the timestamp of a given file to a specified time. + - - The URL from which to retrieve a file. - + + The URL from which to retrieve a file. + - - The file where to store the retrieved file. - + + The file where to store the retrieved file. + - - If inside a firewall, proxy server/port information - Format: {proxy server name}:{port number} - Example: proxy.mycompany.com:8080 - + + If inside a firewall, proxy server/port information + Format: {proxy server name}:{port number} + Example: proxy.mycompany.com:8080 + - - The network proxy to use to access the Internet resource. - + + The network proxy to use to access the Internet resource. + - - The network credentials used for authenticating the request with - the Internet resource. - + + The network credentials used for authenticating the request with + the Internet resource. + - - Log errors but don't treat as fatal. The default is . - + + Log errors but don't treat as fatal. The default is . + - - Conditionally download a file based on the timestamp of the local - copy. HTTP only. The default is . - + + Conditionally download a file based on the timestamp of the local + copy. HTTP only. The default is . + - - The length of time, in milliseconds, until the request times out. - The default is 100000 milliseconds. - + + The length of time, in milliseconds, until the request times out. + The default is 100000 milliseconds. + - - The security certificates to associate with the request. - + + The security certificates to associate with the request. + @@ -6491,16 +7050,16 @@ - - Executes embedded tasks in the order in which they are defined. - + + Executes embedded tasks in the order in which they are defined. + - - Automatically exclude build elements that are defined on the task - from things that get executed, as they are evaluated normally during - XML task initialization. - + + Automatically exclude build elements that are defined on the task + from things that get executed, as they are evaluated normally during + XML task initialization. + @@ -6523,14 +7082,14 @@ - - The file to compare if uptodate. - + + The file to compare if uptodate. + - - The file to check against for the uptodate file. - + + The file to check against for the uptodate file. + @@ -6545,188 +7104,188 @@ - - Used to test whether a property is true. - + + Used to test whether a property is true. + - - Used to test whether a property exists. - + + Used to test whether a property exists. + - - Used to test whether a target exists. - + + Used to test whether a target exists. + - - Used to test arbitrary boolean expression. - + + Used to test arbitrary boolean expression. + - - The opposite of the if task. - - - Check that a property does not exist. - - - - - ]]> - - Check that a property value is not true. - - - - - ]]> - - - - Check that a target does not exist. - - - - - ]]> - - + + The opposite of the if task. + + + Check that a property does not exist. + + + + + ]]> + + Check that a property value is not true. + + + + + ]]> + + + + Check that a target does not exist. + + + + + ]]> + + - - Includes an external build file. - - - - This task is used to break your build file into smaller chunks. You - can load a partial build file and have it included into the build file. - - - Any global (project level) tasks in the included build file are executed - when this task is executed. Tasks in target elements are only executed - if that target is executed. - - - The project element attributes are ignored. - - - This task can only be in the global (project level) section of the - build file. - - - This task can only include files from the file system. - - - - - Include a task that fetches the project version from the - GetProjectVersion.include build file. - - - - ]]> - - + + Includes an external build file. + + + + This task is used to break your build file into smaller chunks. You + can load a partial build file and have it included into the build file. + + + Any global (project level) tasks in the included build file are executed + when this task is executed. Tasks in target elements are only executed + if that target is executed. + + + The project element attributes are ignored. + + + This task can only be in the global (project level) section of the + build file. + + + This task can only include files from the file system. + + + + + Include a task that fetches the project version from the + GetProjectVersion.include build file. + + + + ]]> + + - - Used to check for recursived includes. - + + Used to check for recursived includes. + - - Verifies parameters. - + + Verifies parameters. + - - Build file to include. - + + Build file to include. + - - Load a text file into a single property. - - - - Unless an encoding is specified, the encoding associated with the - system's current ANSI code page is used. - - - An UTF-8, little-endian Unicode, and big-endian Unicode encoded text - file is automatically recognized, if the file starts with the appropriate - byte order marks. - - - - - Load file message.txt into property "message". - - - - ]]> - - - - - Load a file using the "latin-1" encoding. - - - - ]]> - - - - - Load a file, replacing all @NOW@ tokens with the current - date/time. - - - - - - - - - - ]]> - - + + Load a text file into a single property. + + + + Unless an encoding is specified, the encoding associated with the + system's current ANSI code page is used. + + + An UTF-8, little-endian Unicode, and big-endian Unicode encoded text + file is automatically recognized, if the file starts with the appropriate + byte order marks. + + + + + Load file message.txt into property "message". + + + + ]]> + + + + + Load a file using the "latin-1" encoding. + + + + ]]> + + + + + Load a file, replacing all @NOW@ tokens with the current + date/time. + + + + + + + + + + ]]> + + - - The file to load. - + + The file to load. + - - The name of the property to save the content to. - + + The name of the property to save the content to. + - - The encoding to use when loading the file. The default is the encoding - associated with the system's current ANSI code page. - + + The encoding to use when loading the file. The default is the encoding + associated with the system's current ANSI code page. + - - The filterchain definition to use. - + + The filterchain definition to use. + @@ -6783,128 +7342,128 @@ Both and are set. - - An assembly to load tasks from. - + + An assembly to load tasks from. + - - A directory to scan for task assemblies. - + + A directory to scan for task assemblies. + - - Used to select which directories or individual assemblies to scan. - + + Used to select which directories or individual assemblies to scan. + - - Loops over a set of items. - - - - Can loop over files in directory, lines in a file, etc. - - - The property value is stored before the loop is done, and restored - when the loop is finished. - - - The property is returned to its normal value once it is used. Read-only - parameters cannot be overridden in this loop. - - - - Loops over the files in c:\. - - - - - ]]> - - - - Loops over all files in the project directory. - - - - - - - - - - - - ]]> - - - - Loops over the folders in c:\. - - - - - ]]> - - - - Loops over all folders in the project directory. - - - - - - - - - - - - ]]> - - - - Loops over a list. - - - - - ]]> - - - - - Loops over lines in the file properties.csv, where each line - is of the format name,value. - - - - - - ]]> - - + + Loops over a set of items. + + + + Can loop over files in directory, lines in a file, etc. + + + The property value is stored before the loop is done, and restored + when the loop is finished. + + + The property is returned to its normal value once it is used. Read-only + parameters cannot be overridden in this loop. + + + + Loops over the files in c:\. + + + + + ]]> + + + + Loops over all files in the project directory. + + + + + + + + + + + + ]]> + + + + Loops over the folders in c:\. + + + + + ]]> + + + + Loops over all folders in the project directory. + + + + + + + + + + + + ]]> + + + + Loops over a list. + + + + + ]]> + + + + + Loops over lines in the file properties.csv, where each line + is of the format name,value. + + + + + + ]]> + + - - The NAnt property name(s) that should be used for the current - iterated item. - - - If specifying multiple properties, separate them with a comma. - + + The NAnt property name(s) that should be used for the current + iterated item. + + + If specifying multiple properties, separate them with a comma. + - - The type of iteration that should be done. - + + The type of iteration that should be done. + @@ -6913,14 +7472,14 @@ - - The source of the iteration. - + + The source of the iteration. + - - The deliminator char. - + + The deliminator char. + @@ -6934,162 +7493,323 @@ - - Tasks to execute for each matching item. - + + Tasks to execute for each matching item. + - - Do not remove any white space characters. - - + + Do not remove any white space characters. + + - - Remove all white space characters from the end of the current - item. - + + Remove all white space characters from the end of the current + item. + - - Remove all white space characters from the beginning of the - current item. - + + Remove all white space characters from the beginning of the + current item. + - - Remove all white space characters from the beginning and end of - the current item. - + + Remove all white space characters from the beginning and end of + the current item. + - - Sends an SMTP message. - - - - Text and text files to include in the message body may be specified as - well as binary attachments. - - - - - Sends an email from nant@sourceforge.net to three recipients - with a subject about the attachments. The body of the message will be - the combined contents of all .txt files in the base directory. - All zip files in the base directory will be included as attachments. - The message will be sent using the smtpserver.anywhere.com SMTP - server. - - - - - - - - - - - ]]> - - + + Sends an SMTP message. + + + + Text and text files to include in the message body may be specified as + well as binary attachments. + + + + + Sends an email from nant@sourceforge.net to three recipients + with a subject about the attachments. The body of the message will be + the combined contents of all .txt files in the base directory. + All zip files in the base directory will be included as attachments. + The message will be sent using the smtpserver.anywhere.com SMTP + server. + + + + + + + + + + + ]]> + + + + + Sends an email from a gmail account to multiple recipients. This example + illustrates how to add a recipient's name to an email address. + + + + ]]> + + + Email addresses in any of the lists (to, cc, bcc, from) can be in one of + the five listed formats below. + + + + Full Name <address@abcxyz.com> + + + <address@abcxyz.com> Full Name + + + (Full Name) address@abcxyz.com + + + address@abcxyz.com (Full Name) + + + address@abcxyz.com + + + + Remember to use &gt; and &lt; XML entities for the angle brackets. + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done. - + + This is where the work is done. + - - Reads a text file and returns the content - in a string. - - The file to read content of. - - The content of the specified file. - + + Reads a text file and returns the content + in a string. + + The file to read content of. + + The content of the specified file. + + + + + Converts an email address or a series of email addresses from + a object to a new + object. + + + A list of email addresses separated by a semicolon. + + + A new object + containing the addresses from . + + + + + Converts a object containing + email address information to a + object. + + + + Email address information passed to this method should be in + one of five formats. + + + + Full Name <address@abcxyz.com> + + + <address@abcxyz.com> Full Name + + + (Full Name) address@abcxyz.com + + + address@abcxyz.com (Full Name) + + + address@abcxyz.com + + + + If the full name of the intended recipient (or sender) is provided, + that information is included in the resulting + object. + + + + The string that contains the address to parse. + + + A new MailAddress object containing the information from + . + + + + + Simple method that converts an XML escaped string back to its unescaped + format. + + + An html encoded string. + + + The decoded format of the html encoded string. + - - Email address of sender. - + + Email address of sender. + - - Semicolon-separated list of recipient email addresses. - + + Semicolon-separated list of recipient email addresses. + + + + + Reply to email address. + - - Semicolon-separated list of CC: recipient email addresses. - + + Semicolon-separated list of CC: recipient email addresses. + - - Semicolon-separated list of BCC: recipient email addresses. - + + Semicolon-separated list of BCC: recipient email addresses. + - - Host name of mail server. The default is localhost. - + + Host name of mail server. The default is localhost. + + + + + The port number used to connect to the mail server. + The default is 25. + + + + + Indicates whether or not ssl should be used to + connect to the smtp host. + - - Text to send in body of email message. - + + Text to send in body of email message. + - - Text to send in subject line of email message. - + + Text to send in subject line of email message. + + + + + Indicates whether or not the body of the email is in + html format. The default value is false. + + + + + The username to use when connecting to the smtp host. + + + + + The password to use when connecting to the smtp host. + - Format of the message. The default is . + Format of the message. The default is . - - Files that are transmitted as part of the body of the email message. - + + Files that are transmitted as part of the body of the email message. + - - Attachments that are transmitted with the message. - + + Attachments that are transmitted with the message. + + + + + Temporary enum replacement of + to ease transition to newer property flags. + + + + + Indicates the body of the email is formatted in plain text. + + + + + Indicates the body of the email is formatted in html. + - - Creates a directory and any non-existent parent directory if necessary. - - - Create the directory build. - - - ]]> - - - - Create the directory tree one/two/three. - - - ]]> - - + + Creates a directory and any non-existent parent directory if necessary. + + + Create the directory build. + + + ]]> + + + + Create the directory tree one/two/three. + + + ]]> + + @@ -7098,9 +7818,9 @@ The directory could not be created. - - The directory to create. - + + The directory to create. + @@ -7114,8 +7834,38 @@ attribute. - A can be used to select files to move. To use - a , the + Entire directory structures can be moved to a new location. For this + to happen, the following criteria must be met: + + + + + Everything in the fileset is included + + + + + The directory structure is not flattened + + + + + Empty directories are included + + + + + Destination directory does not exist + + + + + If any of these items are not met, then the files within the source + directory will be moved over instead of the entire directory structure. + + + A can be used to select files or directories to move. + To use a , the attribute must be set.

Encoding

@@ -7187,7 +7937,7 @@ + ]]> @@ -7195,24 +7945,24 @@ - - Actually does the file moves. - + + Actually does the file moves. + - - The file to move. - + + The file to move. + - - The file to move to. - + + The file to move to. + - - The directory to move to. - + + The directory to move to. + @@ -7228,38 +7978,38 @@ - - Chain of filters used to alter the file's content as it is moved. - + + Chain of filters used to alter the file's content as it is moved. + - - Creates an XSD File for all available tasks. - - - - This can be used in conjuntion with the command-line option to do XSD - Schema validation on the build file. - - - - Creates a NAnt.xsd file in the current project directory. - - - ]]> - - + + Creates an XSD File for all available tasks. + + + + This can be used in conjuntion with the command-line option to do XSD + Schema validation on the build file. + + + + Creates a NAnt.xsd file in the current project directory. + + + ]]> + + - - Creates a NAnt Schema for given types - - The output stream to save the schema to. If , writing is ignored, no exception generated. - The list of tasks to generate XML Schema for. - The list of datatypes to generate XML Schema for. - The target namespace to output. - The new NAnt Schema. + + Creates a NAnt Schema for given types + + The output stream to save the schema to. If , writing is ignored, no exception generated. + The list of tasks to generate XML Schema for. + The list of datatypes to generate XML Schema for. + The target namespace to output. + The new NAnt Schema.
@@ -7278,14 +8028,14 @@ The new instance. - - The name of the output file to which the XSD should be written. - + + The name of the output file to which the XSD should be written. + - - The target namespace for the output. Defaults to "http://tempuri.org/nant-donotuse.xsd" - + + The target namespace for the output. Defaults to "http://tempuri.org/nant-donotuse.xsd" + @@ -7378,133 +8128,133 @@ - - The build file to build. - + + The build file to build. + - - The target to execute. To specify more than one target seperate - targets with a space. Targets are executed in order if possible. - The default is to use target specified in the project's default - attribute. - + + The target to execute. To specify more than one target seperate + targets with a space. Targets are executed in order if possible. + The default is to use target specified in the project's default + attribute. + - - Used to specify a set of build files to process. - + + Used to specify a set of build files to process. + - - Specifies whether current property values should be inherited by - the executed project. The default is . - + + Specifies whether current property values should be inherited by + the executed project. The default is . + - - Specifies whether all references will be copied to the new project. - The default is . - + + Specifies whether all references will be copied to the new project. + The default is . + - - Specifies a collection of properties that should be created in the - executed project. Note, existing properties with identical names - that are not read-only will be overwritten. - + + Specifies a collection of properties that should be created in the + executed project. Note, existing properties with identical names + that are not read-only will be overwritten. + - - Sets a property in the current project. - - - NAnt uses a number of predefined properties. - - - - Define a debug property with value . - - - - ]]> - - - - - Use the user-defined debug property. - - - - ]]> - - - - - Define a read-only property. This is just like passing in the param - on the command line. - - - - ]]> - - - - - Define a property, but do not overwrite the value if the property already exists (eg. it was specified on the command line). - - - - - - - ]]> - - - Executing this build file with the command line option -D:debug=false, - would cause the value specified on the command line to remain unaltered. - - - - - + + Sets a property in the current project. + + + NAnt uses a number of predefined properties. + + + + Define a debug property with value . + + + + ]]> + + + + + Use the user-defined debug property. + + + + ]]> + + + + + Define a read-only property. This is just like passing in the param + on the command line. + + + + ]]> + + + + + Define a property, but do not overwrite the value if the property already exists (eg. it was specified on the command line). + + + + + + + ]]> + + + Executing this build file with the command line option -D:debug=false, + would cause the value specified on the command line to remain unaltered. + + + + + - - The name of the NAnt property to set. - + + The name of the NAnt property to set. + - - The value to assign to the NAnt property. - + + The value to assign to the NAnt property. + - - Specifies whether the property is read-only or not. - The default is . - + + Specifies whether the property is read-only or not. + The default is . + - - Specifies whether references to other properties should not be - expanded when the value of the property is set, but expanded when - the property is actually used. By default, properties will be - expanded when set. - + + Specifies whether references to other properties should not be + expanded when the value of the property is set, but expanded when + the property is actually used. By default, properties will be + expanded when set. + - - Specifies whether the value of a property should be overwritten if - the property already exists (unless the property is read-only). - The default is . - + + Specifies whether the value of a property should be overwritten if + the property already exists (unless the property is read-only). + The default is . + @@ -7565,21 +8315,21 @@ - - Executes the task. - + + Executes the task. + - - Represents the regular expression to be evalued. - - - The regular expression to be evalued. - - - The pattern must contain one or more named constructs, which may - not contain any punctuation and cannot begin with a number. - + + Represents the regular expression to be evalued. + + + The regular expression to be evalued. + + + The pattern must contain one or more named constructs, which may + not contain any punctuation and cannot begin with a number. + @@ -7588,12 +8338,12 @@ - - Represents the input for the regular expression. - - - The input for the regular expression. - + + Represents the input for the regular expression. + + + The input for the regular expression. + @@ -7658,219 +8408,191 @@ - - - Win32 DllImport for the SetEnvironmentVariable function. - - - - - - - - *nix dllimport for the setenv function. - - - - - - 0 if the execution is successful; otherwise, -1. - - - - - Deletes all instances of the variable name. - - The variable to unset. - - 0 if the execution is successful; otherwise, -1. - - - - Checks whether the task is initialized with valid attributes. - + + Checks whether the task is initialized with valid attributes. + - - Set the environment variables - + + Set the environment variables + - - Do the actual work here. - - The name of the environment variable. - The value of the environment variable. + + Do the actual work here. + + The name of the environment variable. + The value of the environment variable. - - The name of a single Environment variable to set - + + The name of a single Environment variable to set + - - The literal value for the environment variable. - + + The literal value for the environment variable. + - - The value for a file-based environment variable. NAnt will convert - it to an absolute filename. - + + The value for a file-based environment variable. NAnt will convert + it to an absolute filename. + - - The value for a directory-based environment variable. NAnt will - convert it to an absolute path. - + + The value for a directory-based environment variable. NAnt will + convert it to an absolute path. + - - The value for a PATH like environment variable. You can use - : or ; as path separators and NAnt will convert it to - the platform's local conventions. - + + The value for a PATH like environment variable. You can use + : or ; as path separators and NAnt will convert it to + the platform's local conventions. + - - A task for sleeping a specified period of time, useful when a build or deployment process - requires an interval between tasks. - - - Sleep 1 hour, 2 minutes, 3 seconds and 4 milliseconds. - - - ]]> - - - - Sleep 123 milliseconds. - - - ]]> - - + + A task for sleeping a specified period of time, useful when a build or deployment process + requires an interval between tasks. + + + Sleep 1 hour, 2 minutes, 3 seconds and 4 milliseconds. + + + ]]> + + + + Sleep 123 milliseconds. + + + ]]> + + - - Verify parameters. - + + Verify parameters. + - - Return time to sleep. - + + Return time to sleep. + - - Sleeps for the specified number of milliseconds. - - Number of milliseconds to sleep. + + Sleeps for the specified number of milliseconds. + + Number of milliseconds to sleep. - - Hours to add to the sleep time. - + + Hours to add to the sleep time. + - - Minutes to add to the sleep time. - + + Minutes to add to the sleep time. + - - Seconds to add to the sleep time. - + + Seconds to add to the sleep time. + - - Milliseconds to add to the sleep time. - + + Milliseconds to add to the sleep time. + - - Processes a document via XSLT. - - - Create a report in HTML. - - - ]]> - - - - Create a report in HTML, with a param. - - - - - - - ]]> - - - - Create a report in HTML, with a expanded param. - - - - - - - ]]> - - - - Create some code based on a directory of templates. - - - - - - - - - - ]]> - - + + Processes a document via XSLT. + + + Create a report in HTML. + + + ]]> + + + + Create a report in HTML, with a param. + + + + + + + ]]> + + + + Create a report in HTML, with a expanded param. + + + + + + + ]]> + + + + Create some code based on a directory of templates. + + + + + + + + + + ]]> + + - - Directory in which to store the results. The default is the project - base directory. - + + Directory in which to store the results. The default is the project + base directory. + - - Desired file extension to be used for the targets. The default is - html. - + + Desired file extension to be used for the targets. The default is + html. + - - URI or path that points to the stylesheet to use. If given as path, it can - be relative to the project's basedir or absolute. - + + URI or path that points to the stylesheet to use. If given as path, it can + be relative to the project's basedir or absolute. + @@ -7885,24 +8607,24 @@ - - Specifies a group of input files to which to apply the stylesheet. - + + Specifies a group of input files to which to apply the stylesheet. + - - XSLT parameters to be passed to the XSLT transformation. - + + XSLT parameters to be passed to the XSLT transformation. + - - XSLT extension objects to be passed to the XSLT transformation. - + + XSLT extension objects to be passed to the XSLT transformation. + - - The network proxy to use to access the Internet resource. - + + The network proxy to use to access the Internet resource. + @@ -8026,70 +8748,265 @@ - - The string to prefix the property names with. The default is "sys.". - + + The string to prefix the property names with. The default is "sys.". + - - Touches a file or set of files -- corresponds to the Unix touch command. - - - - If the file specified does not exist, the task will create it. - - - - Touch the Main.cs file. The current time is used. - - - ]]> - - - - - Touch all executable files in the project base directory and its - subdirectories. - - - - - - - - - ]]> - - + + Touches a file or set of files -- corresponds to the Unix touch command. + + + + If the file specified does not exist, the task will create it. + + + + Touch the Main.cs file. The current time is used. + + + ]]> + + + + + Touch all executable files in the project base directory and its + subdirectories. + + + + + + + + + ]]> + + - - Ensures the supplied attributes are valid. - + + Ensures the supplied attributes are valid. + - - The file to touch. - + + The file to touch. + - - Specifies the new modification time of the file(s) in milliseconds - since midnight Jan 1 1970. - + + Specifies the new modification time of the file(s) in milliseconds + since midnight Jan 1 1970. + - - Specifies the new modification time of the file in the format - MM/DD/YYYY HH:MM:SS. - + + Specifies the new modification time of the file in the format + MM/DD/YYYY HH:MM:SS. + - - Used to select files that should be touched. - + + Used to select files that should be touched. + + + + + Executes a set of tasks, and optionally catches a build exception to + allow recovery or rollback steps to be taken, or to define some steps + to be taken regardless if the tasks succeed or fail, or both. + + + + The tasks defined in the <> block + will be executed in turn, as they normally would in a target. + + + If a <> block is defined, the + tasks in that block will be executed in turn only if one of the tasks + in the <> block fails. This + failure will then be suppressed by the <> + block. + + + The message associated with the failure can also be caught in a + property for use within the <> + block. The original contents of the property will be restored upon + exiting the <> block. + + + If a <> block is defined, the + tasks in that block will be executed after the tasks in both the + <> and <> + blocks have been executed, regardless of whether any task fails in + either block. + + + + + + + + + + + + + + + + + ]]> + + + The output of this example will be: + + + In try + In catch + Finally done + + + The failure in the <> block will + not cause the build to fail. + + + + + + + + + + + + + + + + + + ]]> + + + The output of this example will be: + + + In try + Caught failure: Just because... + Finally done + Build failed: Bad catch + + + Like the above, the failure in the <> + block does not cause the build to fail. The failure in the + <> block does, however. + Note that the <> block is + executed even though the <> + block failed. + + + + + + + + + + + + + + + + + + ]]> + + + The output of this example will be: + + + In try + Caught failure yet again + Build failed: Property 'failure' has not been set. + + + The in the <> + block failed because the "failure" property was not defined + after exiting the <> block. + Note that the failure in the <> + block has eclipsed the failure in the <> + block. + + + + + + + + + + + + + + + + + + ]]> + + + A more concrete example, that will always clean up the generated + temporary file after it has been created. + + + + + + The tasks in this block will be executed as a normal part of + the build script. + + + + + The tasks in this block will be executed if any task in the try + block fails. + + + + + The tasks in this block will always be executed, regardless of + what happens in the try and catch blocks. + + + Note that any failure in any of the tasks in this block will + prevent any subsequent tasks from executing. + + + + + Defines the name of the property to save the message describing + the failure that has been caught. + + + + The failure message is only available in the context of the catch + block. If you wish to preserve the message, you will need to save + it into another property. + + + Readonly properties cannot be overridden by this mechanism. + + @@ -8141,77 +9058,77 @@ - - The property to receive the date/time string in the given pattern. - + + The property to receive the date/time string in the given pattern. + - The date/time pattern to be used. - - The following table lists the standard format characters for each standard pattern. The format characters are case-sensitive; for example, 'g' and 'G' represent slightly different patterns. - - - Format Character - Description Example Format Pattern (en-US) - - dMM/dd/yyyy - Ddddd, dd MMMM yyyy - fdddd, dd MMMM yyyy HH:mm - Fdddd, dd MMMM yyyy HH:mm:ss - gMM/dd/yyyy HH:mm - GMM/dd/yyyy HH:mm:ss - m, MMMMM dd - r, Rddd, dd MMM yyyy HH':'mm':'ss 'GMT' - syyyy'-'MM'-'dd'T'HH':'mm':'ss - tHH:mm - THH:mm:ss - uyyyy'-'MM'-'dd HH':'mm':'ss'Z' - Udddd, dd MMMM yyyy HH:mm:ss - y, Yyyyy MMMM - - The following table lists the patterns that can be combined to construct custom patterns. The patterns are case-sensitive; for example, "MM" is recognized, but "mm" is not. If the custom pattern contains white-space characters or characters enclosed in single quotation marks, the output string will also contain those characters. Characters not defined as part of a format pattern or as format characters are reproduced literally. - - - Format - Pattern Description - - dThe day of the month. Single-digit days will not have a leading zero. - ddThe day of the month. Single-digit days will have a leading zero. - dddThe abbreviated name of the day of the week. - ddddThe full name of the day of the week. - MThe numeric month. Single-digit months will not have a leading zero. - MMThe numeric month. Single-digit months will have a leading zero. - MMMThe abbreviated name of the month. - MMMMThe full name of the month. - yThe year without the century. If the year without the century is less than 10, the year is displayed with no leading zero. - yyThe year without the century. If the year without the century is less than 10, the year is displayed with a leading zero. - yyyyThe year in four digits, including the century. - ggThe period or era. This pattern is ignored if the date to be formatted does not have an associated period or era string. - hThe hour in a 12-hour clock. Single-digit hours will not have a leading zero. - hhThe hour in a 12-hour clock. Single-digit hours will have a leading zero. - HThe hour in a 24-hour clock. Single-digit hours will not have a leading zero. - HHThe hour in a 24-hour clock. Single-digit hours will have a leading zero. - mThe minute. Single-digit minutes will not have a leading zero. - mmThe minute. Single-digit minutes will have a leading zero. - sThe second. Single-digit seconds will not have a leading zero. - ssThe second. Single-digit seconds will have a leading zero. - fThe fraction of a second in single-digit precision. The remaining digits are truncated. - ffThe fraction of a second in double-digit precision. The remaining digits are truncated. - fffThe fraction of a second in three-digit precision. The remaining digits are truncated. - ffffThe fraction of a second in four-digit precision. The remaining digits are truncated. - fffffThe fraction of a second in five-digit precision. The remaining digits are truncated. - ffffffThe fraction of a second in six-digit precision. The remaining digits are truncated. - fffffffThe fraction of a second in seven-digit precision. The remaining digits are truncated. - tThe first character in the AM/PM designator. - ttThe AM/PM designator. - zThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will not have a leading zero. For example, Pacific Standard Time is "-8". - zzThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will have a leading zero. For example, Pacific Standard Time is "-08". - zzzThe full time zone offset ("+" or "-" followed by the hour and minutes). Single-digit hours and minutes will have leading zeros. For example, Pacific Standard Time is "-08:00". - :The default time separator. - /The default date separator. - \ cPattern Where c is any character. Displays the character literally. To display the backslash character, use "\\". - - + The date/time pattern to be used. + + The following table lists the standard format characters for each standard pattern. The format characters are case-sensitive; for example, 'g' and 'G' represent slightly different patterns. + + + Format Character + Description Example Format Pattern (en-US) + + dMM/dd/yyyy + Ddddd, dd MMMM yyyy + fdddd, dd MMMM yyyy HH:mm + Fdddd, dd MMMM yyyy HH:mm:ss + gMM/dd/yyyy HH:mm + GMM/dd/yyyy HH:mm:ss + m, MMMMM dd + r, Rddd, dd MMM yyyy HH':'mm':'ss 'GMT' + syyyy'-'MM'-'dd'T'HH':'mm':'ss + tHH:mm + THH:mm:ss + uyyyy'-'MM'-'dd HH':'mm':'ss'Z' + Udddd, dd MMMM yyyy HH:mm:ss + y, Yyyyy MMMM + + The following table lists the patterns that can be combined to construct custom patterns. The patterns are case-sensitive; for example, "MM" is recognized, but "mm" is not. If the custom pattern contains white-space characters or characters enclosed in single quotation marks, the output string will also contain those characters. Characters not defined as part of a format pattern or as format characters are reproduced literally. + + + Format + Pattern Description + + dThe day of the month. Single-digit days will not have a leading zero. + ddThe day of the month. Single-digit days will have a leading zero. + dddThe abbreviated name of the day of the week. + ddddThe full name of the day of the week. + MThe numeric month. Single-digit months will not have a leading zero. + MMThe numeric month. Single-digit months will have a leading zero. + MMMThe abbreviated name of the month. + MMMMThe full name of the month. + yThe year without the century. If the year without the century is less than 10, the year is displayed with no leading zero. + yyThe year without the century. If the year without the century is less than 10, the year is displayed with a leading zero. + yyyyThe year in four digits, including the century. + ggThe period or era. This pattern is ignored if the date to be formatted does not have an associated period or era string. + hThe hour in a 12-hour clock. Single-digit hours will not have a leading zero. + hhThe hour in a 12-hour clock. Single-digit hours will have a leading zero. + HThe hour in a 24-hour clock. Single-digit hours will not have a leading zero. + HHThe hour in a 24-hour clock. Single-digit hours will have a leading zero. + mThe minute. Single-digit minutes will not have a leading zero. + mmThe minute. Single-digit minutes will have a leading zero. + sThe second. Single-digit seconds will not have a leading zero. + ssThe second. Single-digit seconds will have a leading zero. + fThe fraction of a second in single-digit precision. The remaining digits are truncated. + ffThe fraction of a second in double-digit precision. The remaining digits are truncated. + fffThe fraction of a second in three-digit precision. The remaining digits are truncated. + ffffThe fraction of a second in four-digit precision. The remaining digits are truncated. + fffffThe fraction of a second in five-digit precision. The remaining digits are truncated. + ffffffThe fraction of a second in six-digit precision. The remaining digits are truncated. + fffffffThe fraction of a second in seven-digit precision. The remaining digits are truncated. + tThe first character in the AM/PM designator. + ttThe AM/PM designator. + zThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will not have a leading zero. For example, Pacific Standard Time is "-8". + zzThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will have a leading zero. For example, Pacific Standard Time is "-08". + zzzThe full time zone offset ("+" or "-" followed by the hour and minutes). Single-digit hours and minutes will have leading zeros. For example, Pacific Standard Time is "-08:00". + :The default time separator. + /The default date separator. + \ cPattern Where c is any character. Displays the character literally. To display the backslash character, use "\\". + + @@ -8241,10 +9158,10 @@ - - Property that will be set to or depending on the - result of the date check. - + + Property that will be set to or depending on the + result of the date check. + @@ -8257,55 +9174,55 @@ - - Extracts text from an XML file at the location specified by an XPath - expression. - - - - If the XPath expression specifies multiple nodes the node index is used - to determine which of the nodes' text is returned. - - - - - The example provided assumes that the following XML file (App.config) - exists in the current build directory. - - - - - - - - - ]]> - - - - - The example will read the server value from the above - configuration file. - - - - - - - - ]]> - - + + Extracts text from an XML file at the location specified by an XPath + expression. + + + + If the XPath expression specifies multiple nodes the node index is used + to determine which of the nodes' text is returned. + + + + + The example provided assumes that the following XML file (App.config) + exists in the current build directory. + + + + + + + + + ]]> + + + + + The example will read the server value from the above + configuration file. + + + + + + + + ]]> + + - - Executes the XML peek task. - + + Executes the XML peek task. + @@ -8318,126 +9235,126 @@ - - Gets the contents of the node specified by the XPath expression. - - The XPath expression used to determine which nodes to choose from. - The XML document to select the nodes from. - The node index in the case where multiple nodes satisfy the expression. - - The contents of the node specified by the XPath expression. - + + Gets the contents of the node specified by the XPath expression. + + The XPath expression used to determine which nodes to choose from. + The XML document to select the nodes from. + The node index in the case where multiple nodes satisfy the expression. + + The contents of the node specified by the XPath expression. + - - The name of the file that contains the XML document - that is going to be peeked at. - + + The name of the file that contains the XML document + that is going to be peeked at. + - - The index of the node that gets its text returned when the query - returns multiple nodes. - + + The index of the node that gets its text returned when the query + returns multiple nodes. + - - The property that receives the text representation of the XML inside - the node returned from the XPath expression. - + + The property that receives the text representation of the XML inside + the node returned from the XPath expression. + - - The XPath expression used to select which node to read. - + + The XPath expression used to select which node to read. + - - Namespace definitions to resolve prefixes in the XPath expression. - + + Namespace definitions to resolve prefixes in the XPath expression. + - - Replaces text in an XML file at the location specified by an XPath - expression. - - - - The location specified by the XPath expression must exist, it will - not create the parent elements for you. However, provided you have - a root element you could use a series of the tasks to build the - XML file up if necessary. - - - - - Change the server setting in the configuration from testhost.somecompany.com - to productionhost.somecompany.com. - - XML file: - - - - - - - - ]]> - - Build fragment: - - - ]]> - - - - - Modify the noNamespaceSchemaLocation in an XML file. - - XML file: - - - - - ]]> - - Build fragment: - - - - - - - ]]> - - + + Replaces text in an XML file at the location specified by an XPath + expression. + + + + The location specified by the XPath expression must exist, it will + not create the parent elements for you. However, provided you have + a root element you could use a series of the tasks to build the + XML file up if necessary. + + + + + Change the server setting in the configuration from testhost.somecompany.com + to productionhost.somecompany.com. + + XML file: + + + + + + + + ]]> + + Build fragment: + + + ]]> + + + + + Modify the noNamespaceSchemaLocation in an XML file. + + XML file: + + + + + ]]> + + Build fragment: + + + + + + + ]]> + + - - Executes the XML poke task. - + + Executes the XML poke task. + - - Loads an XML document from a file on disk. - - - The file name of the file to load the XML document from. - - - Value for XmlDocument.PreserveWhitespace that is set before the xml is loaded. - - - An containing - the document object model representing the file. - + + Loads an XML document from a file on disk. + + + The file name of the file to load the XML document from. + + + Value for XmlDocument.PreserveWhitespace that is set before the xml is loaded. + + + An containing + the document object model representing the file. + @@ -8460,48 +9377,50 @@ - - Given a node list, replaces the XML within those nodes. - - - The list of nodes to replace the contents of. - - - The text to replace the contents with. - + + Given a node list, replaces the XML within those nodes. + + + The list of nodes to replace the contents of. + + + The text to replace the contents with. + - - Saves the XML document to a file. - - The XML document to be saved. - The file name to save the XML document under. + + Saves the XML document to a file. + + The XML document to be saved. + The file name to save the XML document under. - - The name of the file that contains the XML document that is going - to be poked. - + + The name of the file that contains the XML document that is going + to be poked. + - - The XPath expression used to select which nodes are to be modified. - + + The XPath expression used to select which nodes are to be modified. + - - The value that replaces the contents of the selected nodes. - + + The value that replaces the contents of the selected nodes. + - - Namespace definitions to resolve prefixes in the XPath expression. - + + Namespace definitions to resolve prefixes in the XPath expression. + - - Namespace definitions to resolve prefixes in the XPath expression. - + + If then the whitespace in the resulting + document will be preserved; otherwise the whitespace will be removed. + The default is . + @@ -8581,76 +9500,76 @@ - - Quotes a command line argument if it contains a single quote or a - space. - - The command line argument. - - A quoted command line argument if - contains a single quote or a space; otherwise, - . - + + Quotes a command line argument if it contains a single quote or a + space. + + The command line argument. + + A quoted command line argument if + contains a single quote or a space; otherwise, + . + - - A single command-line argument; can contain space characters. - + + A single command-line argument; can contain space characters. + - - The name of a file as a single command-line argument; will be - replaced with the absolute filename of the file. - + + The name of a file as a single command-line argument; will be + replaced with the absolute filename of the file. + - - The value for a directory-based command-line argument; will be - replaced with the absolute path of the directory. - + + The value for a directory-based command-line argument; will be + replaced with the absolute path of the directory. + - - The value for a PATH-like command-line argument; you can use - : or ; as path separators and NAnt will convert it - to the platform's local conventions, while resolving references to - environment variables. - - - Individual parts will be replaced with the absolute path, resolved - relative to the project base directory. - + + The value for a PATH-like command-line argument; you can use + : or ; as path separators and NAnt will convert it + to the platform's local conventions, while resolving references to + environment variables. + + + Individual parts will be replaced with the absolute path, resolved + relative to the project base directory. + - - Sets a single command-line argument and treats it like a PATH - ensures - the right separator for the local platform is used. - + + Sets a single command-line argument and treats it like a PATH - ensures + the right separator for the local platform is used. + - - List of command-line arguments; will be passed to the executable - as is. - + + List of command-line arguments; will be passed to the executable + as is. + - - Indicates if the argument should be passed to the external program. - If then the argument will be passed; - otherwise, skipped. The default is . - + + Indicates if the argument should be passed to the external program. + If then the argument will be passed; + otherwise, skipped. The default is . + - - Indicates if the argument should not be passed to the external - program. If then the argument will be - passed; otherwise, skipped. The default is . - + + Indicates if the argument should not be passed to the external + program. If then the argument will be + passed; otherwise, skipped. The default is . + - - Gets string value corresponding with the argument. - + + Gets string value corresponding with the argument. + @@ -8716,11 +9635,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -8753,10 +9672,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -8777,33 +9696,33 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Provides credentials for password-based authentication schemes. - + + Provides credentials for password-based authentication schemes. + @@ -8823,35 +9742,35 @@ - - The domain or computer name that verifies the credentials. - + + The domain or computer name that verifies the credentials. + - - The password for the user name associated with the credentials. - + + The password for the user name associated with the credentials. + - - The user name associated with the credentials. - + + The user name associated with the credentials. + - - Indicates if the credentials should be used to provide authentication - information to the external resource. If then - the credentials will be passed; otherwise, not. The default is - . - + + Indicates if the credentials should be used to provide authentication + information to the external resource. If then + the credentials will be passed; otherwise, not. The default is + . + - - Indicates if the credentials should not be used to provide authentication - information to the external resource. If then the - credentials will be passed; otherwise, not. The default is - . - + + Indicates if the credentials should not be used to provide authentication + information to the external resource. If then the + credentials will be passed; otherwise, not. The default is + . + @@ -9065,10 +9984,10 @@ - - copy constructor - - + + copy constructor + + @@ -9079,9 +9998,9 @@ - - Adds a nested set of patterns, or references a standalone patternset. - + + Adds a nested set of patterns, or references a standalone patternset. + @@ -9090,37 +10009,37 @@ - - Determines if a file has a more recent last write time than the - given time, or no longer exists. - - A file to check the last write time against. - The datetime to compare against. - - The name of the file that has a last write time greater than - or that no longer exists; - otherwise, . - + + Determines if a file has a more recent last write time than the + given time, or no longer exists. + + A file to check the last write time against. + The datetime to compare against. + + The name of the file that has a last write time greater than + or that no longer exists; + otherwise, . + - - Determines if one of the given files has a more recent last write - time than the given time. If one of the given files no longer exists, - the target will be considered out-of-date. - - A collection of filenames to check the last write time against. - The datetime to compare against. - - The name of the first file that has a last write time greater than - ; otherwise, null. - + + Determines if one of the given files has a more recent last write + time than the given time. If one of the given files no longer exists, + the target will be considered out-of-date. + + A collection of filenames to check the last write time against. + The datetime to compare against. + + The name of the first file that has a last write time greater than + ; otherwise, null. + - - Indicates whether include and exclude patterns must be treated in a - case-sensitive way. The default is on Unix; - otherwise, . - + + Indicates whether include and exclude patterns must be treated in a + case-sensitive way. The default is on Unix; + otherwise, . + @@ -9130,26 +10049,26 @@ - - Indicates whether default excludes should be used or not. - The default is . - + + Indicates whether default excludes should be used or not. + The default is . + - - The base of the directory of this fileset. The default is the project - base directory. - + + The base of the directory of this fileset. The default is the project + base directory. + - - Gets the collection of include patterns. - + + Gets the collection of include patterns. + - - Gets the collection of exclude patterns. - + + Gets the collection of exclude patterns. + @@ -9177,51 +10096,51 @@ - - Gets the collection of directory names that were scanned for files. - - - A collection that contains the directory names that were scanned for - files. - + + Gets the collection of directory names that were scanned for files. + + + A collection that contains the directory names that were scanned for + files. + - - The items to include in the fileset. - + + The items to include in the fileset. + - - The items to include in the fileset. - + + The items to include in the fileset. + - - The items to exclude from the fileset. - + + The items to exclude from the fileset. + - - The items to exclude from the fileset. - + + The items to exclude from the fileset. + - - The files from which a list of patterns or files to include should - be obtained. - + + The files from which a list of patterns or files to include should + be obtained. + - - The files from which a list of patterns or files to include should - be obtained. - + + The files from which a list of patterns or files to include should + be obtained. + - - The files from which a list of patterns or files to exclude should - be obtained. - + + The files from which a list of patterns or files to exclude should + be obtained. + @@ -9231,16 +10150,22 @@ The of the file that has the newest (closest to present) last write time. + + + Indicates whether or not every file and directory is included in + the fileset list. + + - - The pattern or file name to exclude. - + + The pattern or file name to exclude. + - - If then the pattern will be excluded; - otherwise, skipped. The default is . - + + If then the pattern will be excluded; + otherwise, skipped. The default is . + @@ -9257,21 +10182,21 @@ - - If then the file will be searched for - on the path. The default is . - + + If then the file will be searched for + on the path. The default is . + - - The pattern or file name to include. - + + The pattern or file name to include. + - - If then the pattern will be included; - otherwise, skipped. The default is . - + + If then the pattern will be included; + otherwise, skipped. The default is . + @@ -9286,10 +10211,10 @@ - - If then the patterns will be excluded; - otherwise, skipped. The default is . - + + If then the patterns will be excluded; + otherwise, skipped. The default is . + @@ -9299,10 +10224,10 @@ - - The name of a file; each line of this file is taken to be a - pattern. - + + The name of a file; each line of this file is taken to be a + pattern. + @@ -9313,16 +10238,16 @@ - - If then the patterns in the include file - will be searched for on the path. The default is . - + + If then the patterns in the include file + will be searched for on the path. The default is . + - - If then the patterns will be included; - otherwise, skipped. The default is . - + + If then the patterns will be included; + otherwise, skipped. The default is . + @@ -9345,9 +10270,9 @@ A instance to create a from. - - Represents an environment variable. - + + Represents an environment variable. + @@ -9363,75 +10288,75 @@ - - The name of the environment variable. - + + The name of the environment variable. + - - The literal value for the environment variable. - + + The literal value for the environment variable. + - - The value for a file-based environment variable. NAnt will convert - it to an absolute filename. - + + The value for a file-based environment variable. NAnt will convert + it to an absolute filename. + - - The value for a directory-based environment variable. NAnt will - convert it to an absolute path. - + + The value for a directory-based environment variable. NAnt will + convert it to an absolute path. + - - The value for a PATH like environment variable. You can use - : or ; as path separators and NAnt will convert it to - the platform's local conventions. - + + The value for a PATH like environment variable. You can use + : or ; as path separators and NAnt will convert it to + the platform's local conventions. + - - Sets a single environment variable and treats it like a PATH - - ensures the right separator for the local platform is used. - + + Sets a single environment variable and treats it like a PATH - + ensures the right separator for the local platform is used. + - - Gets the value of the environment variable. - + + Gets the value of the environment variable. + - - Indicates if the environment variable should be passed to the - external program. If then the environment - variable will be passed; otherwise, skipped. The default is - . - + + Indicates if the environment variable should be passed to the + external program. If then the environment + variable will be passed; otherwise, skipped. The default is + . + - - Indicates if the environment variable should not be passed to the - external program. If then the environment - variable will be passed; otherwise, skipped. The default is - . - + + Indicates if the environment variable should not be passed to the + external program. If then the environment + variable will be passed; otherwise, skipped. The default is + . + - - A set of environment variables. - + + A set of environment variables. + - - Environment variable to pass to a program. - + + Environment variable to pass to a program. + - - Environment variable to pass to a program. - + + Environment variable to pass to a program. + @@ -9497,11 +10422,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -9534,10 +10459,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -9558,52 +10483,52 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - The name of the NAnt property to set. - + + The name of the NAnt property to set. + - - The string pattern to use to format the property. - + + The string pattern to use to format the property. + - - Indicates if the formatter should be used to format the timestamp. - If then the formatter will be used; - otherwise, skipped. The default is . - + + Indicates if the formatter should be used to format the timestamp. + If then the formatter will be used; + otherwise, skipped. The default is . + - - Indicates if the formatter should be not used to format the - timestamp. If then the formatter will be - used; otherwise, skipped. The default is . - + + Indicates if the formatter should be not used to format the + timestamp. If then the formatter will be + used; otherwise, skipped. The default is . + @@ -9657,11 +10582,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -9694,10 +10619,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -9712,28 +10637,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -9769,21 +10694,21 @@ - - Do not threat the program as a managed application. - + + Do not threat the program as a managed application. + - - Leave it up to the CLR to determine which specific version of - the CLR will be used to run the application. - + + Leave it up to the CLR to determine which specific version of + the CLR will be used to run the application. + - - Forces an application to run against the currently targeted - version of a given CLR. - + + Forces an application to run against the currently targeted + version of a given CLR. + @@ -9812,45 +10737,45 @@ - - Represents an option. - + + Represents an option. + - - name, value constructor - - - + + name, value constructor + + + - - Default constructor - + + Default constructor + - - Name of the option. - + + Name of the option. + - - Value of the option. The default is . - + + Value of the option. The default is . + - - Indicates if the option should be passed to the task. - If then the option will be passed; - otherwise, skipped. The default is . - + + Indicates if the option should be passed to the task. + If then the option will be passed; + otherwise, skipped. The default is . + - - Indicates if the option should not be passed to the task. - If then the option will be passed; - otherwise, skipped. The default is . - + + Indicates if the option should not be passed to the task. + If then the option will be passed; + otherwise, skipped. The default is . + @@ -9915,11 +10840,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -9952,10 +10877,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -9976,59 +10901,59 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Represents a nested path element. - + + Represents a nested path element. + - - The name of a file to add to the path. Will be replaced with - the absolute path of the file. - + + The name of a file to add to the path. Will be replaced with + the absolute path of the file. + - - The name of a directory to add to the path. Will be replaced with - the absolute path of the directory. - + + The name of a directory to add to the path. Will be replaced with + the absolute path of the directory. + - - A string that will be treated as a path-like string. You can use - : or ; as path separators and NAnt will convert it - to the platform's local conventions, while resolving references - to environment variables. - + + A string that will be treated as a path-like string. You can use + : or ; as path separators and NAnt will convert it + to the platform's local conventions, while resolving references + to environment variables. + - - If then the entry will be added to the - path; otherwise, skipped. The default is . - + + If then the entry will be added to the + path; otherwise, skipped. The default is . + @@ -10047,27 +10972,27 @@ - - - Paths are groups of files and/or directories that need to be passed as a single - unit. The order in which parts of the path are specified in the build file is - retained, and duplicate parts are automatically suppressed. - - - - - Define a global <path> that can be referenced by other - tasks or types. - - - - - - - ]]> - - + + + Paths are groups of files and/or directories that need to be passed as a single + unit. The order in which parts of the path are specified in the build file is + retained, and duplicate parts are automatically suppressed. + + + + + Define a global <path> that can be referenced by other + tasks or types. + + + + + + + ]]> + + @@ -10083,13 +11008,13 @@ The string representing a path. - - Returns a textual representation of the path, which can be used as - PATH environment variable definition. - - - A textual representation of the path. - + + Returns a textual representation of the path, which can be used as + PATH environment variable definition. + + + A textual representation of the path. + @@ -10104,12 +11029,12 @@ The to add. - - Returns all path elements defined by this path object. - - - A list of path elements. - + + Returns all path elements defined by this path object. + + + A list of path elements. + @@ -10129,21 +11054,21 @@ - - The name pattern to include/exclude. - + + The name pattern to include/exclude. + - - If then the pattern will be used; - otherwise, skipped. The default is . - + + If then the pattern will be used; + otherwise, skipped. The default is . + - - If then the pattern will be used; - otherwise, skipped. The default is . - + + If then the pattern will be used; + otherwise, skipped. The default is . + @@ -10190,12 +11115,12 @@ - - Copies the entire collection to a compatible one-dimensional array, - starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, + starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -10228,10 +11153,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -10246,36 +11171,36 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -10472,9 +11397,9 @@ The to add. - - Defines a single pattern for files to include. - + + Defines a single pattern for files to include. + @@ -10483,9 +11408,9 @@ - - Defines a single pattern for files to exclude. - + + Defines a single pattern for files to exclude. + @@ -10494,10 +11419,10 @@ - - Contains HTTP proxy settings used to process requests to Internet - resources. - + + Contains HTTP proxy settings used to process requests to Internet + resources. + @@ -10516,9 +11441,9 @@ - - The name of the proxy host. - + + The name of the proxy host. + @@ -10526,40 +11451,40 @@ - - Specifies whether to bypass the proxy server for local addresses. - The default is . - + + Specifies whether to bypass the proxy server for local addresses. + The default is . + - - The credentials to submit to the proxy server for authentication. - + + The credentials to submit to the proxy server for authentication. + - - Indicates if the proxy should be used to connect to the external - resource. If then the proxy will be used; - otherwise, not. The default is . - + + Indicates if the proxy should be used to connect to the external + resource. If then the proxy will be used; + otherwise, not. The default is . + - - Indicates if the proxy should not be used to connect to the external - resource. If then the proxy will be used; - otherwise, not. The default is . - + + Indicates if the proxy should not be used to connect to the external + resource. If then the proxy will be used; + otherwise, not. The default is . + - - Represents an element of which the XML is processed by its parent task - or type. - + + Represents an element of which the XML is processed by its parent task + or type. + - - Gets the XML that this element represents. - + + Gets the XML that this element represents. + @@ -10573,48 +11498,48 @@ - - ReplaceTokens filter token. - + + ReplaceTokens filter token. + - - Token to be replaced. - + + Token to be replaced. + - - New value of token. - + + New value of token. + - - Indicates if the token should be used to replace values. - If then the token will be used; - otherwise, not. The default is . - + + Indicates if the token should be used to replace values. + If then the token will be used; + otherwise, not. The default is . + - - Indicates if the token should not be used to replace values. - If then the token will be used; - otherwise, not. The default is . - + + Indicates if the token should not be used to replace values. + If then the token will be used; + otherwise, not. The default is . + - - Represents an XML namespace. - + + Represents an XML namespace. + - - The prefix to associate with the namespace. - + + The prefix to associate with the namespace. + - - The associated XML namespace URI. - + + The associated XML namespace URI. + @@ -10694,11 +11619,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -10731,10 +11656,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -10755,35 +11680,35 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Represents an XSLT extension object. The object should have a default - parameterless constructor and the return value should be one of the - four basic XPath data types of number, string, Boolean or node set. - + + Represents an XSLT extension object. The object should have a default + parameterless constructor and the return value should be one of the + four basic XPath data types of number, string, Boolean or node set. + @@ -10801,28 +11726,28 @@ - - The full type name of the XSLT extension object. - + + The full type name of the XSLT extension object. + - - The assembly which contains the XSLT extension object. - + + The assembly which contains the XSLT extension object. + - - Indicates if the extension object should be added to the XSLT argument - list. If then the extension object will be - added; otherwise, skipped. The default is . - + + Indicates if the extension object should be added to the XSLT argument + list. If then the extension object will be + added; otherwise, skipped. The default is . + - - Indicates if the extension object should not be added to the XSLT argument - list. If then the extension object will be - added; otherwise, skipped. The default is . - + + Indicates if the extension object should not be added to the XSLT argument + list. If then the extension object will be + added; otherwise, skipped. The default is . + @@ -10899,15 +11824,15 @@ - - Copies the entire collection to a compatible one-dimensional array, - starting at the specified index of the target array. - - The one-dimensional array that is the - destination of the elements copied from the collection. The array - must have zero-based indexing. - The zero-based index in - at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, + starting at the specified index of the target array. + + The one-dimensional array that is the + destination of the elements copied from the collection. The array + must have zero-based indexing. + The zero-based index in + at which copying begins. @@ -10949,11 +11874,11 @@ from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get - or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get + or set. @@ -10978,33 +11903,33 @@ enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Represents an XSLT parameter. - + + Represents an XSLT parameter. + @@ -11040,18 +11965,18 @@ - - Indicates if the parameter should be added to the XSLT argument list. - If then the parameter will be added; - otherwise, skipped. The default is . - + + Indicates if the parameter should be added to the XSLT argument list. + If then the parameter will be added; + otherwise, skipped. The default is . + - - Indicates if the parameter should not be added to the XSLT argument - list. If then the parameter will be - added; otherwise, skipped. The default is . - + + Indicates if the parameter should not be added to the XSLT argument + list. If then the parameter will be + added; otherwise, skipped. The default is . + @@ -11117,11 +12042,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -11154,10 +12079,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -11178,33 +12103,33 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Resolves assemblies by caching assemblies that were loaded. - + + Resolves assemblies by caching assemblies that were loaded. + @@ -11221,13 +12146,13 @@ Installs the assembly resolver by hooking up to the - event. + event. - - Uninstalls the assembly resolver. - + + Uninstalls the assembly resolver. + @@ -11261,9 +12186,9 @@ - - Holds the loaded assemblies. - + + Holds the loaded assemblies. + @@ -11277,9 +12202,9 @@ - - Represents a valid command-line argument. - + + Represents a valid command-line argument. + @@ -11346,12 +12271,12 @@ - - Gets the property that backs the argument. - - - The property that backs the arguments. - + + Gets the property that backs the argument. + + + The property that backs the arguments. + @@ -11366,61 +12291,61 @@ - - Gets the long name of the argument. - - The long name of the argument. + + Gets the long name of the argument. + + The long name of the argument. - - Gets the short name of the argument. - - The short name of the argument. + + Gets the short name of the argument. + + The short name of the argument. - - Gets the description of the argument. - - The description of the argument. + + Gets the description of the argument. + + The description of the argument. - - Gets a value indicating whether the argument is required. - - - if the argument is required; otherwise, - . - + + Gets a value indicating whether the argument is required. + + + if the argument is required; otherwise, + . + - - Gets a value indicating whether a mathing command-line argument - was already found. - - - if a matching command-line argument was - already found; otherwise, . - + + Gets a value indicating whether a mathing command-line argument + was already found. + + + if a matching command-line argument was + already found; otherwise, . + - - Gets a value indicating whether the argument can be specified multiple - times. - - - if the argument may be specified multiple - times; otherwise, . - + + Gets a value indicating whether the argument can be specified multiple + times. + + + if the argument may be specified multiple + times; otherwise, . + - - Gets a value indicating whether the argument can only be specified once - with a certain value. - - - if the argument should always have a unique - value; otherwise, . - + + Gets a value indicating whether the argument can only be specified once + with a certain value. + + + if the argument should always have a unique + value; otherwise, . + @@ -11455,37 +12380,37 @@ - - Gets a value indicating whether the argument is array-based. - - - if the argument is backed by an array; - otherwise, . - + + Gets a value indicating whether the argument is array-based. + + + if the argument is backed by an array; + otherwise, . + - - Gets a value indicating whether the argument is the default argument. - - - if the argument is the default argument; - otherwise, . - + + Gets a value indicating whether the argument is the default argument. + + + if the argument is the default argument; + otherwise, . + - - Gets a value indicating whether the argument cannot be combined with - other arguments. - - - if the argument cannot be combined with other - arguments; otherwise, . - + + Gets a value indicating whether the argument cannot be combined with + other arguments. + + + if the argument cannot be combined with other + arguments; otherwise, . + - - Allows control of command line parsing. - + + Allows control of command line parsing. + @@ -11495,28 +12420,28 @@ Specifies the checking to be done on the argument. - - Gets or sets the checking to be done on the argument. - - The checking that should be done on the argument. + + Gets or sets the checking to be done on the argument. + + The checking that should be done on the argument. - - Gets or sets the long name of the argument. - - The long name of the argument. + + Gets or sets the long name of the argument. + + The long name of the argument. - - Gets or sets the short name of the argument. - - The short name of the argument. + + Gets or sets the short name of the argument. + + The short name of the argument. - - Gets or sets the description of the argument. - - The description of the argument. + + Gets or sets the description of the argument. + + The description of the argument. @@ -11570,11 +12495,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -11607,10 +12532,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -11631,34 +12556,34 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - The exception that is thrown when one of the command-line arguments provided - is not valid. - + + The exception that is thrown when one of the command-line arguments provided + is not valid. + @@ -11689,50 +12614,50 @@ The that contains contextual information about the source or destination. - - Used to control parsing of command-line arguments. - + + Used to control parsing of command-line arguments. + - - Indicates that this field is required. An error will be displayed - if it is not present when parsing arguments. - + + Indicates that this field is required. An error will be displayed + if it is not present when parsing arguments. + - - Only valid in conjunction with Multiple. - Duplicate values will result in an error. - + + Only valid in conjunction with Multiple. + Duplicate values will result in an error. + - - Inidicates that the argument may be specified more than once. - Only valid if the argument is a collection - + + Inidicates that the argument may be specified more than once. + Only valid if the argument is a collection + - - Inidicates that if this argument is specified, no other arguments may be specified. - + + Inidicates that if this argument is specified, no other arguments may be specified. + - - The default type for non-collection arguments. - The argument is not required, but an error will be reported if it is specified more than once. - + + The default type for non-collection arguments. + The argument is not required, but an error will be reported if it is specified more than once. + - - The default type for collection arguments. - The argument is permitted to occur multiple times, but duplicate - values will cause an error to be reported. - + + The default type for collection arguments. + The argument is permitted to occur multiple times, but duplicate + values will cause an error to be reported. + - - Commandline parser. - + + Commandline parser. + @@ -11753,27 +12678,27 @@ The of does not match the argument specification that was used to initialize the parser. - - Splits a string and removes any empty strings from the - result. Same functionality as the - public string[] Split(char[] separator, StringSplitOptions options) - method in .Net 2.0. Replace with that call when 2.0 is standard. - - - - the array of strings + + Splits a string and removes any empty strings from the + result. Same functionality as the + public string[] Split(char[] separator, StringSplitOptions options) + method in .Net 2.0. Replace with that call when 2.0 is standard. + + + + the array of strings - - Read a response file and parse the arguments as usual. - - The response file to load arguments + + Read a response file and parse the arguments as usual. + + The response file to load arguments - - Parse the argument list using the - - + + Parse the argument list using the + + @@ -11797,22 +12722,22 @@ - - Gets the usage instructions. - - The usage instructions. + + Gets the usage instructions. + + The usage instructions. - - Gets a value indicating whether no arguments were specified on the - command line. - + + Gets a value indicating whether no arguments were specified on the + command line. + - - Marks a command-line option as being the default option. When the name of - a command-line argument is not specified, this option will be assumed. - + + Marks a command-line option as being the default option. When the name of + a command-line argument is not specified, this option will be assumed. + @@ -11822,42 +12747,121 @@ Specifies the checking to be done on the argument. - - Provides modified version for Copy and Move from the File class that - allow for filter chain processing. - + + Provides modified version for Copy and Move from the File class that + allow for filter chain processing. + + + + + Constant buffer size for copy/move functions. + + Default value is 8k - - Copies a file filtering its content through the filter chain. - - The file to copy - The file to copy to - Chain of filters to apply when copying, or is no filters should be applied. - The encoding used to read the soure file. - The encoding used to write the destination file. + + Copies a file filtering its content through the filter chain. + + + The file to copy + + + The file to copy to + + + Chain of filters to apply when copying, or is no + filters should be applied. + + + The encoding used to read the soure file. + + + The encoding used to write the destination file. + - - Moves a file filtering its content through the filter chain. - - The file to move. - The file to move move to. - Chain of filters to apply when moving, or is no filters should be applied. - The encoding used to read the soure file. - The encoding used to write the destination file. + + Moves a file filtering its content through the filter chain. + + + The file to move. + + + The file to move move to. + + + Chain of filters to apply when moving, or is no + filters should be applied. + + + The encoding used to read the soure file. + + + The encoding used to write the destination file. + + + + + Copies a directory while filtering its file content through the filter chain. + + + Source directory to copy from. + + + Destination directory to copy to. + + + Chain of filters to apply when copying, or is no + filters should be applied. + + + The encoding used to read the soure file. + + + The encoding used to write the destination file. + + + + + Moves a directory while filtering its file content through the filter chain. + + + Source directory to move from. + + + Destination directory to move to. + + + Chain of filters to apply when copying, or is no + filters should be applied. + + + The encoding used to read the soure file. + + + The encoding used to write the destination file. + + + + + Generates a new temporary directory name based on the system's + temporary path. + + + The temp directory name. + - - Reads a file filtering its content through the filter chain. - - The file to read. - Chain of filters to apply when reading, or is no filters should be applied. - The encoding used to read the file. - - If is , - then the system's ANSI code page will be used to read the file. - + + Reads a file filtering its content through the filter chain. + + The file to read. + Chain of filters to apply when reading, or is no filters should be applied. + The encoding used to read the file. + + If is , + then the system's ANSI code page will be used to read the file. + @@ -11899,33 +12903,33 @@ is . - - Returns the home directory of the current user. - - - The home directory of the current user. - + + Returns the home directory of the current user. + + + The home directory of the current user. + - - Scans a list of directories for the specified filename. - - The list of directories to search. - The name of the file to look for. - Specifies whether the directory should be searched recursively. - - The directories are scanned in the order in which they are defined. - - - The absolute path to the specified file, or null if the file was - not found. - + + Scans a list of directories for the specified filename. + + The list of directories to search. + The name of the file to look for. + Specifies whether the directory should be searched recursively. + + The directories are scanned in the order in which they are defined. + + + The absolute path to the specified file, or null if the file was + not found. + - - Helper class for determining whether assemblies are located in the - Global Assembly Cache. - + + Helper class for determining whether assemblies are located in the + Global Assembly Cache. + @@ -11985,9 +12989,9 @@ - - Holds a value indicating whether the object has been disposed. - + + Holds a value indicating whether the object has been disposed. + @@ -12010,21 +13014,21 @@ - - Determines whether an assembly is installed in the Global - Assembly Cache given its file name or path. - - The name or path of the file that contains the manifest of the assembly. - - if is - installed in the Global Assembly Cache; otherwise, - . - + + Determines whether an assembly is installed in the Global + Assembly Cache given its file name or path. + + The name or path of the file that contains the manifest of the assembly. + + if is + installed in the Global Assembly Cache; otherwise, + . + - - Provides a set of helper methods related to reflection. - + + Provides a set of helper methods related to reflection. + @@ -12056,10 +13060,10 @@ - - Provides resource support to NAnt assemblies. This class cannot - be inherited from. - + + Provides resource support to NAnt assemblies. This class cannot + be inherited from. + @@ -12068,142 +13072,142 @@ - - Registers the assembly to be used as the fallback if resources - aren't found in the local satellite assembly. - - - A that represents the - assembly to register. - - - The following example shows how to register a shared satellite - assembly. - - - - + + Registers the assembly to be used as the fallback if resources + aren't found in the local satellite assembly. + + + A that represents the + assembly to register. + + + The following example shows how to register a shared satellite + assembly. + + + + - - Returns the value of the specified string resource. - - - A that contains the name of the - resource to get. - - - A that contains the value of the - resource localized for the current culture. - - - The returned resource is localized for the cultural settings of the - current . - - The GetString method is thread-safe. - - - - The following example demonstrates the GetString method using - the cultural settings of the current . - - - - + + Returns the value of the specified string resource. + + + A that contains the name of the + resource to get. + + + A that contains the value of the + resource localized for the current culture. + + + The returned resource is localized for the cultural settings of the + current . + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + the cultural settings of the current . + + + + - - Returns the value of the specified string resource localized for - the specified culture. - - - - - A that contains the value of the - resource localized for the specified culture. - - - - The GetString method is thread-safe. - - - - The following example demonstrates the GetString method using - a specific culture. - - - - + + Returns the value of the specified string resource localized for + the specified culture. + + + + + A that contains the value of the + resource localized for the specified culture. + + + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + a specific culture. + + + + - - Returns the value of the specified string resource localized for - the specified culture for the specified assembly. - - - A that contains the name of the - resource to get. - - - A that represents - the culture for which the resource is localized. - - - A - - - A that contains the value of the - resource localized for the specified culture. - - - - The GetString method is thread-safe. - - - - The following example demonstrates the GetString method using - specific culture and assembly. - - - - + + Returns the value of the specified string resource localized for + the specified culture for the specified assembly. + + + A that contains the name of the + resource to get. + + + A that represents + the culture for which the resource is localized. + + + A + + + A that contains the value of the + resource localized for the specified culture. + + + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + specific culture and assembly. + + + + - - Registers the specified assembly. - - - A that represents the - assembly to register. - + + Registers the specified assembly. + + + A that represents the + assembly to register. + - - Determines the manifest resource name of the resource holding the - localized strings. - - The name of the assembly. - - The manifest resource name of the resource holding the localized - strings for the specified assembly. - - - The manifest resource name of the resource holding the localized - strings should match the name of the assembly, minus Tasks - suffix. - + + Determines the manifest resource name of the resource holding the + localized strings. + + The name of the assembly. + + The manifest resource name of the resource holding the localized + strings for the specified assembly. + + + The manifest resource name of the resource holding the localized + strings should match the name of the assembly, minus Tasks + suffix. + @@ -12244,24 +13248,24 @@ - - Converts an empty string ("") to . - - The value to convert. - - if is an empty - string ("") or ; otherwise, . - + + Converts an empty string ("") to . + + The value to convert. + + if is an empty + string ("") or ; otherwise, . + - - Converts to an empty string. - - The value to convert. - - An empty string if is ; - otherwise, . - + + Converts to an empty string. + + The value to convert. + + An empty string if is ; + otherwise, . + @@ -12298,14 +13302,14 @@ - - Thrown whenever an error occurs during the build. - + + Thrown whenever an error occurs during the build. + - - The location of the exception in the build document (xml file). - + + The location of the exception in the build document (xml file). + @@ -12362,155 +13366,164 @@ The destination for this serialization. - - Creates and returns a string representation of the current - exception. - - - A string representation of the current exception. - + + Creates and returns a string representation of the current + exception. + + + A string representation of the current exception. + - - Gets the raw message as specified when the exception was - constructed. - - - The raw message as specified when the exception was - constructed. - + + Gets the raw message as specified when the exception was + constructed. + + + The raw message as specified when the exception was + constructed. + - - Gets the location in the build file of the element from which the - exception originated. - - - The location in the build file of the element from which the - exception originated. - + + Gets the location in the build file of the element from which the + exception originated. + + + The location in the build file of the element from which the + exception originated. + - - Gets a message that describes the current exception. - - - The error message that explains the reason for the exception. - - - Adds location information to the message, if available. - + + Gets a message that describes the current exception. + + + The error message that explains the reason for the exception. + + + Adds location information to the message, if available. + - - Represents the set of command-line options supported by NAnt. - + + Represents the set of command-line options supported by NAnt. + - - Gets or sets the target framework to use (overrides - NAnt.exe.config settings) - - - The framework that should be used. - - - For a list of possible frameworks, see NAnt.exe.config, possible - values include "net-1.0", "net-1.1", etc. - + + Gets or sets the target framework to use (overrides + NAnt.exe.config settings) + + + The framework that should be used. + + + For a list of possible frameworks, see NAnt.exe.config, possible + values include "net-1.0", "net-1.1", etc. + - - Gets or sets the target framework to use (overrides - NAnt.exe.config settings) - - - The framework that should be used. - - - For a list of possible frameworks, see NAnt.exe.config, possible - values include "net-1.0", "net-1.1", etc. - + + Gets or sets the target framework to use (overrides + NAnt.exe.config settings) + + + The framework that should be used. + + + For a list of possible frameworks, see NAnt.exe.config, possible + values include "net-1.0", "net-1.1", etc. + - - Gets or sets the buildfile that should be executed. - - - The buildfile that should be executed. - - - Can be both a file or an URI. - + + Gets or sets the buildfile that should be executed. + + + The buildfile that should be executed. + + + Can be both a file or an URI. + + + + + Pauses before program ends. + + + for pausing on program end; + otherwise, . The default is . + - - Gets or sets a value indicating whether more information should be - displayed during the build process. - - - if more information should be displayed; - otherwise, . The default is . - + + Gets or sets a value indicating whether more information should be + displayed during the build process. + + + if more information should be displayed; + otherwise, . The default is . + - - Gets or sets a value indicating whether debug information should be - displayed during the build process. - - - if debug information should be displayed; - otherwise, . The default is . - + + Gets or sets a value indicating whether debug information should be + displayed during the build process. + + + if debug information should be displayed; + otherwise, . The default is . + - - Gets or sets a value indicating whether only error and debug debug messages should be - displayed during the build process. - - - if only error or warning messages should be - displayed; otherwise, . The default is - . - + + Gets or sets a value indicating whether only error and debug debug messages should be + displayed during the build process. + + + if only error or warning messages should be + displayed; otherwise, . The default is + . + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - if output is to be unadorned so that emacs - and other editors can parse files names, etc. The default is - . - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + - - Gets a value indicating whether parent directories should be searched - for a buildfile. - - - if parent directories should be searched for - a build file; otherwise, . The default is - . - + + Gets a value indicating whether parent directories should be searched + for a buildfile. + + + if parent directories should be searched for + a build file; otherwise, . The default is + . + - - Gets or sets the indentation level of the build output. - - - The indentation level of the build output. The default is 0. - + + Gets or sets the indentation level of the build output. + + + The indentation level of the build output. The default is 0. + - - Gets or sets the list of properties that should be set. - - - The list of properties that should be set. - + + Gets or sets the list of properties that should be set. + + + The list of properties that should be set. + @@ -12526,12 +13539,12 @@ - - Gets or sets the name of the file to log output to. - - - The name of the file to log output to. - + + Gets or sets the name of the file to log output to. + + + The name of the file to log output to. + @@ -12545,12 +13558,12 @@ - - Gets a collection of assemblies to load extensions from. - - - A collection of assemblies to load extensions from. - + + Gets a collection of assemblies to load extensions from. + + + A collection of assemblies to load extensions from. + @@ -12564,75 +13577,75 @@ - - Gets or sets a value indicating whether the logo banner should be - printed. - - - if the logo banner should be printed; otherwise, - . The default is . - + + Gets or sets a value indicating whether the logo banner should be + printed. + + + if the logo banner should be printed; otherwise, + . The default is . + - - Gets or sets a value indicating whether the NAnt help should be - printed. - - - if NAnt help should be printed; otherwise, - . The default is . - + + Gets or sets a value indicating whether the NAnt help should be + printed. + + + if NAnt help should be printed; otherwise, + . The default is . + - - Gets a collection containing the targets that should be executed. - - - A collection that contains the targets that should be executed. - + + Gets a collection containing the targets that should be executed. + + + A collection that contains the targets that should be executed. + - - Custom configuration section handler for the element. - + + Custom configuration section handler for the element. + - - This just passed things through. Return the node read from the config file. - + + This just passed things through. Return the node read from the config file. + - - Main entry point to NAnt that is called by the ConsoleStub. - + + Main entry point to NAnt that is called by the ConsoleStub. + - - Starts NAnt. This is the Main entry point. - - Command Line args, or whatever you want to pass it. They will treated as Command Line args. - - The exit code. - + + Starts NAnt. This is the Main entry point. + + Command Line args, or whatever you want to pass it. They will treated as Command Line args. + + The exit code. + - - Prints the projecthelp to the console. - - The build file to show help for. - - is loaded and transformed with - ProjectHelp.xslt, which is an embedded resource. - + + Prints the projecthelp to the console. + + The build file to show help for. + + is loaded and transformed with + ProjectHelp.xslt, which is an embedded resource. + - - Gets the file name for the build file in the specified directory. - - The directory to look for a build file. When in doubt use Environment.CurrentDirectory for directory. - Look for a build file with this pattern or name. If null look for a file that matches the default build pattern (*.build). - Whether or not to search the parent directories for a build file. - The path to the build file or null if no build file could be found. + + Gets the file name for the build file in the specified directory. + + The directory to look for a build file. When in doubt use Environment.CurrentDirectory for directory. + Look for a build file with this pattern or name. If null look for a file that matches the default build pattern (*.build). + Whether or not to search the parent directories for a build file. + The path to the build file or null if no build file could be found. @@ -12681,9 +13694,9 @@ The to add listeners to. - - Spits out generic help info to the console. - + + Spits out generic help info to the console. + @@ -12798,11 +13811,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -12835,10 +13848,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -12859,28 +13872,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -12894,45 +13907,50 @@ - - Inherits Properties from an existing property - dictionary Instance - - DataType list to inherit + + Inherits Properties from an existing property + dictionary Instance + + DataType list to inherit - - Used for searching filesystem based on given include/exclude rules. - - - Simple client code for testing the class. - - while (true) { - DirectoryScanner scanner = new DirectoryScanner(); - Console.Write("Scan Basedirectory : "); - string s = Console.ReadLine(); - if (s.Length == 0) break; - scanner.BaseDirectory = s; - while(true) { - Console.Write("Include pattern : "); - s = Console.ReadLine(); - if (s.Length == 0) break; - scanner.Includes.Add(s); - } - while(true) { - Console.Write("Exclude pattern : "); - s = Console.ReadLine(); - if (s.Length == 0) break; - scanner.Excludes.Add(s); - } - foreach (string name in scanner.FileNames) - Console.WriteLine("file:" + name); - foreach (string name in scanner.DirectoryNames) - Console.WriteLine("dir :" + name); - Console.WriteLine(""); - } - - + + Used for searching filesystem based on given include/exclude rules. + + + Simple client code for testing the class. + + while (true) { + DirectoryScanner scanner = new DirectoryScanner(); + + Console.Write("Scan Basedirectory : "); + string s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.BaseDirectory = s; + + while(true) { + Console.Write("Include pattern : "); + s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.Includes.Add(s); + } + + while(true) { + Console.Write("Exclude pattern : "); + s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.Excludes.Add(s); + } + + foreach (string name in scanner.FileNames) + Console.WriteLine("file:" + name); + foreach (string name in scanner.DirectoryNames) + Console.WriteLine("dir :" + name); + + Console.WriteLine(""); + } + + @@ -12965,57 +13983,57 @@ - - Parses specified NAnt search patterns for search directories and - corresponding regex patterns. - - In. NAnt patterns. Absolute or relative paths. - Out. Regex patterns. Absolute canonical paths. - Out. Non-regex files. Absolute canonical paths. - In. Whether to allow a pattern to add search directories. + + Parses specified NAnt search patterns for search directories and + corresponding regex patterns. + + In. NAnt patterns. Absolute or relative paths. + Out. Regex patterns. Absolute canonical paths. + Out. Non-regex files. Absolute canonical paths. + In. Whether to allow a pattern to add search directories. - - Given a NAnt search pattern returns a search directory and an regex - search pattern. - - Whether this pattern is an include or exclude pattern - NAnt searh pattern (relative to the Basedirectory OR absolute, relative paths refering to parent directories ( ../ ) also supported) - Out. Absolute canonical path to the directory to be searched - Out. Whether the pattern is potentially recursive or not - Out. Whether this is a regex pattern or not - Out. Regex search pattern (absolute canonical path) + + Given a NAnt search pattern returns a search directory and an regex + search pattern. + + Whether this pattern is an include or exclude pattern + NAnt searh pattern (relative to the Basedirectory OR absolute, relative paths refering to parent directories ( ../ ) also supported) + Out. Absolute canonical path to the directory to be searched + Out. Whether the pattern is potentially recursive or not + Out. Whether this is a regex pattern or not + Out. Regex search pattern (absolute canonical path) - - Searches a directory recursively for files and directories matching - the search criteria. - - Directory in which to search (absolute canonical path) - Whether to scan recursively or not + + Searches a directory recursively for files and directories matching + the search criteria. + + Directory in which to search (absolute canonical path) + Whether to scan recursively or not - - Converts search pattern to a regular expression pattern. - - Search pattern relative to the search directory. - Regular expresssion + + Converts search pattern to a regular expression pattern. + + Search pattern relative to the search directory. + Regular expresssion - - Gets or set a value indicating whether or not to use case-sensitive - pattern matching. - + + Gets or set a value indicating whether or not to use case-sensitive + pattern matching. + - - Gets the collection of include patterns. - + + Gets the collection of include patterns. + - - Gets the collection of exclude patterns. - + + Gets the collection of exclude patterns. + @@ -13024,19 +14042,25 @@ - - Gets the list of files that match the given patterns. - + + Gets the list of files that match the given patterns. + - - Gets the list of directories that match the given patterns. - + + Gets the list of directories that match the given patterns. + - - Gets the list of directories that were scanned for files. - + + Gets the list of directories that were scanned for files. + + + + + Indicates whether or not the directory scanner included everything + that it scanned. + @@ -13047,12 +14071,12 @@ - - Creates a string representing a list of the strings in the collection. - - - A string that represents the contents. - + + Creates a string representing a list of the strings in the collection. + + + A string that represents the contents. + @@ -13102,53 +14126,53 @@ - - Gets a value indicating whether string comparison is case-sensitive. - - - A value indicating whether string comparison is case-sensitive. - + + Gets a value indicating whether string comparison is case-sensitive. + + + A value indicating whether string comparison is case-sensitive. + - - Gets the value of the specified property. - - The name of the property to get the value of. - - The value of the specified property. - + + Gets the value of the specified property. + + The name of the property to get the value of. + + The value of the specified property. + - - Splits an input string into a sequence of tokens used during parsing. - + + Splits an input string into a sequence of tokens used during parsing. + - - Available tokens - + + Available tokens + - - Encalsulates information about installed frameworks incuding version - information and directory locations for finding tools. - + + Encalsulates information about installed frameworks incuding version + information and directory locations for finding tools. + - - Resolves the specified assembly to a full path by matching it - against the reference assemblies. - - The file name of the assembly to resolve (without path information). - - An absolute path to the assembly, or if the - assembly could not be found or no reference assemblies are configured - for the current framework. - - - Whether the file name is matched case-sensitively depends on the - operating system. - + + Resolves the specified assembly to a full path by matching it + against the reference assemblies. + + The file name of the assembly to resolve (without path information). + + An absolute path to the assembly, or if the + assembly could not be found or no reference assemblies are configured + for the current framework. + + + Whether the file name is matched case-sensitively depends on the + operating system. + @@ -13172,47 +14196,47 @@ - - Gets the value of the specified attribute from the specified node. - - The node of which the attribute value should be retrieved. - The attribute of which the value should be returned. - - The value of the attribute with the specified name or - if the attribute does not exist or has no value. - + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + - - Gets the name of the framework. - - - The name of the framework. - + + Gets the name of the framework. + + + The name of the framework. + - - Gets the family of the framework. - - - The family of the framework. - + + Gets the family of the framework. + + + The family of the framework. + - - Gets the description of the framework. - - - The description of the framework. - + + Gets the description of the framework. + + + The description of the framework. + - - Gets the vendor of the framework. - - - The vendor of the framework. - + + Gets the vendor of the framework. + + + The vendor of the framework. + @@ -13322,13 +14346,13 @@ The framework is not valid. - - Returns a value indicating whether the current framework is valid. - - - if the framework is installed and correctly - configured; otherwise, . - + + Returns a value indicating whether the current framework is valid. + + + if the framework is installed and correctly + configured; otherwise, . + @@ -13372,134 +14396,134 @@ - - Defines the types of frameworks. - + + Defines the types of frameworks. + - - Frameworks that are supported on the current platform, but are not - installed. - + + Frameworks that are supported on the current platform, but are not + installed. + - - Frameworks that are installed on the current system. - + + Frameworks that are installed on the current system. + - - Retrieves installation state attributes. - + + Retrieves installation state attributes. + - - Frameworks that typically target full desktop devices. - + + Frameworks that typically target full desktop devices. + - - Frameworks that target compact devices. - + + Frameworks that target compact devices. + - - Frameworks that run in a browser. - + + Frameworks that run in a browser. + - - Retrieves device attributes. - + + Retrieves device attributes. + - - Frameworks released as part of the open-source Mono - project. - + + Frameworks released as part of the open-source Mono + project. + - - Frameworks released by Microsoft. - + + Frameworks released by Microsoft. + - - Retrieves vendor attributes. - + + Retrieves vendor attributes. + - - All frameworks supported on the current platform, regarless of their - installation state, target device or vendor. - + + All frameworks supported on the current platform, regarless of their + installation state, target device or vendor. + - - Stores the file name, line number and column number to record a position - in a text file. - + + Stores the file name, line number and column number to record a position + in a text file. + - - Creates a location consisting of a file name, line number and - column number. - - - can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. - + + Creates a location consisting of a file name, line number and + column number. + + + can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. + - - Creates a location consisting of a file name. - - - can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. - + + Creates a location consisting of a file name. + + + can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. + - - Creates an "unknown" location. - + + Creates an "unknown" location. + - Private Init function. + Private Init function. - - Returns the file name, line number and a trailing space. An error - message can be appended easily. For unknown locations, returns - an empty string. - + + Returns the file name, line number and a trailing space. An error + message can be appended easily. For unknown locations, returns + an empty string. + - - Gets a string containing the file name for the location. - - - The file name includes both the file path and the extension. - + + Gets a string containing the file name for the location. + + + The file name includes both the file path and the extension. + - - Gets the line number for the location. - - - Lines start at 1. Will be zero if not specified. - + + Gets the line number for the location. + + + Lines start at 1. Will be zero if not specified. + - - Gets the column number for the location. - - - Columns start a 1. Will be zero if not specified. - + + Gets the column number for the location. + + + Columns start a 1. Will be zero if not specified. + - - Maps XML nodes to the text positions from their original source. - + + Maps XML nodes to the text positions from their original source. + @@ -13507,14 +14531,14 @@ - - Determines if a file has been loaded by the current project. - - The file to check. - - if the specified file has already been loaded - by the current project; otherwise, . - + + Determines if a file has been loaded by the current project. + + The file to check. + + if the specified file has already been loaded + by the current project; otherwise, . + @@ -13534,9 +14558,9 @@ - - Represents a position in the build file. - + + Represents a position in the build file. + @@ -13547,47 +14571,47 @@ The column coordinate of the position. - - The line coordinate of the position. - + + The line coordinate of the position. + - - The column coordinate of the position. - + + The column coordinate of the position. + - - Defines the set of levels recognised by the NAnt logging system. - + + Defines the set of levels recognised by the NAnt logging system. + - - Designates fine-grained informational events that are most useful - to debug a build process. - + + Designates fine-grained informational events that are most useful + to debug a build process. + - - Designates events that offer a more detailed view of the build - process. - + + Designates events that offer a more detailed view of the build + process. + - - Designates informational events that are useful for getting a - high-level view of the build process. - + + Designates informational events that are useful for getting a + high-level view of the build process. + - - Designates potentionally harmful events. - + + Designates potentionally harmful events. + - - Designates error events. - + + Designates error events. + @@ -13671,20 +14695,20 @@ The that emitted the event. - - Gets or sets the message associated with this event. - - - The message associated with this event. - + + Gets or sets the message associated with this event. + + + The message associated with this event. + - - Gets or sets the priority level associated with this event. - - - The priority level associated with this event. - + + Gets or sets the priority level associated with this event. + + + The priority level associated with this event. + @@ -13729,10 +14753,10 @@ A that contains the event data. - - Instances of classes that implement this interface can register to be - notified when things happen during a build. - + + Instances of classes that implement this interface can register to be + notified when things happen during a build. + @@ -13806,30 +14830,30 @@ - - Flushes buffered build events or messages to the underlying storage. - + + Flushes buffered build events or messages to the underlying storage. + - - Gets or sets the highest level of message this logger should respond - to. - - The highest level of message this logger should respond to. - - Only messages with a message level higher than or equal to the given - level should actually be written to the log. - + + Gets or sets the highest level of message this logger should respond + to. + + The highest level of message this logger should respond to. + + Only messages with a message level higher than or equal to the given + level should actually be written to the log. + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - if output is to be unadorned so that emacs - and other editors can parse files names, etc. - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. + @@ -13844,9 +14868,9 @@ - - Flushes buffered build events or messages to the underlying storage. - + + Flushes buffered build events or messages to the underlying storage. + @@ -13914,11 +14938,11 @@ - - Empty implementation which allows derived classes to receive the - output that is generated in this logger. - - The message being logged. + + Empty implementation which allows derived classes to receive the + output that is generated in this logger. + + The message being logged. @@ -13948,33 +14972,33 @@ The number of characters that the message should be indented. - - Holds a stack of reports for all running builds. - + + Holds a stack of reports for all running builds. + - - Gets or sets the highest level of message this logger should respond - to. - - - The highest level of message this logger should respond to. - - - Only messages with a message level higher than or equal to the given - level should be written to the log. - + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - if output is to be unadorned so that emacs - and other editors can parse files names, etc. The default is - . - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + @@ -13986,100 +15010,100 @@ - - Used to store information about a build, to allow better reporting to - the user. - + + Used to store information about a build, to allow better reporting to + the user. + - - Errors encountered so far. - + + Errors encountered so far. + - - Warnings encountered so far. - + + Warnings encountered so far. + - - The start time of the build process. - + + The start time of the build process. + - - Buffers log messages from DefaultLogger, and sends an e-mail with the - results. - - - The following properties are used to send the mail : - - - Property - Description - - - MailLogger.mailhost - Mail server to use. [default: localhost] - - - MailLogger.from - The address of the e-mail sender. - - - MailLogger.failure.notify - Send build failure e-mails ? [default: true] - - - MailLogger.success.notify - Send build success e-mails ? [default: true] - - - MailLogger.failure.to - The address to send build failure messages to. - - - MailLogger.success.to - The address to send build success messages to. - - - MailLogger.failure.subject - The subject of build failure messages. [default: "Build Failure"] - - - MailLogger.success.subject - The subject of build success messages. [default: "Build Success"] - - - MailLogger.success.attachments - The ID of a fileset holdng set of files to attach when the build is successful. - - - MailLogger.failure.attachments - The ID of a fileset holdng set of files to attach when the build fails. - - - MailLogger.body.encoding - The encoding type of the body of the e-mail message. [default: system's ANSI code page] - - - MailLogger.smtp.username - The name of the user to login to the SMTP server. - - - MailLogger.smtp.password - The password of the specified user. - - - MailLogger.smtp.enablessl - Specifies whether to use SSL to encrypt the connection. [default: false] - - - MailLogger.smtp.port - The SMTP server port to connect to. [default: 25] - - - + + Buffers log messages from DefaultLogger, and sends an e-mail with the + results. + + + The following properties are used to send the mail : + + + Property + Description + + + MailLogger.mailhost + Mail server to use. [default: localhost] + + + MailLogger.from + The address of the e-mail sender. + + + MailLogger.failure.notify + Send build failure e-mails ? [default: true] + + + MailLogger.success.notify + Send build success e-mails ? [default: true] + + + MailLogger.failure.to + The address to send build failure messages to. + + + MailLogger.success.to + The address to send build success messages to. + + + MailLogger.failure.subject + The subject of build failure messages. [default: "Build Failure"] + + + MailLogger.success.subject + The subject of build success messages. [default: "Build Success"] + + + MailLogger.success.attachments + The ID of a fileset holdng set of files to attach when the build is successful. + + + MailLogger.failure.attachments + The ID of a fileset holdng set of files to attach when the build fails. + + + MailLogger.body.encoding + The encoding type of the body of the e-mail message. [default: system's ANSI code page] + + + MailLogger.smtp.username + The name of the user to login to the SMTP server. + + + MailLogger.smtp.password + The password of the specified user. + + + MailLogger.smtp.enablessl + Specifies whether to use SSL to encrypt the connection. [default: false] + + + MailLogger.smtp.port + The SMTP server port to connect to. [default: 25] + + + @@ -14106,10 +15130,10 @@ A object that contains the event data. - - Receives and buffers log messages. - - The message being logged. + + Receives and buffers log messages. + + The message being logged. @@ -14126,14 +15150,14 @@ is , and the specified property is not present and no default value has been given. - - Buffer in which the message is constructed prior to sending. - + + Buffer in which the message is constructed prior to sending. + - - Holds the stack of currently executing projects. - + + Holds the stack of currently executing projects. + @@ -14189,11 +15213,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -14226,10 +15250,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -14244,28 +15268,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -14284,46 +15308,46 @@ An object that controls formatting. - - Writes a character array to the buffer. - - The character array to write to the text stream. + + Writes a character array to the buffer. + + The character array to write to the text stream. - - Writes a string to the buffer. - - + + Writes a string to the buffer. + + - - Writes an empty string to the logging infrastructure. - + + Writes an empty string to the logging infrastructure. + - - Writes a string to the logging infrastructure. - - The string to write. If is a null reference, only the line termination characters are written. + + Writes a string to the logging infrastructure. + + The string to write. If is a null reference, only the line termination characters are written. - - Writes out a formatted string using the same semantics as - . - - The formatting string. - The object array to write into format string. + + Writes out a formatted string using the same semantics as + . + + The formatting string. + The object array to write into format string. - - Causes any buffered data to be written to the logging infrastructure. - + + Causes any buffered data to be written to the logging infrastructure. + - - Closes the current writer and releases any system resources - associated with the writer. - + + Closes the current writer and releases any system resources + associated with the writer. + @@ -14353,19 +15377,19 @@ - - Used to search for files on the PATH. - - - - The local directory is not searched (since this would already be covered - by normal use of the includes element). - - - Also, advanced pattern matching isn't supported: you need to know the - exact name of the file. - - + + Used to search for files on the PATH. + + + + The local directory is not searched (since this would already be covered + by normal use of the includes element). + + + Also, advanced pattern matching isn't supported: you need to know the + exact name of the file. + + @@ -14384,28 +15408,28 @@ - - Adds a file to the list of files to be scanned for. - - The filename or search pattern to add to the list. + + Adds a file to the list of files to be scanned for. + + The filename or search pattern to add to the list. - - Scans all direcetories in the PATH environment variable for files. - - - List of matching files found in the PATH. - + + Scans all direcetories in the PATH environment variable for files. + + + List of matching files found in the PATH. + - - Scans all directories in the given environment variable for files. - - The environment variable of which the directories should be scanned. - - List of matching files found in the directory of the given - environment variable. - + + Scans all directories in the given environment variable for files. + + The environment variable of which the directories should be scanned. + + List of matching files found in the directory of the given + environment variable. + @@ -14417,35 +15441,35 @@ - - Returns a value indicating whether NAnt is running in 64-bit mode. - - - if NAnt is running in 64-bit mode; otherwise, - . - + + Returns a value indicating whether NAnt is running in 64-bit mode. + + + if NAnt is running in 64-bit mode; otherwise, + . + - - Returns a value indicating whether NAnt is running in 32-bit mode. - - - Note that even if the platform is 64-bit, NAnt may be running in - 32-bit mode. - - - if NAnt is running in 32-bit mode; otherwise, - . - + + Returns a value indicating whether NAnt is running in 32-bit mode. + + + Note that even if the platform is 64-bit, NAnt may be running in + 32-bit mode. + + + if NAnt is running in 32-bit mode; otherwise, + . + - - Returns a value indicating whether NAnt is running on Windows. - - - if NAnt is running on Windows; - otherwise, . - + + Returns a value indicating whether NAnt is running on Windows. + + + if NAnt is running on Windows; + otherwise, . + @@ -14477,26 +15501,26 @@ - - Constant for the "visiting" state, used when traversing a DFS of - target dependencies. - + + Constant for the "visiting" state, used when traversing a DFS of + target dependencies. + - - Constant for the "visited" state, used when traversing a DFS of - target dependencies. - + + Constant for the "visited" state, used when traversing a DFS of + target dependencies. + - - Holds the logger for this class. - + + Holds the logger for this class. + - - Holds the default threshold for build loggers. - + + Holds the default threshold for build loggers. + @@ -14644,7 +15668,7 @@ - Dispatches a event to the build listeners + Dispatches a event to the build listeners for this . The source of the event. @@ -14652,7 +15676,7 @@ - Dispatches a event to the build listeners + Dispatches a event to the build listeners for this . The source of the event. @@ -14660,7 +15684,7 @@ - Dispatches a event to the build listeners + Dispatches a event to the build listeners for this . The source of the event. @@ -14668,7 +15692,7 @@ - Dispatches a event to the build listeners + Dispatches a event to the build listeners for this . The source of the event. @@ -14676,7 +15700,7 @@ - Dispatches a event to the build listeners + Dispatches a event to the build listeners for this . The source of the event. @@ -14684,7 +15708,7 @@ - Dispatches the event to the build listeners + Dispatches the event to the build listeners for this . The source of the event. @@ -14692,7 +15716,7 @@ - Dispatches a event to the build listeners + Dispatches a event to the build listeners for this . A that contains the event data. @@ -14742,33 +15766,33 @@ - - Executes a specific target, and its dependencies. - - The name of the target to execute. - - Global tasks are not executed. - + + Executes a specific target, and its dependencies. + + The name of the target to execute. + + Global tasks are not executed. + - - Executes a specific target. - - The name of the target to execute. - Whether dependencies should be forced to execute - - Global tasks are not executed. - + + Executes a specific target. + + The name of the target to execute. + Whether dependencies should be forced to execute + + Global tasks are not executed. + - - Executes the default target and wraps in error handling and time - stamping. - - - if the build was successful; otherwise, - . - + + Executes the default target and wraps in error handling and time + stamping. + + + if the build was successful; otherwise, + . + @@ -14971,20 +15995,20 @@ - - Gets or sets the indentation size of the build output. - - - The indendation size of the build output. - + + Gets or sets the indentation size of the build output. + + + The indendation size of the build output. + - - Gets or sets the default threshold level for build loggers. - - - The default threshold level for build loggers. - + + Gets or sets the default threshold level for build loggers. + + + The default threshold level for build loggers. + @@ -15031,20 +16055,20 @@ - - Gets a collection of available .NET frameworks. - - - A collection of available .NET frameworks. - + + Gets a collection of available .NET frameworks. + + + A collection of available .NET frameworks. + - - Gets the framework in which NAnt is currently running. - - - The framework in which NAnt is currently running. - + + Gets the framework in which NAnt is currently running. + + + The framework in which NAnt is currently running. + @@ -15083,22 +16107,22 @@ NAnt does not support the current platform. - - Gets the current target. - - - The current target, or if no target is - executing. - + + Gets the current target. + + + The current target, or if no target is + executing. + - - Gets the path to the build file. - - - The path to the build file, or if the build - document is not file backed. - + + Gets the path to the build file. + + + The path to the build file, or if the build + document is not file backed. + @@ -15119,70 +16143,70 @@ - - Gets the name of the target that will be executed when no other - build targets are specified. - - - The name of the target that will be executed when no other - build targets are specified, or if no - default target is specified in the build file. - + + Gets the name of the target that will be executed when no other + build targets are specified. + + + The name of the target that will be executed when no other + build targets are specified, or if no + default target is specified in the build file. + - - Gets a value indicating whether tasks should output more build log - messages. - - - if tasks should output more build log message; - otherwise, . - + + Gets a value indicating whether tasks should output more build log + messages. + + + if tasks should output more build log message; + otherwise, . + - - The list of targets to build. - - - Targets are built in the order they appear in the collection. If - the collection is empty the default target will be built. - + + The list of targets to build. + + + Targets are built in the order they appear in the collection. If + the collection is empty the default target will be built. + - - Gets the properties defined in this project. - - The properties defined in this project. - - - This is the collection of properties that are defined by the system - and property task statements. - - - These properties can be used in expansion. - - + + Gets the properties defined in this project. + + The properties defined in this project. + + + This is the collection of properties that are defined by the system + and property task statements. + + + These properties can be used in expansion. + + - - Gets the framework-neutral properties defined in the NAnt - configuration file. - - - The framework-neutral properties defined in the NAnt configuration - file. - - - - This is the collection of read-only properties that are defined in - the NAnt configuration file. - - - These properties can only be used for expansion in framework-specific - and framework-neutral configuration settings. These properties are - not available for expansion in the build file. - - + + Gets the framework-neutral properties defined in the NAnt + configuration file. + + + The framework-neutral properties defined in the NAnt configuration + file. + + + + This is the collection of read-only properties that are defined in + the NAnt configuration file. + + + These properties can only be used for expansion in framework-specific + and framework-neutral configuration settings. These properties are + not available for expansion in the build file. + + @@ -15199,51 +16223,51 @@ - - Gets the targets defined in this project. - - - The targets defined in this project. - + + Gets the targets defined in this project. + + + The targets defined in this project. + - - Gets the build listeners for this project. - - - The build listeners for this project. - + + Gets the build listeners for this project. + + + The build listeners for this project. + - - Allow the project construction to be optimized. - - - Use this with care! - + + Allow the project construction to be optimized. + + + Use this with care! + - - Do not perform any optimizations. - + + Do not perform any optimizations. + - - The project base directory must not be automatically scanned - for extension assemblies. - + + The project base directory must not be automatically scanned + for extension assemblies. + - - Do not scan the project configuration for frameworks, and - do not configure the runtime and target framework. - + + Do not scan the project configuration for frameworks, and + do not configure the runtime and target framework. + - - Holds a value indicating whether a scan for tasks, types and functions - has already been performed for the current runtime framework. - + + Holds a value indicating whether a scan for tasks, types and functions + has already been performed for the current runtime framework. + @@ -15272,15 +16296,15 @@ An representing global properties. - - Gets the value of the specified attribute from the specified node. - - The node of which the attribute value should be retrieved. - The attribute of which the value should be returned. - - The value of the attribute with the specified name or - if the attribute does not exist or has no value. - + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + @@ -15303,16 +16327,16 @@ - - Constant for the "visiting" state, used when traversing a DFS of - property references. - + + Constant for the "visiting" state, used when traversing a DFS of + property references. + - - Constant for the "visited" state, used when travesing a DFS of - property references. - + + Constant for the "visited" state, used when travesing a DFS of + property references. + @@ -15339,12 +16363,12 @@ The value of the element to remove. - - Performs additional custom processes when validating the element - with the specified key and value. - - The key of the element to validate. - The value of the element to validate. + + Performs additional custom processes when validating the element + with the specified key and value. + + The key of the element to validate. + The value of the element to validate. @@ -15358,45 +16382,45 @@ - - Marks a property as a property of which the value is expanded at - execution time. - - The name of the property to mark as dynamic. + + Marks a property as a property of which the value is expanded at + execution time. + + The name of the property to mark as dynamic. - - Adds a property to the collection. - - The name of the property. - The value to assign to the property. + + Adds a property to the collection. + + The name of the property. + The value to assign to the property. - - Determines whether the specified property is listed as read-only. - - The name of the property to check. - - if the property is listed as read-only; - otherwise, . - + + Determines whether the specified property is listed as read-only. + + The name of the property to check. + + if the property is listed as read-only; + otherwise, . + - - Determines whether the specified property is listed as dynamic. - - The name of the property to check. - - if the property is listed as dynamic; - otherwise, . - + + Determines whether the specified property is listed as dynamic. + + The name of the property to check. + + if the property is listed as dynamic; + otherwise, . + - - Inherits properties from an existing property dictionary Instance. - - Property list to inherit. - The list of properties to exclude during inheritance. + + Inherits properties from an existing property dictionary Instance. + + Property list to inherit. + The list of properties to exclude during inheritance. @@ -15407,20 +16431,20 @@ The expanded and replaced string. - - Determines whether a property already exists. - - The name of the property to check. - - if the specified property already exists; - otherwise, . - + + Determines whether a property already exists. + + The name of the property to check. + + if the specified property already exists; + otherwise, . + - - Removes the property with the specified name. - - The name of the property to remove. + + Removes the property with the specified name. + + The name of the property to remove. @@ -15433,20 +16457,20 @@ The expanded and replaced string. - - Evaluates the given expression string and returns the result - - - - - - + + Evaluates the given expression string and returns the result + + + + + + - - Checks whether the specified property is deprecated. - - The property to check. + + Checks whether the specified property is deprecated. + + The property to check. @@ -15461,33 +16485,33 @@ - - Maintains a list of the property names that are readonly. - + + Maintains a list of the property names that are readonly. + - - Maintains a list of the property names of which the value is expanded - on usage, not at initalization. - + + Maintains a list of the property names of which the value is expanded + on usage, not at initalization. + - - The project for which the dictionary holds properties. - + + The project for which the dictionary holds properties. + - - Indexer property. - + + Indexer property. + - - Gets the project for which the dictionary holds properties. - - - The project for which the dictionary holds properties. - + + Gets the project for which the dictionary holds properties. + + + The project for which the dictionary holds properties. + @@ -15511,14 +16535,14 @@ - - Executes dependent targets first, then the target. - + + Executes dependent targets first, then the target. + - - This indicates whether the target has already executed. - + + This indicates whether the target has already executed. + @@ -15536,19 +16560,19 @@ - - If then the target will be executed; - otherwise, skipped. The default is . - + + If then the target will be executed; + otherwise, skipped. The default is . + - - Gets a value indicating whether the target should be executed. - - - if the target should be executed; otherwise, - . - + + Gets a value indicating whether the target should be executed. + + + if the target should be executed; otherwise, + . + @@ -15558,29 +16582,29 @@ - - Gets a value indicating whether the target should NOT be executed. - - - if the target should NOT be executed; - otherwise, . - + + Gets a value indicating whether the target should NOT be executed. + + + if the target should NOT be executed; + otherwise, . + - - The description of the target. - + + The description of the target. + - - Space separated list of targets that this target depends on. - + + Space separated list of targets that this target depends on. + - - A collection of target names that must be executed before this - target. - + + A collection of target names that must be executed before this + target. + @@ -15719,11 +16743,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -15756,10 +16780,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -15780,34 +16804,34 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Comprises all of the loaded, and available, tasks. - Use these static methods to register, initialize and create a task. - + + Comprises all of the loaded, and available, tasks. + Use these static methods to register, initialize and create a task. + @@ -15836,11 +16860,11 @@ indicating whether scanning of the directory should halt on first error. - - Adds any task assemblies in the project base directory - and its tasks subdirectory. - - The project to work from. + + Adds any task assemblies in the project base directory + and its tasks subdirectory. + + The project to work from. @@ -15995,14 +17019,14 @@ The that contains contextual information about the source or destination. - - Used to wrap log messages in xml <message/> elements. - + + Used to wrap log messages in xml <message/> elements. + - - Holds the stack of currently executing projects. - + + Holds the stack of currently executing projects. + @@ -16026,9 +17050,9 @@ The destination for this serialization. - - Returns the contents of log captured. - + + Returns the contents of log captured. + @@ -16096,31 +17120,31 @@ - - Flushes buffered build events or messages to the underlying storage. - + + Flushes buffered build events or messages to the underlying storage. + - - Gets or sets the highest level of message this logger should respond - to. - - - The highest level of message this logger should respond to. - - - Only messages with a message level higher than or equal to the given - level should be written to the log. - + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - as it has no meaning in XML format. - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + as it has no meaning in XML format. + diff --git a/Tools/nant/bin/NAnt.DotNetTasks.dll b/Tools/nant/bin/NAnt.DotNetTasks.dll index 00e39185e728084551c972b2e0c6e62c6f1b8402..7e2b702ef31417fa951ba47f8f4ab13fe8057e07 100755 GIT binary patch literal 135168 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 R5CcOD3^6do!2dH0{5N|X0aE|~ literal 131072 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 - - Generates an AssemblyInfo file. - + + Generates an AssemblyInfo file. +
@@ -79,66 +79,66 @@ - - Name of the AssemblyInfo file to generate. - - - The name of the AssemblyInfo file to generate. - + + Name of the AssemblyInfo file to generate. + + + The name of the AssemblyInfo file to generate. + - - The code language in which the AssemblyInfo file should be - generated. - + + The code language in which the AssemblyInfo file should be + generated. + - - The assembly-level attributes to generate. - - - The assembly-level attributes to generate. - + + The assembly-level attributes to generate. + + + The assembly-level attributes to generate. + - - The namespaces to import. - - - The namespaces to import. - + + The namespaces to import. + + + The namespaces to import. + - - Assembly files used to locate the types of the specified attributes. - + + Assembly files used to locate the types of the specified attributes. + - - Defines the supported code languages for generating an AssemblyInfo - file. - + + Defines the supported code languages for generating an AssemblyInfo + file. + - - A value for generating C# code. - + + A value for generating C# code. + - - A value for generating JScript code. - + + A value for generating JScript code. + - - A value for generating Visual Basic code. - + + A value for generating Visual Basic code. + - - Encapsulates functionality to generate a code file with imports - and assembly-level attributes. - + + Encapsulates functionality to generate a code file with imports + and assembly-level attributes. + @@ -215,67 +215,85 @@ A identified by could not be located or loaded. + + + Finds a given type from a given list of assemblies and import statements. + + + A list of assemblies to search for a given type. + + + A list of import statements to search for a given type. + + + The name of the type to locate. + + + The type object found from assemblies and import statements based + on the name of the type. + + - - Wraps al.exe, the assembly linker for the .NET Framework. - - - - All specified sources will be embedded using the /embed flag. - Other source types are not supported. - - - - - Create a library containing all icon files in the current directory. - - - - - - - - ]]> - - - - - Create an executable assembly manifest from modules. - - - - - - - - - ]]> - - + + Wraps al.exe, the assembly linker for the .NET Framework. + + + + All specified sources will be embedded using the /embed flag. + Other source types are not supported. + + + + + Create a library containing all icon files in the current directory. + + + + + + + + ]]> + + + + + Create an executable assembly manifest from modules. + + + + + + + + + ]]> + + - - Generates an assembly manifest. - + + Generates an assembly manifest. + - - Determines whether the assembly manifest needs compiling or is - uptodate. - - - if the assembly manifest needs compiling; - otherwise, . - + + Determines whether the assembly manifest needs compiling or is + uptodate. + + + if the assembly manifest needs compiling; + otherwise, . + - - Specifies an algorithm (in hexadecimal) to hash all files in a - multifile assembly except the file that contains the assembly - manifest. The default algorithm is CALG_SHA1. - + + Specifies an algorithm (in hexadecimal) to hash all files in a + multifile assembly except the file that contains the assembly + manifest. The default algorithm is CALG_SHA1. + @@ -314,21 +332,21 @@ - - The culture string associated with the output assembly. - The string must be in RFC 1766 format, such as "en-US". - - - - Corresponds with the /c[ulture]: flag. - - + + The culture string associated with the output assembly. + The string must be in RFC 1766 format, such as "en-US". + + + + Corresponds with the /c[ulture]: flag. + + - - Specifies whether the assembly should be partially signed. The default - is . - + + Specifies whether the assembly should be partially signed. The default + is . + @@ -343,199 +361,199 @@ - - Security evidence file to embed. - - - The security evidence file to embed. - - - - Corresponds with the /e[vidence] flag. - - + + Security evidence file to embed. + + + The security evidence file to embed. + + + + Corresponds with the /e[vidence] flag. + + - - Specifies a string for the File Version field in the assembly. - - - A string for the File Version field in the assembly. - + + Specifies a string for the File Version field in the assembly. + + + A string for the File Version field in the assembly. + - - Specifies a value (in hexadecimal) for the Flags field in - the assembly. - - - A value (in hexadecimal) for the Flags field in the assembly. - + + Specifies a value (in hexadecimal) for the Flags field in + the assembly. + + + A value (in hexadecimal) for the Flags field in the assembly. + - - Specifies a container that holds a key pair. - + + Specifies a container that holds a key pair. + - - Specifies a file (filename) that contains a key pair or - just a public key to sign an assembly. - - - The complete path to the key file. - - - - Corresponds with the /keyf[ile]: flag. - - + + Specifies a file (filename) that contains a key pair or + just a public key to sign an assembly. + + + The complete path to the key file. + + + + Corresponds with the /keyf[ile]: flag. + + - - Specifies the fully-qualified name (class.method) of the method to - use as an entry point when converting a module to an executable file. - - - The fully-qualified name (class.method) of the method to use as an - entry point when converting a module to an executable file. - + + Specifies the fully-qualified name (class.method) of the method to + use as an entry point when converting a module to an executable file. + + + The fully-qualified name (class.method) of the method to use as an + entry point when converting a module to an executable file. + - - One or more modules to be compiled into an assembly. - + + One or more modules to be compiled into an assembly. + - - The name of the output file for the assembly manifest. - - - The complete output path for the assembly manifest. - - - - Corresponds with the /out flag. - - + + The name of the output file for the assembly manifest. + + + The complete output path for the assembly manifest. + + + + Corresponds with the /out flag. + + - - The target type (one of lib, exe, or winexe). - - - - Corresponds with the /t[arget]: flag. - - + + The target type (one of lib, exe, or winexe). + + + + Corresponds with the /t[arget]: flag. + + - - Specifies a string for the Product field in the assembly. - - - A string for the Product field in the assembly. - + + Specifies a string for the Product field in the assembly. + + + A string for the Product field in the assembly. + - - Specifies a string for the Product Version field in the assembly. - - - A string for the Product Version field in the assembly. - + + Specifies a string for the Product Version field in the assembly. + + + A string for the Product Version field in the assembly. + - - The set of resources to embed. - + + The set of resources to embed. + - - The set of compiled resources to embed. - - - Do not yet expose this to build authors. - + + The set of compiled resources to embed. + + + Do not yet expose this to build authors. + - - Indicates whether the assembly linker for a given target framework - supports the "template" option, which takes an assembly from which - to get all options except the culture field. - The default is . - - - TODO: remove this once Mono bug #74814 is fixed. - + + Indicates whether the assembly linker for a given target framework + supports the "template" option, which takes an assembly from which + to get all options except the culture field. + The default is . + + + TODO: remove this once Mono bug #74814 is fixed. + - - Specifies an assembly from which to get all options except the - culture field. - - - The complete path to the assembly template. - - - - Corresponds with the /template: flag. - - + + Specifies an assembly from which to get all options except the + culture field. + + + The complete path to the assembly template. + + + + Corresponds with the /template: flag. + + - - Specifies a string for the Title field in the assembly. - - - A string for the Title field in the assembly. - + + Specifies a string for the Title field in the assembly. + + + A string for the Title field in the assembly. + - - Specifies a string for the Trademark field in the assembly. - - - A string for the Trademark field in the assembly. - + + Specifies a string for the Trademark field in the assembly. + + + A string for the Trademark field in the assembly. + - - Specifies version information for the assembly. The format of the - version string is major.minor.build.revision. - + + Specifies version information for the assembly. The format of the + version string is major.minor.build.revision. + - - Icon to associate with the assembly. - + + Icon to associate with the assembly. + - - Inserts a Win32 resource (.res file) in the output file. - + + Inserts a Win32 resource (.res file) in the output file. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program or - if the task is not being executed. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program or + if the task is not being executed. + - - Provides the abstract base class for compiler tasks. - + + Provides the abstract base class for compiler tasks. + - - Contains a list of extensions for all file types that should be treated as - 'code-behind' when looking for resources. Ultimately this will determine - if we use the "namespace+filename" or "namespace+classname" algorithm, since - code-behind will use the "namespace+classname" algorithm. - + + Contains a list of extensions for all file types that should be treated as + 'code-behind' when looking for resources. Ultimately this will determine + if we use the "namespace+filename" or "namespace+classname" algorithm, since + code-behind will use the "namespace+classname" algorithm. + @@ -552,9 +570,9 @@ - - Compiles the sources and resources. - + + Compiles the sources and resources. + @@ -585,14 +603,14 @@ - - Extracts the associated namespace/classname linkage found in the - given stream. - - The read-only stream of the source file to search. - - The namespace/classname of the source file matching the resource. - + + Extracts the associated namespace/classname linkage found in the + given stream. + + The read-only stream of the source file to search. + + The namespace/classname of the source file matching the resource. + @@ -654,39 +672,39 @@ - - Determines whether compilation is needed. - + + Determines whether compilation is needed. + - - Finds the correct namespace/classname for a resource file from the - given dependent source file. - - The file from which the resource linkage of the resource file should be determined. - The culture of the resource file for which the resource linkage should be determined. - - The namespace/classname of the source file matching the resource or - if the dependent source file does not exist. - - - This behaviour may be overidden by each particular compiler to - support the namespace/classname syntax for that language. - + + Finds the correct namespace/classname for a resource file from the + given dependent source file. + + The file from which the resource linkage of the resource file should be determined. + The culture of the resource file for which the resource linkage should be determined. + + The namespace/classname of the source file matching the resource or + if the dependent source file does not exist. + + + This behaviour may be overidden by each particular compiler to + support the namespace/classname syntax for that language. + - - Link a list of files into a resource assembly. - - The collection of resources. - Resource assembly to generate - Culture of the generated assembly. + + Link a list of files into a resource assembly. + + The collection of resources. + Resource assembly to generate + Culture of the generated assembly. - - Compiles a set of resx files to a .resources files. - - The set of resx files to compile. + + Compiles a set of resx files to a .resources files. + + The set of resx files to compile. @@ -701,157 +719,157 @@ - - Generate debug output. The default is . - - - Only used for <jsc> tasks, but retained for backward - compatibility (Clover.NET). - + + Generate debug output. The default is . + + + Only used for <jsc> tasks, but retained for backward + compatibility (Clover.NET). + - - The output file created by the compiler. - + + The output file created by the compiler. + - - Output type. Possible values are exe, winexe, - library or module. - + + Output type. Possible values are exe, winexe, + library or module. + - - Define conditional compilation symbol(s). - - - - Corresponds to /d[efine]: flag. - - + + Define conditional compilation symbol(s). + + + + Corresponds to /d[efine]: flag. + + - - Icon to associate with the application. - - - - Corresponds to /win32icon: flag. - - + + Icon to associate with the application. + + + + Corresponds to /win32icon: flag. + + - - Specifies a Win32 resource file (.res). - - - - Corresponds to /win32res[ource]: flag. - - + + Specifies a Win32 resource file (.res). + + + + Corresponds to /win32res[ource]: flag. + + - - Instructs the compiler to treat all warnings as errors. The default - is . - - - - Corresponds to the /warnaserror[+|-] flag of the compiler. - - - When this property is set to , any messages - that would ordinarily be reported as warnings will instead be - reported as errors. - - + + Instructs the compiler to treat all warnings as errors. The default + is . + + + + Corresponds to the /warnaserror[+|-] flag of the compiler. + + + When this property is set to , any messages + that would ordinarily be reported as warnings will instead be + reported as errors. + + - - Controls which warnings should be reported as errors. - + + Controls which warnings should be reported as errors. + - - Specifies a comma-separated list of warnings that should be suppressed - by the compiler. - - - Comma-separated list of warnings that should be suppressed by the - compiler. - - - - Corresponds with the /nowarn flag. - - + + Specifies a comma-separated list of warnings that should be suppressed + by the compiler. + + + Comma-separated list of warnings that should be suppressed by the + compiler. + + + + Corresponds with the /nowarn flag. + + - - Specifies a list of warnings that you want the compiler to suppress. - + + Specifies a list of warnings that you want the compiler to suppress. + - - Instructs NAnt to recompile the output file regardless of the file timestamps. - - - When this parameter is to , NAnt will always - run the compiler to rebuild the output file, regardless of the file timestamps. - + + Instructs NAnt to recompile the output file regardless of the file timestamps. + + + When this parameter is to , NAnt will always + run the compiler to rebuild the output file, regardless of the file timestamps. + - - Specifies which type contains the Main method that you want to use - as the entry point into the program. - - - - Corresponds to the /m[ain]: flag of the compiler. - - - Use this property when creating an executable file. If this property - is not set, the compiler searches for a valid Main method in all - public classes. - - + + Specifies which type contains the Main method that you want to use + as the entry point into the program. + + + + Corresponds to the /m[ain]: flag of the compiler. + + + Use this property when creating an executable file. If this property + is not set, the compiler searches for a valid Main method in all + public classes. + + - - Specifies the key pair container used to strongname the assembly. - + + Specifies the key pair container used to strongname the assembly. + - - Specifies a strong name key file. - + + Specifies a strong name key file. + - - Specifies whether to delay sign the assembly using only the public - portion of the strong name key. The default is - . - - + + Specifies whether to delay sign the assembly using only the public + portion of the strong name key. The default is + . + + - - Additional directories to search in for assembly references. - - - - Corresponds with the /lib[path]: flag. - - + + Additional directories to search in for assembly references. + + + + Corresponds with the /lib[path]: flag. + + - - Reference metadata from the specified assembly files. - + + Reference metadata from the specified assembly files. + - - Specifies list of packages to reference. - + + Specifies list of packages to reference. + @@ -881,85 +899,85 @@ - - Link the specified modules into this assembly. - + + Link the specified modules into this assembly. + - - The set of source files for compilation. - + + The set of source files for compilation. + - - Indicates whether package references are supported by compiler for - a given target framework. The default is . - + + Indicates whether package references are supported by compiler for + a given target framework. The default is . + - - Indicates whether the compiler for a given target framework supports - the "warnaserror" option that takes a list of warnings. The default - is . - + + Indicates whether the compiler for a given target framework supports + the "warnaserror" option that takes a list of warnings. The default + is . + - - Indicates whether the compiler for a given target framework supports - a command line option that allows a list of warnings to be - suppressed. The default is . - + + Indicates whether the compiler for a given target framework supports + a command line option that allows a list of warnings to be + suppressed. The default is . + - - Indicates whether the compiler for a given target framework supports - the "keycontainer" option. The default is . - + + Indicates whether the compiler for a given target framework supports + the "keycontainer" option. The default is . + - - Indicates whether the compiler for a given target framework supports - the "keyfile" option. The default is . - + + Indicates whether the compiler for a given target framework supports + the "keyfile" option. The default is . + - - Indicates whether the compiler for a given target framework supports - the "delaysign" option. The default is . - + + Indicates whether the compiler for a given target framework supports + the "delaysign" option. The default is . + - - Gets the file extension required by the current compiler. - - - The file extension required by the current compiler. - + + Gets the file extension required by the current compiler. + + + The file extension required by the current compiler. + - - Gets the class name regular expression for the language of the current compiler. - - class name regular expression for the language of the current compiler + + Gets the class name regular expression for the language of the current compiler. + + class name regular expression for the language of the current compiler - - Gets the namespace regular expression for the language of the current compiler. - - namespace regular expression for the language of the current compiler + + Gets the namespace regular expression for the language of the current compiler. + + namespace regular expression for the language of the current compiler - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Holds class and namespace information for resource (*.resx) linkage. - + + Holds class and namespace information for resource (*.resx) linkage. + @@ -970,12 +988,12 @@ The class name the resource is associated with. - - Returns the resource linkage as a string. - - - A string representation of the resource linkage. - + + Returns the resource linkage as a string. + + + A string representation of the resource linkage. + @@ -1010,29 +1028,29 @@ - - Gets the name of namespace the resource is under. - - - The name of namespace the resource is under. - + + Gets the name of namespace the resource is under. + + + The name of namespace the resource is under. + - - Gets the name of the class (most likely a form) that the resource - is associated with. - - - The name of the class the resource is associated with. - + + Gets the name of the class (most likely a form) that the resource + is associated with. + + + The name of the class the resource is associated with. + - - Gets the culture that the resource is associated with. - - - The culture that the resource is associated with. - + + Gets the culture that the resource is associated with. + + + The culture that the resource is associated with. + @@ -1079,29 +1097,29 @@ to which the compiler options should be written. - - Determines whether compilation is needed. - + + Determines whether compilation is needed. + - - The preferred base address at which to load a DLL. The default base - address for a DLL is set by the .NET Framework common language - runtime. - - - The preferred base address at which to load a DLL. - - - This address can be specified as a decimal, hexadecimal, or octal - number. - + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address can be specified as a decimal, hexadecimal, or octal + number. + - - Specifies the type of debugging information generated by the - compiler. The default is . - + + Specifies the type of debugging information generated by the + compiler. The default is . + @@ -1110,184 +1128,184 @@ - - The name of the XML documentation file to generate. - - - - Corresponds with the /doc: flag. - - + + The name of the XML documentation file to generate. + + + + Corresponds with the /doc: flag. + + - - Specifies the size of sections in the output file. Valid values are - 512, 1024, 2048, 4096, and 8192. - - - The size of sections in the output file. - + + Specifies the size of sections in the output file. Valid values are + 512, 1024, 2048, 4096, and 8192. + + + The size of sections in the output file. + - - Instructs the compiler not to import mscorlib.dll. The default is - . - - - - Corresponds with the /nostdlib[+|-] flag. - - + + Instructs the compiler not to import mscorlib.dll. The default is + . + + + + Corresponds with the /nostdlib[+|-] flag. + + - - Instructs the compiler not to use implicit references to assemblies. - The default is . - - - - Corresponds with the /noconfig flag. - - + + Instructs the compiler not to use implicit references to assemblies. + The default is . + + + + Corresponds with the /noconfig flag. + + - - Specifies whether an integer arithmetic statement that is not in - the scope of the checked or unchecked keywords and - that results in a value outside the range of the data type should - cause a run-time exception. The default is . - - - - Corresponds with the /checked[+|-] flag. - - + + Specifies whether an integer arithmetic statement that is not in + the scope of the checked or unchecked keywords and + that results in a value outside the range of the data type should + cause a run-time exception. The default is . + + + + Corresponds with the /checked[+|-] flag. + + - - Instructs the compiler to allow code that uses the unsafe - keyword. The default is . - - - - Corresponds with the /unsafe[+|-] flag. - - + + Instructs the compiler to allow code that uses the unsafe + keyword. The default is . + + + + Corresponds with the /unsafe[+|-] flag. + + - - Causes the compiler to only accept syntax that is included in a - given specification. - - - - Corresponds with the /langversion flag. - - + + Causes the compiler to only accept syntax that is included in a + given specification. + + + + Corresponds with the /langversion flag. + + - - Specifies whether the compiler should perform optimizations to the - make output files smaller, faster, and more effecient. The default - is . - - - if the compiler should perform optimizations; - otherwise, . - - - - Corresponds with the /optimize[+|-] flag. - - + + Specifies whether the compiler should perform optimizations to the + make output files smaller, faster, and more effecient. The default + is . + + + if the compiler should perform optimizations; + otherwise, . + + + + Corresponds with the /optimize[+|-] flag. + + - - Specifies which platform version of common language runtime (CLR) - can run the output file. - - - The platform version of common language runtime (CLR) that can run - the output file. - - - - Corresponds with the /platform flag. - - + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + - - Specifies the warning level for the compiler to display. Valid values - are 0-4. The default is 4. - - - The warning level for the compiler to display. - - - - Corresponds with the /warn flag. - - + + Specifies the warning level for the compiler to display. Valid values + are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn flag. + + - - Specifies the code page to use for all source code files in the - compilation. - - - - Corresponds with the /codepage flag. - - + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + - - Specifies whether the compiler for the active target framework - supports generation of XML Documentation file. The default is - . - + + Specifies whether the compiler for the active target framework + supports generation of XML Documentation file. The default is + . + - - Specifies whether the compiler for the active target framework - supports limiting the platform on which the compiled code can run. - The default is . - + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + - - Specifies whether the compiler for the active target framework - supports accepting only a specific language syntax. - The default is . - + + Specifies whether the compiler for the active target framework + supports accepting only a specific language syntax. + The default is . + - - Gets the file extension required by the current compiler. - - - For the C# compiler, the file extension is always cs. - + + Gets the file extension required by the current compiler. + + + For the C# compiler, the file extension is always cs. + - - Gets the class name regular expression for the language of the - current compiler. - - - Class name regular expression for the language of the current - compiler. - + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + - - Gets the namespace regular expression for the language of the current compiler. - - - Namespace regular expression for the language of the current - compiler. - + + Gets the namespace regular expression for the language of the current compiler. + + + Namespace regular expression for the language of the current + compiler. + @@ -1315,61 +1333,61 @@ - - Converts a single file or group of files. - + + Converts a single file or group of files. + - - List of assemblies/executables to sign. - + + List of assemblies/executables to sign. + - - Specifies the filesystem path to the signing key. - + + Specifies the filesystem path to the signing key. + - - Specifies the key container. - + + Specifies the key container. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Compiles ILASM programs. - - - - Compiles helloworld.il to helloworld.exe. - - - - - - - - ]]> - - + + Compiles ILASM programs. + + + + Compiles helloworld.il to helloworld.exe. + + + + + + + + ]]> + + - - Compiles the sources. - + + Compiles the sources. + - - Writes the compiler options. - + + Writes the compiler options. + @@ -1402,262 +1420,262 @@ - - Determines whether or not compilation is needed. - - - if compilation is needed; otherwise, - . - + + Determines whether or not compilation is needed. + + + if compilation is needed; otherwise, + . + - - Specifies whether or not the compiler should measure and report - the compilation times. - - - if the compilation times should be - measured and reported; otherwise, . The - default is . - - - - Corresponds to the /CLOCK flag. - - + + Specifies whether or not the compiler should measure and report + the compilation times. + + + if the compilation times should be + measured and reported; otherwise, . The + default is . + + + + Corresponds to the /CLOCK flag. + + - - Specifies whether or not the compiler should generate debug - information. - - - if debug information should be generated; - otherwise, . The default is - . - - - - Corresponds to the /DEBUG flag. - - + + Specifies whether or not the compiler should generate debug + information. + + + if debug information should be generated; + otherwise, . The default is + . + + + + Corresponds to the /DEBUG flag. + + - - Specifies whether or not the compiler should attempt to create a - PE file even if compilation errors have been reported. - - - if a PE file has to be created even if - compilation errors have been reported; otherwise, - . The default is . - - - - Corresponds to the /ERROR flag. - - + + Specifies whether or not the compiler should attempt to create a + PE file even if compilation errors have been reported. + + + if a PE file has to be created even if + compilation errors have been reported; otherwise, + . The default is . + + + + Corresponds to the /ERROR flag. + + - - Instructs NAnt to recompile the output file regardless of the file - timestamps. - - - if the output file should be recompiled - regardless of its timestamps; otherwise . - The default is . - + + Instructs NAnt to recompile the output file regardless of the file + timestamps. + + + if the output file should be recompiled + regardless of its timestamps; otherwise . + The default is . + - - Specifies whether or not the compiler should type a formatted - listing of the compilation result. - - - if a formatted listing of the compilation - result should be typed; otherwise, . The - default is . - - - - Corresponds to the /LISTING flag. - - + + Specifies whether or not the compiler should type a formatted + listing of the compilation result. + + + if a formatted listing of the compilation + result should be typed; otherwise, . The + default is . + + + + Corresponds to the /LISTING flag. + + - - Instructs the compiler to set the FileAlignment value in - the PE header. - - - An that represents the FileAlignment - value to set in the PE header. The value must be a power of 2, in - range from 512 to 65536. - - - - Corresponds to the /ALIGNMENT flag. - - + + Instructs the compiler to set the FileAlignment value in + the PE header. + + + An that represents the FileAlignment + value to set in the PE header. The value must be a power of 2, in + range from 512 to 65536. + + + + Corresponds to the /ALIGNMENT flag. + + - - Instructs the compiler to set the ImageBase value in - the PE header. - - - A that represents the ImageBase - value to set in the PE header. - - - - Corresponds to the /BASE flag. - - + + Instructs the compiler to set the ImageBase value in + the PE header. + + + A that represents the ImageBase + value to set in the PE header. + + + + Corresponds to the /BASE flag. + + - - Instructs the compiler to set the Flags value in the CLR - header. - - - An that represents the Flags - value to set in the CLR header. The most frequently value are 1 - (pre-IL code) and 2 (mixed code). The third bit indicating that - the PE file is strong signed, is ignored. - - - - Corresponds to the /FLAGS flag. - - + + Instructs the compiler to set the Flags value in the CLR + header. + + + An that represents the Flags + value to set in the CLR header. The most frequently value are 1 + (pre-IL code) and 2 (mixed code). The third bit indicating that + the PE file is strong signed, is ignored. + + + + Corresponds to the /FLAGS flag. + + - - Instructs the compiler to set the Subsystem value in the PE - header. - - - An that represents the Subsystem - value to set in the PE header. The most frequently value are 3 - (console application) and 2 (GUI application). - - - - Corresponds to the /SUBSYSTEM flag. - - + + Instructs the compiler to set the Subsystem value in the PE + header. + + + An that represents the Subsystem + value to set in the PE header. The most frequently value are 3 + (console application) and 2 (GUI application). + + + + Corresponds to the /SUBSYSTEM flag. + + - - Specifies which output type should be generated. - - - A that contains the target type. - Possible values are dll and exe. - - - - Corresponds to the /OUTPUT flag. - - + + Specifies which output type should be generated. + + + A that contains the target type. + Possible values are dll and exe. + + + + Corresponds to the /OUTPUT flag. + + - - Instructs the compiler to generate a strong signature of the PE - file. - - - A that contains the private - encryption key. - - - - Corresponds to the /KEY=keysource]]> - flag. - - + + Instructs the compiler to generate a strong signature of the PE + file. + + + A that contains the private + encryption key. + + + + Corresponds to the /KEY=keysource]]> + flag. + + - - Instructs the compiler to generate a strong signature of the PE - file. - - - A that represents the file - containing the private encryption key. - - - - Corresponds to the /KEY=keyfile]]> - flag. - - + + Instructs the compiler to generate a strong signature of the PE + file. + + + A that represents the file + containing the private encryption key. + + + + Corresponds to the /KEY=keyfile]]> + flag. + + - - Specifies the name of the output file created by the compiler. - - - A that represents the name of - the output file. - - - - Corresponds to the /OUTPUT flag. - - + + Specifies the name of the output file created by the compiler. + + + A that represents the name of + the output file. + + + + Corresponds to the /OUTPUT flag. + + - - Instructs the compiler to link the specified unmanaged resource - file into the resulting PE file. - - - A that represents the unmanaged - resource file to link. - - - - Corresponds to the /RESOURCE flag. - - + + Instructs the compiler to link the specified unmanaged resource + file into the resulting PE file. + + + A that represents the unmanaged + resource file to link. + + + + Corresponds to the /RESOURCE flag. + + - - Specifies the set of source files to compile. - - - A that represents the set - of source files to compile. - + + Specifies the set of source files to compile. + + + A that represents the set + of source files to compile. + - - Gets the command-line arguments for the external program. - - - A that contains the command-line - arguments for the external program. - + + Gets the command-line arguments for the external program. + + + A that contains the command-line + arguments for the external program. + - - Compiles JScript.NET programs. - - - Compile helloworld.js to helloworld.exe. - - - - - - - ]]> - - + + Compiles JScript.NET programs. + + + Compile helloworld.js to helloworld.exe. + + + + + + + ]]> + + @@ -1672,16 +1690,16 @@ to which the compiler options should be written. - - Automatically references assemblies if they have the same name as - an imported namespace or as a type annotation when declaring a - variable. The default is . - - - - Corresponds with the /autoref flag. - - + + Automatically references assemblies if they have the same name as + an imported namespace or as a type annotation when declaring a + variable. The default is . + + + + Corresponds with the /autoref flag. + + @@ -1696,216 +1714,216 @@ - - Specifies which platform version of common language runtime (CLR) - can run the output file. - - - The platform version of common language runtime (CLR) that can run - the output file. - - - - Corresponds with the /platform flag. - - + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + - - Causes the compiler to generate errors for implicit method - overrides. The default is . - - - - Corresponds with the /versionsafe flag. - - + + Causes the compiler to generate errors for implicit method + overrides. The default is . + + + + Corresponds with the /versionsafe flag. + + - - Specifies the warning level for the compiler to display. Valid - values are 0-4. The default is 4. - - - The warning level for the compiler to display. - - - - Corresponds with the /warn flag. - - + + Specifies the warning level for the compiler to display. Valid + values are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn flag. + + - - Controls which warnings should be reported as errors. - - - Override to avoid exposing this to build authors, as the JScript.NET - compiler does not allow control over which warnings should be - reported as errors. - + + Controls which warnings should be reported as errors. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not allow control over which warnings should be + reported as errors. + - - Specifies a comma-separated list of warnings that should be suppressed - by the compiler. - - - Override to avoid exposing this to build authors, as the JScript.NET - compiler does not support package references. - + + Specifies a comma-separated list of warnings that should be suppressed + by the compiler. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support package references. + - - Specifies a list of warnings that you want the compiler to suppress. - - - Override to avoid exposing this to build authors, as the JScript.NET - compiler does not support suppressing warnings. - + + Specifies a list of warnings that you want the compiler to suppress. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support suppressing warnings. + - - Specifies the code page to use for all source code files in the - compilation. - - - - Corresponds with the /codepage flag. - - + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + - - Specifies the key pair container used to strongname the assembly. - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Specifies the key pair container used to strongname the assembly. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Specifies a strong name key file. - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Specifies a strong name key file. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Specifies whether to delay sign the assembly using only the public - portion of the strong name key. - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Specifies whether to delay sign the assembly using only the public + portion of the strong name key. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Indicates whether the compiler for a given target framework supports - the "keycontainer" option. The default is . - - - . - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Indicates whether the compiler for a given target framework supports + the "keycontainer" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Indicates whether the compiler for a given target framework supports - the "keyfile" option. The default is . - - - . - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Indicates whether the compiler for a given target framework supports + the "keyfile" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Indicates whether the compiler for a given target framework supports - the "delaysign" option. The default is . - - - . - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Indicates whether the compiler for a given target framework supports + the "delaysign" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Specifies whether the compiler for the active target framework - supports limiting the platform on which the compiled code can run. - The default is . - + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + - - Link the specified modules into this assembly. - - - Override to avoid exposing this to build authors, as the JScript.NET - compiler does not support linking modules. - + + Link the specified modules into this assembly. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support linking modules. + - - Gets the file extension required by the current compiler. - - - For the JScript.NET compiler, the file extension is always js. - + + Gets the file extension required by the current compiler. + + + For the JScript.NET compiler, the file extension is always js. + - - Gets the class name regular expression for the language of the - current compiler. - - - Class name regular expression for the language of the current - compiler. - + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + - - Gets the namespace regular expression for the language of the - current compiler. - - - Namespace regular expression for the language of the current - compiler. - + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + - - Generates a .licence file from a .licx file. - - - - If no output file is specified, the default filename is the name of the - target file with the extension .licenses appended. - - - - - Generate the file component.exe.licenses file from component.licx. - - - - ]]> - - + + Generates a .licence file from a .licx file. + + + + If no output file is specified, the default filename is the name of the + target file with the extension .licenses appended. + + + + + Generate the file component.exe.licenses file from component.licx. + + + + ]]> + + @@ -1920,104 +1938,104 @@ The of which the should be updated. - - Generates the license file. - + + Generates the license file. + - - Determines whether the .licenses file needs to be recompiled - or is uptodate. - - The .licenses file. - - if the .licenses file needs compiling; - otherwise, . - + + Determines whether the .licenses file needs to be recompiled + or is uptodate. + + The .licenses file. + + if the .licenses file needs compiling; + otherwise, . + - - Input file to process. - + + Input file to process. + - - Name of the license file to output. - + + Name of the license file to output. + - - Names of the references to scan for the licensed component. - + + Names of the references to scan for the licensed component. + - - Specifies the executable for which the .licenses file is generated. - + + Specifies the executable for which the .licenses file is generated. + - - Specifies the executable for which the .licenses file is generated. - + + Specifies the executable for which the .licenses file is generated. + - - Indicates whether assembly references are supported by the current - target framework. The default is . - - - Applies only to frameworks having a command line tool for compiling - licenses files. - + + Indicates whether assembly references are supported by the current + target framework. The default is . + + + Applies only to frameworks having a command line tool for compiling + licenses files. + - - Indicates whether the current target framework has a command line - tool for compiling licenses files. The default is - . - + + Indicates whether the current target framework has a command line + tool for compiling licenses files. The default is + . + - - Gets the working directory for the application. - - - The working directory for the application. - + + Gets the working directory for the application. + + + The working directory for the application. + - - The command-line arguments for the external program. - - - Override to avoid exposing these elements in build file. - + + The command-line arguments for the external program. + + + Override to avoid exposing these elements in build file. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Gets the filename of the external program to start. - - - The filename of the external program. - - - Override in derived classes to explicitly set the location of the - external tool. - + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + - - Responsible for reading the license and writing them to a license - file. - + + Responsible for reading the license and writing them to a license + file. + @@ -2039,15 +2057,15 @@ The .licenses file to create. - - Determines whether the given object is serializable in binary - format. - - The object to check. - - if is - serializable in binary format; otherwise, . - + + Determines whether the given object is serializable in binary + format. + + The object to check. + + if is + serializable in binary format; otherwise, . + @@ -2124,14 +2142,14 @@ - - Initializes the taks and verifies the parameters. - + + Initializes the taks and verifies the parameters. + - - Generates an NDoc project and builds the documentation. - + + Generates an NDoc project and builds the documentation. + @@ -2167,119 +2185,119 @@ for which expansion should be performed. - - Use Reflection to set HtmplHelp._htmlHelpCompiler private field for MSDN Documentor. - Ndoc could not handle 64bit installations and is not actively developed anymore. - - Active documentor - Path to hhc.exe + + Use Reflection to set HtmplHelp._htmlHelpCompiler private field for MSDN Documentor. + Ndoc could not handle 64bit installations and is not actively developed anymore. + + Active documentor + Path to hhc.exe - - Searches in %ProgramFiles(x86)%\HTML Help Workshop and %ProgramFiles%\HTML Help Workshop - for hhc.exe. If not found let ndoc msdn documentor search itself - - the path to hhc.exe if found, null otherwise + + Searches in %ProgramFiles(x86)%\HTML Help Workshop and %ProgramFiles%\HTML Help Workshop + for hhc.exe. If not found let ndoc msdn documentor search itself + + the path to hhc.exe if found, null otherwise - - The set of assemblies to document. - + + The set of assemblies to document. + - - The set of namespace summary files. - + + The set of namespace summary files. + - - Specifies the formats in which the documentation should be generated. - + + Specifies the formats in which the documentation should be generated. + - - Collection of additional directories to search for referenced - assemblies. - + + Collection of additional directories to search for referenced + assemblies. + - - Installs or removes .NET Services. - - - - This tasks provides the same functionality as the regsvcs tool - provided in the .NET SDK. - - - It performs the following actions: - - - - Loads and registers an assembly. - - - Generates, registers, and installs a type library into a specified COM+ application. - - - Configures services that are added programmatically to your class. - - - - Refer to the .NET Services Installation Tool (Regsvcs.exe) for more information. - - - - - Adds all public classes contained in myTest.dll to a COM+ - application and produces the myTest.tlb type library. If the - application already exists, it is overwritten. - - - - ]]> - - - - - Adds all public classes contained in myTest.dll to myTargetApp - and produces the myTest.tlb type library. If the application already - exists, it is overwritten. - - - - ]]> - - - - - Adds all public classes contained in myTest.dll to a COM+ - application and produces the myTest.tlb type library. A new - application is always created. - - - - ]]> - - - - - Uninstalls the COM+ application contained in myTest.dll. - - - - ]]> - - + + Installs or removes .NET Services. + + + + This tasks provides the same functionality as the regsvcs tool + provided in the .NET SDK. + + + It performs the following actions: + + + + Loads and registers an assembly. + + + Generates, registers, and installs a type library into a specified COM+ application. + + + Configures services that are added programmatically to your class. + + + + Refer to the .NET Services Installation Tool (Regsvcs.exe) for more information. + + + + + Adds all public classes contained in myTest.dll to a COM+ + application and produces the myTest.tlb type library. If the + application already exists, it is overwritten. + + + + ]]> + + + + + Adds all public classes contained in myTest.dll to myTargetApp + and produces the myTest.tlb type library. If the application already + exists, it is overwritten. + + + + ]]> + + + + + Adds all public classes contained in myTest.dll to a COM+ + application and produces the myTest.tlb type library. A new + application is always created. + + + + ]]> + + + + + Uninstalls the COM+ application contained in myTest.dll. + + + + ]]> + + - - Performs the specified action. - + + Performs the specified action. + @@ -2288,78 +2306,78 @@ - - The source assembly file. - - - The assembly must be signed with a strong name. - + + The source assembly file. + + + The assembly must be signed with a strong name. + - - Specifies the type library file to install. - + + Specifies the type library file to install. + - - Uses an existing type library. The default is . - + + Uses an existing type library. The default is . + - - Do not reconfigure an existing target application. - The default is . - + + Do not reconfigure an existing target application. + The default is . + - - Configures components only; ignores methods and interfaces. - The default is . - + + Configures components only; ignores methods and interfaces. + The default is . + - - Expect an existing application. The default is . - + + Expect an existing application. The default is . + - - Specifies the name of the COM+ application to either find or create. - + + Specifies the name of the COM+ application to either find or create. + - - Specifies the name or id of the COM+ application to either find or - create. - + + Specifies the name or id of the COM+ application to either find or + create. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Defines the possible actions for a .NET Service. - + + Defines the possible actions for a .NET Service. + - - Finds or creates the target application. - + + Finds or creates the target application. + - - Creates the target application. - + + Creates the target application. + - - Uninstalls the target application. - + + Uninstalls the target application. + @@ -2405,155 +2423,155 @@ The of which the should be updated. - - Converts a single file or group of files. - + + Converts a single file or group of files. + - - Cleans up generated files. - + + Cleans up generated files. + - - Determines whether the specified input file needs to be compiled. - - The input file. - The output file. - - if the input file need to be compiled; - otherwise . - + + Determines whether the specified input file needs to be compiled. + + The input file. + The output file. + + if the input file need to be compiled; + otherwise . + - - Determines the full path and extension for the output file. - - The output file for which the full path and extension should be determined. - - The full path (with extensions) for the specified file. - + + Determines the full path and extension for the output file. + + The output file for which the full path and extension should be determined. + + The full path (with extensions) for the specified file. + - - Determines whether the specified resource file references third - party assemblies by checking whether a <data> element exists - with a "type" attribute that does not start with - "System.". - - The resource file to check. - - if the resource file references third party - assemblies, or an error occurred; otherwise, . - - - This check will only be accurate for 1.0 resource file, but the - 2.0 resx files can only be compiled with a resgen tool that supports - assembly references, so this method will not be used anyway. - + + Determines whether the specified resource file references third + party assemblies by checking whether a <data> element exists + with a "type" attribute that does not start with + "System.". + + The resource file to check. + + if the resource file references third party + assemblies, or an error occurred; otherwise, . + + + This check will only be accurate for 1.0 resource file, but the + 2.0 resx files can only be compiled with a resgen tool that supports + assembly references, so this method will not be used anyway. + - - Returns a list of external file references for the specified file. - - The resx file for which a list of external file references should be returned. - - A list of external file references for the specified file, or - if does not - exist or does not support external file references. - + + Returns a list of external file references for the specified file. + + The resx file for which a list of external file references should be returned. + + A list of external file references for the specified file, or + if does not + exist or does not support external file references. + - - Input file to process. - - - The full path to the input file. - + + Input file to process. + + + The full path to the input file. + - - The resource file to output. - + + The resource file to output. + - - The target type. The default is resources. - + + The target type. The default is resources. + - - The directory to which outputs will be stored. - + + The directory to which outputs will be stored. + - - Use each source file's directory as the current directory for - resolving relative file paths. The default is . - Only supported when targeting .NET 2.0 (or higher). - + + Use each source file's directory as the current directory for + resolving relative file paths. The default is . + Only supported when targeting .NET 2.0 (or higher). + - - Takes a list of .resx or .txt files to convert to .resources files. - + + Takes a list of .resx or .txt files to convert to .resources files. + - - Reference metadata from the specified assembly files. - + + Reference metadata from the specified assembly files. + - - Indicates whether assembly references are supported by the - resgen tool for the current target framework. The default - is . - + + Indicates whether assembly references are supported by the + resgen tool for the current target framework. The default + is . + - - Indicates whether external file references are supported by the - resgen tool for the current target framework. The default - is . - + + Indicates whether external file references are supported by the + resgen tool for the current target framework. The default + is . + - - For internal use only ! - + + For internal use only ! + - - Gets the working directory for the application. - - - The working directory for the application. - + + Gets the working directory for the application. + + + The working directory for the application. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Gets the filename of the external program to start. - - - The filename of the external program. - - - Override in derived classes to explicitly set the location of the - external tool. - + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + - - For internal use only ! - + + For internal use only ! + @@ -2564,254 +2582,261 @@ The compiled resource. - - Gets the resource file to compile. - - - The resource file to compile. - + + Gets the resource file to compile. + + + The resource file to compile. + - - Gets the compiled resource file. - - - The compiled resource file. - - - - Executes the code contained within the task. + Gets the compiled resource file. - -
Code
- - The must contain a single code - element, which in turn contains the script code. - - - This code can include extensions such as functions, or tasks. Once - the script task has executed those extensions will be available for - use in the buildfile. - - - If no extensions have been defined, a static entry point named - ScriptMain - which must have a single - argument - is required. - -
Namespaces
- - The following namespaces are imported by default: - - - - System - - - System.Collections - - - System.IO - - - System.Text - - - NAnt.Core - - - NAnt.Core.Attributes - - -
Assembly References
- - The assembly references that are specified will be used to compile - the script, and will be loaded into the NAnt appdomain. - - - By default, only the NAnt.Core and mscorlib assemblies - are referenced. - -
- - Run C# code that writes a message to the build log. - - <script language="C#"> - <code> - <![CDATA[ - public static void ScriptMain(Project project) { - project.Log(Level.Info, "Hello World from a script task using C#"); - } - ]]> - </code> - </script> - - - - Define a custom function and call it using C#. - - <script language="C#" prefix="test" > - <code> - <![CDATA[ - [Function("test-func")] - public static string Testfunc( ) { - return "some result !!!!!!!!"; - } - ]]> - </code> - </script> - <echo message='${test::test-func()}'/> - - - - Use a custom namespace in C# to create a database - - <script language="C#" > - <references> - <include name="System.Data.dll" /> - </references> - <imports> - <import namespace="System.Data.SqlClient" /> - </imports> - <code> - <![CDATA[ - public static void ScriptMain(Project project) { - string dbUserName = "nant"; - string dbPassword = "nant"; - string dbServer = "(local)"; - string dbDatabaseName = "NAntSample"; - string connectionString = String.Format("Server={0};uid={1};pwd={2};", dbServer, dbUserName, dbPassword); - - SqlConnection connection = new SqlConnection(connectionString); - string createDbQuery = "CREATE DATABASE " + dbDatabaseName; - SqlCommand createDatabaseCommand = new SqlCommand(createDbQuery); - createDatabaseCommand.Connection = connection; - - connection.Open(); - - try { - createDatabaseCommand.ExecuteNonQuery(); - project.Log(Level.Info, "Database added successfully: " + dbDatabaseName); - } catch (Exception e) { - project.Log(Level.Error, e.ToString()); - } finally { - connection.Close(); - } - } - ]]> - </code> - </script> - - - - - Run Visual Basic.NET code that writes a message to the build log. - - - <script language="VB"> - <code> - <![CDATA[ - Public Shared Sub ScriptMain(project As Project) - project.Log(Level.Info, "Hello World from a script task using Visual Basic.NET") - End Sub - ]]> - </code> - </script> - - - - Define a custom task and call it using C#. - - <script language="C#" prefix="test" > - <code> - <![CDATA[ - [TaskName("usertask")] - public class TestTask : Task { - #region Private Instance Fields - private string _message; - #endregion Private Instance Fields - #region Public Instance Properties - [TaskAttribute("message", Required=true)] - public string FileName { - get { return _message; } - set { _message = value; } - } - #endregion Public Instance Properties - #region Override implementation of Task - protected override void ExecuteTask() { - Log(Level.Info, _message.ToUpper()); - } - #endregion Override implementation of Task - } - ]]> - </code> - </script> - <usertask message='Hello from UserTask'/> - - - - - Define a custom function and call it using Boo. - - - <script language="Boo.CodeDom.BooCodeProvider, Boo.CodeDom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67" - failonerror="true"> - <code> - <![CDATA[ - - [Function("test-func")] - def MyFunc(): - return "Hello from Boo !!!!!!" - ]]> - </code> - </script> - <echo message='${script::test-func()}'/> - - + + The compiled resource file. + +
+ + + Executes the code contained within the task. + + +
Code
+ + The must contain a single code + element, which in turn contains the script code. + + + This code can include extensions such as functions, or tasks. Once + the script task has executed those extensions will be available for + use in the buildfile. + + + If no extensions have been defined, a static entry point named + ScriptMain - which must have a single + argument - is required. + +
Namespaces
+ + The following namespaces are imported by default: + + + + System + + + System.Collections + + + System.IO + + + System.Text + + + NAnt.Core + + + NAnt.Core.Attributes + + +
Assembly References
+ + The assembly references that are specified will be used to compile + the script, and will be loaded into the NAnt appdomain. + + + By default, only the NAnt.Core and mscorlib assemblies + are referenced. + +
+ + Run C# code that writes a message to the build log. + + <script language="C#"> + <code> + <![CDATA[ + public static void ScriptMain(Project project) { + project.Log(Level.Info, "Hello World from a script task using C#"); + } + ]]> + </code> + </script> + + + + Define a custom function and call it using C#. + + <script language="C#" prefix="test" > + <code> + <![CDATA[ + [Function("test-func")] + public static string Testfunc( ) { + return "some result !!!!!!!!"; + } + ]]> + </code> + </script> + <echo message='${test::test-func()}'/> + + + + Use a custom namespace in C# to create a database + + <script language="C#" > + <references> + <include name="System.Data.dll" /> + </references> + <imports> + <import namespace="System.Data.SqlClient" /> + </imports> + <code> + <![CDATA[ + public static void ScriptMain(Project project) { + string dbUserName = "nant"; + string dbPassword = "nant"; + string dbServer = "(local)"; + string dbDatabaseName = "NAntSample"; + string connectionString = String.Format("Server={0};uid={1};pwd={2};", dbServer, dbUserName, dbPassword); + + SqlConnection connection = new SqlConnection(connectionString); + string createDbQuery = "CREATE DATABASE " + dbDatabaseName; + SqlCommand createDatabaseCommand = new SqlCommand(createDbQuery); + createDatabaseCommand.Connection = connection; + + connection.Open(); + + try { + createDatabaseCommand.ExecuteNonQuery(); + project.Log(Level.Info, "Database added successfully: " + dbDatabaseName); + } catch (Exception e) { + project.Log(Level.Error, e.ToString()); + } finally { + connection.Close(); + } + } + ]]> + </code> + </script> + + + + + Run Visual Basic.NET code that writes a message to the build log. + + + <script language="VB"> + <code> + <![CDATA[ + Public Shared Sub ScriptMain(project As Project) + project.Log(Level.Info, "Hello World from a script task using Visual Basic.NET") + End Sub + ]]> + </code> + </script> + + + + Define a custom task and call it using C#. + + <script language="C#" prefix="test" > + <code> + <![CDATA[ + [TaskName("usertask")] + public class TestTask : Task { + #region Private Instance Fields + + private string _message; + + #endregion Private Instance Fields + + #region Public Instance Properties + + [TaskAttribute("message", Required=true)] + public string FileName { + get { return _message; } + set { _message = value; } + } + + #endregion Public Instance Properties + + #region Override implementation of Task + + protected override void ExecuteTask() { + Log(Level.Info, _message.ToUpper()); + } + #endregion Override implementation of Task + } + ]]> + </code> + </script> + <usertask message='Hello from UserTask'/> + + + + + Define a custom function and call it using Boo. + + + <script language="Boo.CodeDom.BooCodeProvider, Boo.CodeDom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67" + failonerror="true"> + <code> + <![CDATA[ + + [Function("test-func")] + def MyFunc(): + return "Hello from Boo !!!!!!" + ]]> + </code> + </script> + <echo message='${script::test-func()}'/> + +
- - Initializes the task. - + + Initializes the task. + - - Executes the script block. - + + Executes the script block. + - - The language of the script block. Possible values are "VB", "vb", "VISUALBASIC", "C#", "c#", "CSHARP". - "JS", "js", "JSCRIPT" "VJS", "vjs", "JSHARP" or a fully-qualified name for a class implementing - . - + + The language of the script block. Possible values are "VB", "vb", "VISUALBASIC", "C#", "c#", "CSHARP". + "JS", "js", "JSCRIPT" "VJS", "vjs", "JSHARP" or a fully-qualified name for a class implementing + . + - - Any required references. - + + Any required references. + - - The name of the main class containing the static ScriptMain - entry point. - + + The name of the main class containing the static ScriptMain + entry point. + - - The namespace prefix for any custom functions defined in the script. - If ommitted the prefix will default to 'script' - + + The namespace prefix for any custom functions defined in the script. + If ommitted the prefix will default to 'script' + - - The namespaces to import. - + + The namespaces to import. + - - The code to execute. - + + The code to execute. +
@@ -2888,28 +2913,28 @@ to which the compiler options should be written. - - Determines whether compilation is needed. - + + Determines whether compilation is needed. + - - The preferred base address at which to load a DLL. The default base - address for a DLL is set by the .NET Framework common language - runtime. - - - The preferred base address at which to load a DLL. - - - This address must be specified as a hexadecimal number. - + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address must be specified as a hexadecimal number. + - - Specifies the type of debugging information generated by the - compiler. The default is . - + + Specifies the type of debugging information generated by the + compiler. The default is . + @@ -2918,179 +2943,179 @@ - - The name of the XML documentation file to generate. Only supported - when targeting .NET 2.0 (or higher). - - - - Corresponds with the /doc: flag. - - + + The name of the XML documentation file to generate. Only supported + when targeting .NET 2.0 (or higher). + + + + Corresponds with the /doc: flag. + + - - Specifies whether the /imports option gets passed to the - compiler. - - - The value of this attribute is a string that contains one or more - namespaces separated by commas. - - - See the Microsoft.NET Framework SDK documentation for details. - - Example of an imports attribute - - + + Specifies whether the /imports option gets passed to the + compiler. + + + The value of this attribute is a string that contains one or more + namespaces separated by commas. + + + See the Microsoft.NET Framework SDK documentation for details. + + Example of an imports attribute + + - - The namespaces to import. - + + The namespaces to import. + - - Instructs the compiler not to reference standard libraries - (system.dll and VBC.RSP). The default is . - Only supported when targeting .NET 2.0 (or higher). - - - - Corresponds with the /nostdlib flag. - - + + Instructs the compiler not to reference standard libraries + (system.dll and VBC.RSP). The default is . + Only supported when targeting .NET 2.0 (or higher). + + + + Corresponds with the /nostdlib flag. + + - - Specifies whether /optioncompare option gets passed to the - compiler. - - - text, binary, or an empty string. If the value is - or an empty string, the option will not be - passed to the compiler. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether /optioncompare option gets passed to the + compiler. + + + text, binary, or an empty string. If the value is + or an empty string, the option will not be + passed to the compiler. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the /optionexplicit option gets passed to - the compiler. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /optionexplicit option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the /optimize option gets passed to the - compiler. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /optimize option gets passed to the + compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the /optionstrict option gets passed to - the compiler. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /optionstrict option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies which platform version of common language runtime (CLR) - can run the output file. - - - The platform version of common language runtime (CLR) that can run - the output file. - - - - Corresponds with the /platform flag. - - + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + - - Specifies whether the /removeintchecks option gets passed to - the compiler. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /removeintchecks option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the /rootnamespace option gets passed to - the compiler. - - - The value of this attribute is a string that contains the root - namespace of the project. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /rootnamespace option gets passed to + the compiler. + + + The value of this attribute is a string that contains the root + namespace of the project. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the compiler for the active target framework - supports generation of XML Documentation file. The default is - . - + + Specifies whether the compiler for the active target framework + supports generation of XML Documentation file. The default is + . + - - Specifies whether the compiler for the active target framework - supports NOT referencing standard libraries (system.dll and VBC.RSP). - The default is . - + + Specifies whether the compiler for the active target framework + supports NOT referencing standard libraries (system.dll and VBC.RSP). + The default is . + - - Specifies whether the compiler for the active target framework - supports limiting the platform on which the compiled code can run. - The default is . - + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + - - Gets the file extension required by the current compiler. - - - For the VB.NET compiler, the file extension is always vb. - + + Gets the file extension required by the current compiler. + + + For the VB.NET compiler, the file extension is always vb. + - - Gets the class name regular expression for the language of the - current compiler. - - - Class name regular expression for the language of the current - compiler. - + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + - - Gets the namespace regular expression for the language of the - current compiler. - - - Namespace regular expression for the language of the current - compiler. - + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + @@ -3142,24 +3167,24 @@ to which the compiler options should be written. - - The preferred base address at which to load a DLL. The default base - address for a DLL is set by the .NET Framework common language - runtime. - - - The preferred base address at which to load a DLL. - - - This address can be specified as a decimal, hexadecimal, or octal - number. - + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address can be specified as a decimal, hexadecimal, or octal + number. + - - Specifies the type of debugging information generated by the - compiler. The default is . - + + Specifies the type of debugging information generated by the + compiler. The default is . + @@ -3168,185 +3193,185 @@ - - Specifies whether package-scoped members are accessible outside of - the assembly. In other words, package scope is treated as assembly - scope when emitting metadata. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - - - Corresponds to the /securescoping flag. - - - See the Visual J# Reference for details. - - - - ]]> - + + Specifies whether package-scoped members are accessible outside of + the assembly. In other words, package scope is treated as assembly + scope when emitting metadata. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + + + Corresponds to the /securescoping flag. + + + See the Visual J# Reference for details. + + + + ]]> + - - Specifies whether to disable language extensions. - - - The value of this property must be either all, net, - or an empty string. - - - - Corresponds to the /x flag. - - - See the Visual J# Reference for details. - - - - To disable only the .NET Framework extensions: - ]]> - To disable the .NET Framework extensions and the VJ++ 6.0 extensions: - ]]> - + + Specifies whether to disable language extensions. + + + The value of this property must be either all, net, + or an empty string. + + + + Corresponds to the /x flag. + + + See the Visual J# Reference for details. + + + + To disable only the .NET Framework extensions: + ]]> + To disable the .NET Framework extensions and the VJ++ 6.0 extensions: + ]]> + - - Specifies the location of assemblies referenced by way of the /reference flag. - - - - Corresponds to the /libpath:dir[;dir2] flag. - - - See the Visual J# Reference for details. - - + + Specifies the location of assemblies referenced by way of the /reference flag. + + + + Corresponds to the /libpath:dir[;dir2] flag. + + + See the Visual J# Reference for details. + + - - Associate Java-language/COM package names. - - - The value of this propery. must be package=namespace, @filename, - or an empty string. - - - - Corresponds to the /jcpa:package=namespace and /jcpa:@filename flags. - - - See the Visual J# Reference for details. - - - - Map package 'x' to namespace 'y': - ]]> - + + Associate Java-language/COM package names. + + + The value of this propery. must be package=namespace, @filename, + or an empty string. + + + + Corresponds to the /jcpa:package=namespace and /jcpa:@filename flags. + + + See the Visual J# Reference for details. + + + + Map package 'x' to namespace 'y': + ]]> + - - Specifies the code page to use for all source code files in the - compilation. - - - - Corresponds with the /codepage flag. - - - See the Visual J# Reference for details. - - + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + + See the Visual J# Reference for details. + + - - Specifies the warning level for the compiler to display. Valid values - are 0-4. The default is 4. - - - The warning level for the compiler to display. - - - - Corresponds with the /warn option. - - + + Specifies the warning level for the compiler to display. Valid values + are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn option. + + - - Controls which warnings should be reported as errors. - - - Override to avoid exposing this to build authors, as the Visual J# - compiler does not allow control over which warnings should be - reported as errors. - + + Controls which warnings should be reported as errors. + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not allow control over which warnings should be + reported as errors. + - - Reference packages - - - Override to avoid exposing this to build authors, as the Visual J# - compiler does not support package references. - + + Reference packages + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not support package references. + - - Link the specified modules into this assembly. - - - Override to avoid exposing this to build authors, as the Visual J# - compiler does not support linking modules. - + + Link the specified modules into this assembly. + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not support linking modules. + - - Gets the file extension required by the current compiler. - - - For the J# compiler, the file extension is always jsl. - + + Gets the file extension required by the current compiler. + + + For the J# compiler, the file extension is always jsl. + - - Gets the class name regular expression for the language of the - current compiler. - - - Class name regular expression for the language of the current - compiler. - + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + - - Gets the namespace regular expression for the language of the - current compiler. - - - Namespace regular expression for the language of the current - compiler. - + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + - - Override to avoid exposing the configuration setting for this - task as Visual J# will never support package references. - - - , as the Visual J# compiler will never - support package references. - + + Override to avoid exposing the configuration setting for this + task as Visual J# will never support package references. + + + , as the Visual J# compiler will never + support package references. + - - Represents an assembly-level attribute. - + + Represents an assembly-level attribute. + @@ -3355,43 +3380,43 @@ - - Typename of the assembly-level attribute. - + + Typename of the assembly-level attribute. + - - Value of the attribute. - + + Value of the attribute. + - - If then the value of the attribute will be - set as is, without actually looking for a matching constructor or - named properties. The default is . - - - if the value of the attribute should be set - as is; otherwise, . - + + If then the value of the attribute will be + set as is, without actually looking for a matching constructor or + named properties. The default is . + + + if the value of the attribute should be set + as is; otherwise, . + - - Indicates if the attribute should be generated. - - - if the attribute should be generated; - otherwise, . - + + Indicates if the attribute should be generated. + + + if the attribute should be generated; + otherwise, . + - - Indicates if the attribute should be not generated. - - - if the attribute should be not generated; - otherwise, . - + + Indicates if the attribute should be not generated. + + + if the attribute should be not generated; + otherwise, . + @@ -3458,11 +3483,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -3495,10 +3520,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -3519,28 +3544,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -3559,11 +3584,11 @@ - - override this. We will always use the base directory of the parent. - overriding without the TaskAttribute attribute prevents it being set - in the source xml - + + override this. We will always use the base directory of the parent. + overriding without the TaskAttribute attribute prevents it being set + in the source xml + @@ -3657,17 +3682,17 @@ - - copy constructor for FileSet. Required in order to - assign references of FileSet type where - AssemblyFileSets are used - - + + copy constructor for FileSet. Required in order to + assign references of FileSet type where + AssemblyFileSets are used + + - - Do a normal scan and then resolve assemblies. - + + Do a normal scan and then resolve assemblies. + @@ -3676,37 +3701,37 @@ - - Additional directories to search in for assembly references. - - - - loosely Corresponds with the /lib[path]: flag of the various compiler tasks. - - + + Additional directories to search in for assembly references. + + + + loosely Corresponds with the /lib[path]: flag of the various compiler tasks. + + - - Represents a compiler warning. - + + Represents a compiler warning. + - - A warning number, or comma-separated list of warnings, that you want - the compiler to suppress or report. - + + A warning number, or comma-separated list of warnings, that you want + the compiler to suppress or report. + - - If then the element will be processed; - otherwise, skipped. The default is . - + + If then the element will be processed; + otherwise, skipped. The default is . + - - If then the element will be skipped; - otherwise, processed. The default is . - + + If then the element will be skipped; + otherwise, processed. The default is . + @@ -3760,11 +3785,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -3797,10 +3822,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -3815,28 +3840,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -3876,25 +3901,25 @@ - - Create no debug information. - + + Create no debug information. + - - Enable attaching a debugger to the running program. - + + Enable attaching a debugger to the running program. + - - Enable attaching a debugger to the running program. - + + Enable attaching a debugger to the running program. + - - Only display assembler when the running program is attached to the - debugger. - + + Only display assembler when the running program is attached to the + debugger. + @@ -3949,20 +3974,20 @@ - - Not specified. - + + Not specified. + - - Fully sign the assembly. - + + Fully sign the assembly. + - - Only place the public key in the assembly, allowing the signature - to be added later. - + + Only place the public key in the assembly, allowing the signature + to be added later. + @@ -3991,12 +4016,12 @@ - - Represents an embedded resource. - - - Do not yet expose this to build authors. - + + Represents an embedded resource. + + + Do not yet expose this to build authors. + @@ -4007,20 +4032,20 @@ The manifest resource name of the embedded resource. - - Gets the physical location of the resource to embed. - - - The physical location of the resource to embed. - + + Gets the physical location of the resource to embed. + + + The physical location of the resource to embed. + - - Gets the manifest resource name to use when embedding the resource. - - - The manifest resource name to use when embedding the resource. - + + Gets the manifest resource name to use when embedding the resource. + + + The manifest resource name to use when embedding the resource. + @@ -4031,9 +4056,9 @@ - - Base class for collections that needs to be globally referencable. - + + Base class for collections that needs to be globally referencable. + @@ -4059,15 +4084,15 @@ - - Removes an item at a specific index. - - The zero-based index of the item to remove. + + Removes an item at a specific index. + + The zero-based index of the item to remove. - - Removes all items from the collection. - + + Removes all items from the collection. + @@ -4077,53 +4102,53 @@ The instance to verify. - - Checks whether the specified index is within the range of this - collection. - - The index to check. + + Checks whether the specified index is within the range of this + collection. + + The index to check. - - Gets a value indicating whether access to the collection is - synchronized (thread-safe). - - - . - + + Gets a value indicating whether access to the collection is + synchronized (thread-safe). + + + . + - - Gets the number of items in the collection. - - - The number of items in the collection. - + + Gets the number of items in the collection. + + + The number of items in the collection. + - - Gets an object that can be used to synchronize access to the - collection. - - - An object that can be used to synchronize access to the collection. - + + Gets an object that can be used to synchronize access to the + collection. + + + An object that can be used to synchronize access to the collection. + - - Gets a value indicating whether the collection has a fixed size. - - - . - + + Gets a value indicating whether the collection has a fixed size. + + + . + - - Gets a value indicating whether the collection has a fixed size. - - - . - + + Gets a value indicating whether the collection has a fixed size. + + + . + @@ -4254,10 +4279,10 @@ - - Gets or sets the item at the specified index. - - The zero-based index of the item to get or set. + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. @@ -4274,11 +4299,11 @@ The of the items in this collection. - - - Gets or sets the item at the specified index. - - The zero-based index of the item to get or set. + + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. @@ -4293,61 +4318,61 @@ The collection that should be enumerated. - - Advances the enumerator to the next item of the collection. - - - if the enumerator was successfully advanced - to the next item; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first item in the collection. - + + Sets the enumerator to its initial position, which is before the + first item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Represents a metadata file without assembly manifest. - + + Represents a metadata file without assembly manifest. + - - Returns a textual representation of the module, which can be used as - argument for command-line tools. - - - A textual representation of the path, file[,target]. - + + Returns a textual representation of the module, which can be used as + argument for command-line tools. + + + A textual representation of the path, file[,target]. + - - The path of the module. - + + The path of the module. + - - File name where the module should be copied to before it is compiled - into an assembly. - + + File name where the module should be copied to before it is compiled + into an assembly. + @@ -4387,9 +4412,9 @@ The zero-based index in at which copying begins. - - Removes all items from the collection. - + + Removes all items from the collection. + @@ -4526,48 +4551,48 @@ - - Gets a value indicating whether access to the collection is - synchronized (thread-safe). - - - . - + + Gets a value indicating whether access to the collection is + synchronized (thread-safe). + + + . + - - Gets the number of items in the collection. - - - The number of items in the collection. - + + Gets the number of items in the collection. + + + The number of items in the collection. + - - Gets an object that can be used to synchronize access to the - collection. - - - An object that can be used to synchronize access to the collection. - + + Gets an object that can be used to synchronize access to the + collection. + + + An object that can be used to synchronize access to the collection. + - - Gets a value indicating whether the collection has a fixed size. - - - . - + + Gets a value indicating whether the collection has a fixed size. + + + . + - - Gets a value indicating whether the collection has a fixed size. - - - . - + + Gets a value indicating whether the collection has a fixed size. + + + . + - + Gets or sets the item at the specified index. @@ -4587,57 +4612,57 @@ The collection that should be enumerated. - - Advances the enumerator to the next item of the collection. - - - if the enumerator was successfully advanced - to the next item; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first item in the collection. - + + Sets the enumerator to its initial position, which is before the + first item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - - One or more modules to compile into an assembly. - - - - - Define a global <moduleset> that can be referenced by - other tasks or types. - - - - - - - ]]> - - + + + One or more modules to compile into an assembly. + + + + + Define a global <moduleset> that can be referenced by + other tasks or types. + + + + + + + ]]> + + @@ -4656,9 +4681,9 @@ - - Represents a namespace to import. - + + Represents a namespace to import. + @@ -4675,38 +4700,38 @@ is . - - The name of the namespace to import. - - - The name of the namespace to import. - + + The name of the namespace to import. + + + The name of the namespace to import. + - - The name of the namespace to import. - - - The name of the namespace to import. - + + The name of the namespace to import. + + + The name of the namespace to import. + - - Indicates if the import should be generated. - - - if the import should be generated; otherwise, - . - + + Indicates if the import should be generated. + + + if the import should be generated; otherwise, + . + - - Indicates if the import should be not generated. - - - if the import should be not generated; - otherwise, . - + + Indicates if the import should be not generated. + + + if the import should be not generated; + otherwise, . + @@ -4862,10 +4887,10 @@ - - Gets or sets the item at the specified index. - - The zero-based index of the item to get or set. + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. @@ -4881,11 +4906,11 @@ The of the items in this collection. - - - Gets or sets the item at the specified index. - - The zero-based index of the item to get or set. + + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. @@ -4900,62 +4925,62 @@ The collection that should be enumerated. - - Advances the enumerator to the next item of the collection. - - - if the enumerator was successfully advanced - to the next item; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first item in the collection. - + + Sets the enumerator to its initial position, which is before the + first item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Represents a package. - + + Represents a package. + - - Name of the package to reference. Multiple package can be specified - with a single element as a semi-colon separated list of - package names. - + + Name of the package to reference. Multiple package can be specified + with a single element as a semi-colon separated list of + package names. + - - Indicates if the package should be passed to the task. - If then the package will be passed; - otherwise, skipped. The default is . - + + Indicates if the package should be passed to the task. + If then the package will be passed; + otherwise, skipped. The default is . + - - Indicates if the package should not be passed to the task. - If then the package will be passed; - otherwise, skipped. The default is . - + + Indicates if the package should not be passed to the task. + If then the package will be passed; + otherwise, skipped. The default is . + @@ -5010,11 +5035,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -5047,10 +5072,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -5065,28 +5090,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -5099,12 +5124,12 @@ - - copy constructor for FileSet. Required in order to - assign references of FileSet type where - ResourceFileSet are used - - + + copy constructor for FileSet. Required in order to + assign references of FileSet type where + ResourceFileSet are used + + @@ -5115,41 +5140,41 @@ - - Gets the manifest resource name for the specified resource file. - - The physical path of the resource file. - - The manifest resource name to be sent to the compiler. - + + Gets the manifest resource name for the specified resource file. + + The physical path of the resource file. + + The manifest resource name to be sent to the compiler. + - - Gets the manifest resource name for the file using both its physical - and logical path. - - The physical path of the resource file. - The logical location of the resource file. - - The manifest resource name to be sent to the compiler. - - - We use the relative path of the logical path, but the filename and - and the extension of the physical path to match VS.NET - + + Gets the manifest resource name for the file using both its physical + and logical path. + + The physical path of the resource file. + The logical location of the resource file. + + The manifest resource name to be sent to the compiler. + + + We use the relative path of the logical path, but the filename and + and the extension of the physical path to match VS.NET + - - Indicates the prefix to prepend to the actual resource. - This is usually the default namspace of the assembly. - + + Indicates the prefix to prepend to the actual resource. + This is usually the default namspace of the assembly. + - - Indicates whether prefixes should be dynamically generated by taking - the path of the resource relative to the basedir and appending it - to the specified prefix. The default is . - + + Indicates whether prefixes should be dynamically generated by taking + the path of the resource relative to the basedir and appending it + to the specified prefix. The default is . + @@ -5220,11 +5245,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -5257,10 +5282,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -5275,59 +5300,59 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Controls the behaviour of a compiler with regards to the reporting of - warnings. - - - - Instruct a compiler to report warning 0519 as an error. - - - - - - ]]> - - - - - Instruct a compiler not to report warning 0519 as an error, if the - release property is . - - - - - - ]]> - - + + Controls the behaviour of a compiler with regards to the reporting of + warnings. + + + + Instruct a compiler to report warning 0519 as an error. + + + + + + ]]> + + + + + Instruct a compiler not to report warning 0519 as an error, if the + release property is . + + + + + + ]]> + + diff --git a/Tools/nant/bin/NAnt.MSNetTasks.dll b/Tools/nant/bin/NAnt.MSNetTasks.dll index 4c6e165f9d25c4c6b274ab812e037dc868e814e2..3099966d516b9b59188864d9c26d7fd308fb026a 100755 GIT binary patch literal 28672 zcmeHPdw5)BnSZ}Cleso&liqJ|LR&g*(rJ=jQz$k`(>Bnip-GAbG@WElo1v3A;mnz~ zq1Fw{MR`Q6D=N4mg8OiBRd6ec3Mz=M6;WL6dU?3*>Wb_x3+wKq$ojzk-uIj{bEZ>- z^2a{=?9NHgd%pMbz2E!2-~BS(ap^G%5K$2CYp)SKfGSf&rJ@7aXdNz2HZ5ENS{!DP9;czw?%qD~)L4OTr+^+44FRS#4>Q1w97162=H zJy7*P)dN)z{6F$QAFr$N@Y+()jhB~&adTZkSHyU3gPOm9)L21WdO(vE0Y zna7$awESGs0!JBJPIQV4R^2`s#wum7J>ipKtWu_?OolO^43cJh8p>oC^U1h2hstCa ztCWF9eD*L_DTC#|PlmBdnP`~|W0f+oG8x7yW#VNrj8)2DYrtm@W0f+sWipIa%G8y~ zFy@m%@v)z$mdP+yDT5sfpFNEEWZd$aUM9nsPX^V1)2c6%Vaz9kYQQox%48Vx$)JcK zlYsV^)K#y3x_O!D#hu;~pe9rjr=BDh5rtOhT4D*l&2yZu3Dq$ZF=De`)n>h_n$+xA zXvI=W%mT?m#PP&zX1>1>Y7%o0)Xcen`FQ|WX$jPTQ1cn-gm2$KCz1-SsMEyW8Lz4e zs}{Z~4bAbQhVo1`y+QQlG#`E&N8f>F!hYsF!j5=&1uzFqKnY5rsSlly_|u#Zf0zpZ zrZmlpm@qLGBQ2Ca3jtR+VxA2ITAqD+cBGJiKWn3o+Hlm=!J;RLmMhdNjoN7OZi3^v z?+MWt@kMj2r+^9Hu!=UffUp_oICHiX(3HrmfO!r??ub;DRUpv}qhneilxRT!ZiS*D z()0(={H(2>ra7l-njLagny5fA3Ypjnjd_ODc{nOn43Ovx{~c)R-{ss=bA%a zh8)+_Mm^U=D_j$bH&GbvYko_R8qkoDk$TF5AZ2J>$C{FotC01<5|U7$Ic}VavbO%R z$b#W$i+=)1d-L-i_w&%K{Jfv~dFW#NyyyHpbRvFUKzVsZ z9?&iLc~kv7R8Bu{p`V8i!p}n&aLa)hjI@U#RI6Dt9@si6hA z67yJMr${i-M1zcZVj;@_BPjL8p@pn5P@J}5HbW*-Lh(O6 z%}pj8@|q^9LkHS7st5NA^am6^BWSMjTtES9LQ+NJiqY~;;MXx;W3~zbQrwpB#201E zZ2?_9y8<hVSvnTY7CseH2PFC-TIxQ5jx}B^B z%~ep7SPc+!o83}R%Y4mEs;DL8QxKdbZQ?8~u?CTs@6*r_@x1r=rlTm`pqALc_MyKz zW$eMQ;f#?R&=(}mgV0eXEl1upLfI4A1@e9bc?>p3oNrT&wG+n3P*#e@67adFAHzS# z!wBRXgBkP5pnb3m8(5mdF$NiK+kcPr>m1+1FCocWD1SbC2gQMJD2|%65%?5(dR{F> z%?l8A2E3^GHiYw=0IqU{!mBVytwXFi?jSX5daypYVlQ+tb$U&GO*hI|s*H{=tdOZD z9D;623nh?Jh?)`zZIaMg2z5wk20}<1+!#Vg86l(!W(<*^Zs5X{#LDWYLj6QeDSj@^ zLk5*b)9Kzv2(w1^qeiIngnokS9vc`B&)(CG@(=@AFPa!NMP|pEA`4?p!Fl4t`RKoo zfR1{OZX_VySt$9%=n)5@Q*3IABG@Itz&tI{4rPhWK+SHUJ-spJj#&L(wJVM@T7nDX zj>v4MJj#Zykn8Z}#N#5*WX?OEHgewBuFr!4qr|Q)NXKbRY}8gswdp)J(NuY&7z^A) zqh6wwgF*nTifnXX{JSdtmb8Y8Ss|yK6kTzEg6DFk@b3!K$rqPXqvRC%a@;-pRfRbj zs%XHe6C9AL!xf7Ca3M5!e&E_WPs(RXWW((cfRb%R-we7cA%PynbC3BJ+yg~D;$$j% z8OtT7^Ky#zO?kN#`>hxeSolU|^u9B)$yY`l=rs9(YbgW}#*6toIptNN$3chB$*Ys^ z1nw^jr>&qY?uSrWS!CR@@Fe`L=|ZRE%ZurjGs=rILr0p$^117+#4pCa|1HEmZC6m% zhQ4)1T3@Gp=E3LlPg6cjKO3)CK3oDPFwFkodoO++Wcm=^Z2v^wHpY^>jJ#Q}MvQzh zw981P4Xarn%a52=HZ$C;?>4M_#>{POOSbS|v))z6+6Bwlm@^8tmC82jeTCs{X5=Dc zV!%9LNGO%lh_3m5CK{c4o}*Qtvlxo?uMJ%THg&X8!lx-`{iR z3B2FK`xxHu<9!^j{_;I{HsVd-U5>X2Z!_K%c$0Wn;@w#Ho8QN>(Ym#Zez)U==Uz*(F(66@)&%L(oDQ$L{(-1tCp**GV=EAk=CP2lWKWU*c^W&Sx@nJs*vZ>{F92exr*O}u%6268QaPCNWrpD z2eK2on9s#Ba;BO}Ud$K9$4xi^#i~1oaN&%Y=tpw}Lmx9nMpL;=ek`eyZX!kA8)Wao zGm(FT3>s&y>#byQ;LMXbwM=l=Eyqn4l~CM?(pk8<*c6%L)J?Qdw|<@L5JpkN!v;6~ z@pQ^I(#^gWjA%*KvQygI>$io97%P`r#&98%P5awCcQHuZwhG3n5ioXi_FvekWR`{= z9{52XoY%ChYr_hMa6XU)yb+8=?8+=NpnvH$*qkWuSeMJ_fi`b*mVq0Yh|?x)$&Yfonlo z7VK7a^!b{bYwGAJz!*Iex-S%?-w0G;4$l*~Mqr=7jKDt^c)P%_3p^R-v|^Ee3CHNH z2*+I~(2DGe#ON;oLv%9oO~B^_QuLdV25O5=kH*N1UK$P2ZP8;0e>uu}zAo_FfFXJ^ zdKuua1ik{;K(k{U>!KJ-W@4PLV=>O}0|>|HMS*9>IqvQ_r#L3?Jpw-^@Jn${>siRe zXwj69i4PqQa(z%J$+Kt~YJi7r02W1YwUGv~KFHV7JX|omc=FTGps<>306Z@6s{+3( z@CkuW3H+tN7X`j5aE9Vo3j{6}xI*A6<#@b!n;F{Q7CkM=%=)M@&lmkp1eumEdp;Bco$%w&Y8YG@&(n1SfeiX6}1GI?P3pu zr_qfr_852?-Rxo~!3)rRF7|8i0`#DZ{T{p^{lvvIZ3(bvU947H4!^$aV)M0?z=Dm0 z=laMptr2Cmz{T1TFGRfS%e)@&!nDc7c7YeB?Jjm1co9mw*cISKXxzmnz>Cs*UF?0} zMd>CNyA`|`eb&Xk1Rm;;i~SJ1I6dKFzW^^zPrBGYfj5Qz)5Tr_4;{lfj-CGnUMD0eE$^&Bc}k)?j~SuZtxE?ZC1wwhp{$bgheR0dE=|bFsm| za`X>(yI4A~64)1AEFZW4_3ZmDc1@rQ*w0+-!+{z# z#5wv->_bDU_+$WY%aFprTSZK=Xyd@}A`D*<6nXq3CpQ4-E#}DJ3u? z@JfLb0s(N)Y+Nm1V3(@VWRSgDrsaA@{STYg2RJE(Mu{G%R+1hs1 z8Ed2tbxCXw^{B%L_o!>YZB!qP9Z<{Y^-%1n+M~V=*deyn zt7k#4SHFq9U!~M5v380oim#!RipKWcrAL>Ed7G}R(b}|re6Ubrso0Qg?)f! z^fmPi;BobBm81jcDUx&z<%3BYk#Jt%5xN4DI6VdKBB3W&|>z{9I*(a)S$xt6!^oK>w{e0T|Uz z2>p2%9#`|UsA8L=>bP30EdyK)$dn!z9#>nnjD$1brnDO*d;`K`+C6|1fGmFk;p?>% z5`JENOWmnG56UqusvTEf0c6TDgimTcfG=nn?J*S$oIv<`K#@oIwm>v+TzxjM4Divw zbTwNoP`X;8maDz0psrCjsfSckpe1lo;L^aAfvW-<+E{=mk#t$`8o(iehCoZ;MDRVJ zUnAiU3cN|+Z2~_h@DYJ01U@0~X9AxJ-iWyWDDVZ*^K$SQD8ZVK08Xv>IN;nGmKh2$ zJRtB;=m!YDJM?4p5p12pHy|(1rh*vl`Q}X+;gG-x+Kh$}!zk*7!WbM!IF9@hI24$))3$DSXb3T!k1+;w zFF+0N*$AH{P)AGF5MtPf8miF$GhB=wTtkTGN9Ur))(~R26g6I>1ddn~=J6{KUL|l1 ztpsH)phoMc72)-O8nuJ3Xaity5{{zF=^MOVCeM8l{`e`E30)KD07W0DpdF{1`K$=q zOOL|b-+L4SCVJ!`NGn+Lm5$hPSv9&ocF>W|9x=hO#a-()1#x_GPmF;tWG1ZyM8ziy4JyLQu zIH@~V7^9(ql(pZm5s8LUFluOc!Zz|Wg#C^Y?0CvTkA_BNo0W#L*y-pkj16Otm4$!CT$*^E8mTAS?INt-j4F=Ct6L{Dy?$qGQAE!diJaM_4r zl!lz08wrc&*-=UMTVCX`gNxi2cfcSoHs%SQ7=rzT<*a-e?-YkH#R)NOi{CrUDkHGO zHpgSkbAwEkeJ3%C86}K)+kL)et{-Q9FT0x=5@3q6ku9!gx({XU#bt%T0_7Bz*>$=S zV$stwI7Yv0z>6Jjkg2khj{Ve9kg0=i$uijs3!MvEh#X)_4;MO9B*2v2r3%1wAIe;3 z)1v4|AIjVTt{6^DaZM`W%Jbm9`!2ik}JAs0>iRhG7xjz3*+R-&+6lST#v_HJa3A6_)y;I`X!q~W4=5O zrJP(1@nIBa$&DhCerGtt1bI0>n93H6p&`dSv5Q=TNGu`G1h1>zW$g26zgv3J<62`W z?#WYG_lT{-+wmt)>UA0J8C+$I0So7MV=3!EC9BIEpRh9fN9{@$N-SL%ISr!=yX>jl zL}d(QabISC!IB(QvQe@lRz@0QC37HSXN?lMYkNN@lg*@ZJ`215cAC^$Q6n~dv zpZLjkN7xeglvzq?l94RR4?XTe0WMF(qAcYnjXjShOd1FlBKuxeQ-^2JK9iTY-#b zjO1ynVLPeQ&fzQ2`Mb7I4?0-Xd}Q)q24~IWpw#Ugnvs`BF|LSo@&$tdC=(PA9eR&5EwV}sbNfSoS;Fa2@mUbszx#M-F%Sc zxNJ+onUc|V!i&{lshTMb*a1)StwgF zx%3W9+IATu7>>7>@py18*2iLiI!!Zcq;k7aA8^!RS|yHS#Az5#DLDmss<=}rkh6n^ zWp|H_+qf>!3rC8v?hsI3z&kLAr1m?x>B;2`tHef+Y8m-a3_@~t#~rRSttZZHKl&`% zVwqz*GFcqD8Y5;dou^Au85?!YO-d?7D#xRWSb#Gn>AX8~Y1YOgh<_E~Rc*8`=NJV) z<##H(9H`WmT?p`DxY6jtaIe6J;q=6Ztsz=gerWyr=jv3$2igAEYjN3l0B7KD#{o9Q zdub>3_&aD9uJClwcKlJillFku&Hs-=?KXTnaBknt5>vNhSE3i;UK*qw(8IBNIL_2Q zP&$G20^5V@CfK0?##$V$oa-IHpfkP;;Y$$S2L1hz8iejH;8Z&R>>`AES#IhezCGYz z`N7=iAoOj)8k3?uq8S#<+zp9-yq#hP(~)|Zbs~2)I##w+a}M@JDZUc-^jhdBhi9LI zHLHVd#J3exk?AP+>X}~!p!3Q#oXK4TT2&s`ySwnGu0K!!TdcmCfkQnX22T|+zUAS^ za2ch@Yr%@WgtcPb?#KLfkFRz3d8o5^+OGWd_fG!sV_UEN?E1dz{^p&RQsm25UA}wn z>Su4zLUlo|e_9AP-y7=j&cr)6ppzEVl>(rKnKcN3u46YHApmNq7g{|B=Spxc2Nyy{ zg>(ov%na+Ad_(+gtPAS_{@|-=%nl@wLITPWsN+CAgSiYALRI}V)>=Oe3Trvh+Q@xx z8~U^Qld%oVTp~#>3xw*YX`x!gfnb7awNQjlBq_*y4SZvUg1pxdWFjkx;I3N;V-I!~ zxavWFA;O1i`~bqf}-QjQCy^^^C9IUavmIpV?e0Pjj*Kay&koe7$vDD0j)gwtlhmU|_hFeGA?T4(3dZ|Afo(F=zk62ixfx*z($B?9*F4Zx^-OmvFygdy`OZGKrCQ`-lH&$*OQe;95%Q^Fqj52&l zE_SfE`YjiqjqEz(Z#kW_F4um_$(+AbX|c;5s&|JVj4|F2M5q9$Twzr!CBsG0F!^|l z%Lk>6U|l%Wu&jPb{St(=`e~uC24q@@P;fu0jc@@jK`4T<2Y=y$IEsDp7AHIhh2^GL zW}4zsbQd@13Xv^maZ@hDv2ACuQ^pXtwj|rp@@u4OFU9U*alN1?x|Zo}EiJ7p+FDxM z^sR_+Z?IE|CVMc+8i#V=B zPxf{X=rU)}2Qb-?#F0EIsq81xSx#Zjy2MJ2_nNul@INqWnTPO$2HJ#S!F%4xVco;Z zzuxaBOH@pItg<0u1Hr8>+?c=?k6gSqpfiVi^?W~`a4yNQ__}op z)I8P`eEmBEZcg|__XVGXQU#kzx6LaxJs>iC72o+=jZ59|0i7>5)w-Z>41avd9DCNF zcVLo`MBciQwvH91cPU&4ZsHHq5UipXAYCW!xY##=7%9=i#*IQ3-$vhn73WH5<{a42 znn(Nsax{YUIG+~o#~YyM05Ju^Icp8{dU@CkY96wD5q%u|Qr>x8%^LYxkF(@boZX0H zAy!GY1^U~m4RAHqajUV;OG^H?;YO1ZkMjk0>=MDstS=W{8cD3+`$2au!1FEs19+3T zCZ82wWaSijJNWxW1AAqhCdBIf;t3K@mD6;bEO+6AS%+oL&m>kzs1;DBtzwY{EjrR3 zgQ1w97162=Hc%aYu vo!>Z)^r}zQ162=HJy7*P)dN)zR6S7jK-B|P4^%x+^+44FRS*2%^uT`u#lehM delta 7155 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 diff --git a/Tools/nant/bin/NAnt.MSNetTasks.xml b/Tools/nant/bin/NAnt.MSNetTasks.xml index 51409dc..8327211 100755 --- a/Tools/nant/bin/NAnt.MSNetTasks.xml +++ b/Tools/nant/bin/NAnt.MSNetTasks.xml @@ -50,20 +50,20 @@ - - Checks whether the task is initialized with valid attributes. - + + Checks whether the task is initialized with valid attributes. + - - Disassembles the PE file(s). - + + Disassembles the PE file(s). + - - Disassembles the specified PE file. - - The PE file to disassemble. + + Disassembles the specified PE file. + + The PE file to disassemble. @@ -80,9 +80,9 @@ The path of the output file could not be determined. - - Writes the disassembler options. - + + Writes the disassembler options. + @@ -115,76 +115,76 @@ - - Determines whether or not disassembling is needed. - - - if disassembling is needed; otherwise, - . - + + Determines whether or not disassembling is needed. + + + if disassembling is needed; otherwise, + . + - - Specifies whether or not the disassembler should combine the - /HEADER, /BYTE, and /TOKENS options. The default - is . - - - if the disassembler should combine the - /HEADER, /BYTE, and /TOKENS options; - otherwise, . The default is - . - - - - Corresponds to the /ALL flag. - - + + Specifies whether or not the disassembler should combine the + /HEADER, /BYTE, and /TOKENS options. The default + is . + + + if the disassembler should combine the + /HEADER, /BYTE, and /TOKENS options; + otherwise, . The default is + . + + + + Corresponds to the /ALL flag. + + - - Specifies whether or not the disassembler should generate the - IL stream bytes (in hexadecimal notation) as instruction comments. - The default is . - - - if the IL stream bytes should be generated - as instruction comments; otherwise, . The - default is . - - - - Corresponds to the /BYTE flag. - - + + Specifies whether or not the disassembler should generate the + IL stream bytes (in hexadecimal notation) as instruction comments. + The default is . + + + if the IL stream bytes should be generated + as instruction comments; otherwise, . The + default is . + + + + Corresponds to the /BYTE flag. + + - - Instructs NAnt to rebuild the output file regardless of the file - timestamps. The default is . - - - if the output file should be rebuilt - regardless of its timestamps; otherwise . - The default is . - + + Instructs NAnt to rebuild the output file regardless of the file + timestamps. The default is . + + + if the output file should be rebuilt + regardless of its timestamps; otherwise . + The default is . + - - Specifies whether or not the disassembler should include PE header - information and runtime header information in the output. The default - is . - - - if PE header information and runtime header - information should be included in the output; otherwise, - . The default is . - - - - Corresponds to the /HEADER flag. - - + + Specifies whether or not the disassembler should include PE header + information and runtime header information in the output. The default + is . + + + if PE header information and runtime header + information should be included in the output; otherwise, + . The default is . + + + + Corresponds to the /HEADER flag. + + @@ -196,36 +196,36 @@ - - Specifies whether or not the disassembler should include - references to original source lines. The default is . - - - if references to original source lines - should be included; otherwise, . The - default is . - - - - Corresponds to the /LINENUM flag. - - + + Specifies whether or not the disassembler should include + references to original source lines. The default is . + + + if references to original source lines + should be included; otherwise, . The + default is . + + + + Corresponds to the /LINENUM flag. + + - - Specifies whether or not the disassembler should suppress ILASM - code output. The default is . - - - if ILASM code output should be suppresses; - otherwise, . The default is - . - - - - Corresponds to the /NOIL flag. - - + + Specifies whether or not the disassembler should suppress ILASM + code output. The default is . + + + if ILASM code output should be suppresses; + otherwise, . The default is + . + + + + Corresponds to the /NOIL flag. + + @@ -245,103 +245,103 @@ - - Specifies whether or not the disassembler should enclose all names - in single quotation marks. By default, only names that don't match - the ILASM definition of a simple name are quoted. The default is - . - - - if all names should be enclosed in single - quotation marks; otherwise, . The default - is . - - - - Corresponds to the /QUOTEALLNAMES flag. - - + + Specifies whether or not the disassembler should enclose all names + in single quotation marks. By default, only names that don't match + the ILASM definition of a simple name are quoted. The default is + . + + + if all names should be enclosed in single + quotation marks; otherwise, . The default + is . + + + + Corresponds to the /QUOTEALLNAMES flag. + + - - Specifies whether or not the disassembler should generate - structured exception handling clauses in canonical (label) form. - The default is . - - - if structured exception handling clauses - should be generated in canonical form; otherwise, - . The default is . - - - - Corresponds to the /RAWEH flag. - - + + Specifies whether or not the disassembler should generate + structured exception handling clauses in canonical (label) form. + The default is . + + + if structured exception handling clauses + should be generated in canonical form; otherwise, + . The default is . + + + + Corresponds to the /RAWEH flag. + + - - Specifies whether or not the disassembler should generate - original source lines as comments. The default is . - - - if original source lines should be - generated as comments; otherwise, . - The default is . - - - - Corresponds to the /SOURCE flag. - - + + Specifies whether or not the disassembler should generate + original source lines as comments. The default is . + + + if original source lines should be + generated as comments; otherwise, . + The default is . + + + + Corresponds to the /SOURCE flag. + + - - Specifies whether or not the disassembler should generate metadata - token values as comments. The default is . - - - if metadata token values should be - generated as comments; otherwise, . The - default is . - - - - Corresponds to the /TOKENS flag. - - + + Specifies whether or not the disassembler should generate metadata + token values as comments. The default is . + + + if metadata token values should be + generated as comments; otherwise, . The + default is . + + + + Corresponds to the /TOKENS flag. + + - - Specifies whether or not the disassembler should use the UNICODE - encoding when generating the output. The default is ANSI. - - - if the output should be generated using - the UNICODE encoding; otherwise, . The - default is . - - - - Corresponds to the /UNICODE flag. - - + + Specifies whether or not the disassembler should use the UNICODE + encoding when generating the output. The default is ANSI. + + + if the output should be generated using + the UNICODE encoding; otherwise, . The + default is . + + + + Corresponds to the /UNICODE flag. + + - - Specifies whether or not the disassembler should use the UTF-8 - encoding when generating the output. The default is ANSI. - - - if the output should be generated using - the UTF-8 encoding; otherwise, . The - default is . - - - - Corresponds to the /UTF8 flag. - - + + Specifies whether or not the disassembler should use the UTF-8 + encoding when generating the output. The default is ANSI. + + + if the output should be generated using + the UTF-8 encoding; otherwise, . The + default is . + + + + Corresponds to the /UTF8 flag. + + @@ -408,13 +408,13 @@ - - The command-line arguments for the external program. - - - Overridden to ensure the <arg> elements would not be exposed - to build authors. - + + The command-line arguments for the external program. + + + Overridden to ensure the <arg> elements would not be exposed + to build authors. + @@ -426,25 +426,25 @@ - - Allows a Windows service to be controlled. - - - Starts the World Wide Web Publishing Service on the local computer. - - - ]]> - - - - Stops the Alerter service on computer 'MOTHER'. - - - ]]> - - + + Allows a Windows service to be controlled. + + + Starts the World Wide Web Publishing Service on the local computer. + + + ]]> + + + + Stops the Alerter service on computer 'MOTHER'. + + + ]]> + + @@ -453,9 +453,9 @@ - - Peforms actions on the service in order to reach the desired status. - + + Peforms actions on the service in order to reach the desired status. + @@ -503,77 +503,77 @@ instance for controlling the service identified by and . - - Holds the name of the service that should be controlled. - + + Holds the name of the service that should be controlled. + - - Holds the name of the computer on which the service resides. - + + Holds the name of the computer on which the service resides. + - - Holds the action that should be performed on the service. - + + Holds the action that should be performed on the service. + - - Holds the time, in milliseconds, the task will wait for a service - to reach the desired status. - + + Holds the time, in milliseconds, the task will wait for a service + to reach the desired status. + - - The name of the service that should be controlled. - + + The name of the service that should be controlled. + - - The name of the computer on which the service resides. The default - is the local computer. - + + The name of the computer on which the service resides. The default + is the local computer. + - - The action that should be performed on the service. - + + The action that should be performed on the service. + - - The time, in milliseconds, the task will wait for the service to - reach the desired status. The default is 5000 milliseconds. - + + The time, in milliseconds, the task will wait for the service to + reach the desired status. The default is 5000 milliseconds. + - - Defines the actions that can be performed on a service. - + + Defines the actions that can be performed on a service. + - - Starts a service. - + + Starts a service. + - - Stops a service. - + + Stops a service. + - - Restarts a service. - + + Restarts a service. + - - Pauses a running service. - + + Pauses a running service. + - - Continues a paused service. - + + Continues a paused service. + diff --git a/Tools/nant/bin/NAnt.NUnit.dll b/Tools/nant/bin/NAnt.NUnit.dll index a2731b087517f4375e564870d63ef8fb2a8c122b..cf7d5dc2dd22eeb17b93a92137ddada6f0d9eb6b 100755 GIT binary patch literal 8704 zcmeHM4R9QF6@UM|%jJ^Nkc2i(XiBypw3kq>X(*PKQZFBE38ZOA(zHN_aLH|wmA%{R z?p|qH(K37}!hnu4gP@KDMo}CF2S$-8A0oqmBZCZ}qvIe|1{G%n@nb|7@b}*C-EEQ< zkZ}f`aoc_S|GlsOd+-0Xx7mKt=P5!&QQYsoOY{Jqe5HiGH#r1xP0NEdbbr;;OCL~u zPcI#wGF?6I*pp5=tB=@FscE(7~pI^Nqa6Pbvs82=cg^Qls zQS9v{(w5FsaiWvKiTT`1HsGn_PT^*vQo#@h}<2vI& z5?cxl9;jyAp(};xla688P?T6Ng^+#exImW;XV?Lu#VUmvuY24 zYLZ%4ksq}&VbKfQpoHw8Y_k|5QRn<4q(ffG@`mcuYEhfmt%(z1v65noc2~zDH=6H6 z=T)Bm3VcOqRY-RM>)P|7Iz!*al&BVyU;8n0|9*Xgn3oj$4~2V*gey7DiMQn#`Uo27 zi9XLW%x~o9q9!rPY;&;?_EJ&gIzUKO&VUIy_MsA!aHrKkZqeti!z)5h?I z%InV;3=xkTk8?>UC@11k5ES$E<;cBQ?)R2&EPBLDLvpiV$rdqj-$+H`Dh-I zsEi*g=M&6Z(MQ0s#EN1-s8V2r`5{KL;ujm(&+Y>=y4(ln3q~m>%%$1-7@o2|k5^D* z_AjOD*Icw?S1?0MoGSSrXN9!0ubGQxjn9&t{WUUA;t8)2*!*YLND`fXz%{ZOs)?}v zN3upxcU~jw5zL2JBbf1_HR9LzAT#|nQY!D9HB!Rst@I2esk!(+%*}lF5S@W#3Ky^&A<)0$D0na?*UOwbGW^U4DjkmG$VY1TlokJ82 zj_c*ycJ}sww*dG%2y}UuWsk8kESN2bS z^19^s&^@6`;-i<_Y|C=CfV@sssu*omn?T1R1CbbgR_I}& z4+?!j=<7nOqO7w_Xs6IigchRg|J%{)qcM6|I6oI!U-1Sw9YQazV4ce=*u$49IFg5j z{#f|GM7x^as(7WMnp$GDv1-~JGHx?C;C2;C5%tJEr>TLN^GT8-WI z-T-}7wF4aq(B0}xETHED^oZIB^rDX%pHnGR;7>Eqn?*$GPt*R{~xgL>#bijy{u zle;@WRho%8H|!&-*Yc>T7oY}h56z>mm(U1i-}3=#(e}}NdLuvy?UPhP(Ph#ft$~+X zS{9)7=%J3*1!%K&HJwC#0qWDP1KK0#D#STL3+Rw9i|^KM#>m|%=x9|&yA|m1!0sk( zInc|#Ox+>~CFX4DQ7r{ot)Qdo2|>CqlQCLI=LCqyXdw**h{vIUoB;7SG|<%n;_+KV zhXcgpw}|c!5RXwKJsTh%qegl;KwXiWF>~Mck&IXq)#4=eM;u1Onlq{jg@Iu|= zBaGNnw3sFXRHZ$G7wG*y!ifEhPN7=@)Sx|vnf`bQ9U-0m5ug_BSG1HGa7=QQ654NQ z8S$aXXbrrqpsfK~j~-5?-2vLHy^3{`4^W@>8qgs@JYq+%OWoY zePG8U)=Ke}+}}|du~s@&kUwIrv@VeGh_ymX(cX&pr#FfYQ!UWHLpXPZsLy#obbNiE z<6HS{pZ-*=K8k*$SWR)Bp=qI}(7i&Zg3_K&!MfLF=`%RUO?^ z(TjGAwp~4oc{GUj8t|W@^`g_KU80WCW^G*kLA?E$PKzBW`d;V8xa>ekAwqO($D$H~lc3KTP08`#QaoT}uSm}$Bc#6_G z#1jRFYq1G2#K{3CPW!-#(*bazhmZ*Ep-1@jUakRIbw$MM`Jn)WwJMQ$aBbRdX9||F znfg0(Ub25@&h(NQ%c8BelTCY`;q;`vbXYh%oj2T>;%?irjB(Gjb2Ir{a)qqnq&?dy z^Vz(Nwpd2i$a!-Z$MP8HhMZ>Iaoe%XF&dh7JtIpy#y){C0+cNKaH-txO1lR2hMaKI z&#&8d3@S!6itjB(&gGm&3$8I?S_X|y6pJER_`N23cTkV%pkv#a?#)fuG-?;Te8DR* zY0~gU#lkH%n6uM0wz5}d7Te69g5&Vu z26ZZrftw5sKr*bl9S-_Y`S-Ia=?xkP{Qb0jrO`1AeJI=y7+z6rU)m}dqoXunp&+z7 zYtd+imj;I~YeYzp>!2}FToIkFYh=ePnHs#LFr(7eh~eh$odW~|^DRMa}Ipu1ps z1;?0cG3=x>MmFtSHdn-h=9rUH-dxdugJnN{3_-V@&8KtIb1g6xCd|nKmh&+K?=jqQ z$IKsFIBa@WDD>{WA@0U9)45Ot#nKgWo|!e0y*X??c7Dik_L<|@abPiGy5?BeQL$?0 z8`J&iY^aB#pvSP%(?jNDsM52#;Xtqoop3*3NS1@J-Y+e;T#rFNKB<#uj+vI}g{oEF zMF}3wv}GPh&j?wj5%m}oX$*dBi=w5WQNs-os&8UpeG_;pnt*O3 zfiIp3C?txq6JpR{K;2^QpWc2_Iz;uQ(jWkwvHn-R%;b{L1} zW-S(vat={GL?L0vs=nFprICAS40>S@uV<>&H~PIaic?)o8o3vr(a7E#IjMNGl5?#@ znw7|~61i33bwoB*;(!cjHM16Xj9i+5LBUMwg5FL3qpYdZ{iw_!m3pmy?>SSnQOZE@L86s*_R2dwOGX-p8%UP8% zotYwzppl8rd9^1ubl{thypOEHOH*mf(i7dSdPjTv+S5DQ*LLXJ49A()ho;h(bk#9ulLKJ=*ppM5*^WdD|7y{lka z8GRV@R60lZaelYs>lFUzF|0N0a?<&JJGW*3xFNgR@RVa;?sA~3gTH~Wc0aduZq2=l ze=C_O8O7@Av8?TUipUF$VaN*?YrT6a>8Y9O|J8`U1`&U=KQuE;E+G*<0?*;I-nqDU zr--ZwBmc4@>(CgXAsPkULW5}a(hlke?gib7HeU}#Uwen&YWE0wq|Sd5eOxfleW0)8s+V2J)|aqd(Eu#}N1qBsrQq zhNrtkryY6w|JKnM*8uPC^|0-RzbyV4u=dak;Wws^Ut;~pb{MTLDoAV@w1=T<%XiS- z_|;al%}adKutMs*5)v9aJfS7O}}_~w!3Sc|iU5sx6&eNdO<#k^YTI{-g6 zGAW?8UMS^js6GJAkAsb>gb`lyw)6~y^!Er+Dm=q$}WAE6Wvb*EV z%!ZgGC@m-=YE{}2B#K0((jU;$0!2uql}bZf9xX+cfFJM&g-59nks4?vXv?GDIWzl8 zoQ77asH)C-&fN37=XLKqy!HBTQiO=2I6wJ>=oqeibPD|E;1Jj~%YIfvk5xUt{FoYe ze);gU?HMz!Gv%5YW5Ud49p4zY3^$iG?5xqdZOF(tDJ!{PL3L|rdV3$yfQnG}p6?Il zXFEYP%jc;W(fOd@!pAKe0Sug-I2jnY=)iA`#DBihA)KJ|!Eq7Q%3tvsqQWC;h286T z+(~pQPzX8UWsGQkIpxz~22s33G7kKz5w5)r4{C2JuTL77;AP5G$2+mcsDbKS*wPPN`4mGg_}~&SJb0Q`EWO?EYSO zF5P8CUG5>|zD|3{QmoiR@Kug{4vj!Xa=#cHtU2U|3mB=^F=sgj2a)q=5W6Opks9o0 zs)K$hD}mTS$*79$6lKH#?g!>cJ^~(wK|0RG%kLqfO|)^f^y%DmE%U%R_yAAD&malh ze}xjgNgg5jBoC%y@(Z%7F_ch)#F{SJe=wunQF3X`Dq31DLMJvD?r)_{o1pXM5YWgi5 z2W5-eglDhMM^;5*G%U~&c$dJ31U@71b%7rVY>2Y_8i9iXZxr~|D9`nH^zLYkUX4Bn z_>oYWDp>w=73{;9z;p#m9>BPo?yb1JqMDwpcogu2jNb?3C^#O5_!+g-PMfit=dnG& zs(^E(wRD&8DyWeZlpY0E2m8x}_X4oRkOc-SZ-`zs^1^x_i(WNt0M?|~R;yY7c&Vxd z99D|}-_hTtSS%8`pGFSNi_`+v0V-M?c`W2^H{d26j#~=z({zYs)dj!~gxF201+_UE zVz;W5z#a&(J5(E0X)y_3b8e?QcL?nYy)PfqoX0VS>Hwr=|>?pppO81RJ2fjQ6r6o7}uzg4usg!$X(P#M*~bM)F4lT&>3K;*b8(ajfGf)egd6-djUH}20a#H z%k;}=otHu^prbKv_6Y@qgYLGoK3U~o!%rJ-bBZdi;eUmda(;|CH2er zT7h2@XbQ9i?h!aE@GAn32>h17?*Oi(?+N??pi(~p?8M&4@TY+7Sf@O$qfHep>Pe(D z0a&Hi0@mxxRUK`w=)!oJ?o+>^guWW%HK0FC>s`e=+8F2HWAu+PrJxCxlX zT0ajIL*NS3O=E>KY{9OIyBVOyN?wfd#ef$p>cs4@Gq=jfg z*^;?N@qNh3dI*6=bDlM6r!5+t%ttSC2boFsZ=+t@MYxVT+n=3uXw=F1GdaINq$$fE z6%8*xV9HL<+QL?um>)B}uP`xliWu{@oo1OOPNyZ=6O#GzW{XBn7iOdVTwk^%gRWGH zaPBa(Qx=Ms^-WuZ1C za*GMDc>z%WfbIFxATqFd0Wt7|*5klyGF{i4rT${qQYIZZ8hM7sa0W)=^$c}= zV=zOb7&Jtsk!J`9jcgf$T4^1v%Z;MPVX9*$%@1c@`Tyu@0s=_UXzi6nMn#GvI$DIzZzB<0c+LObrCZ*1Y zB(}-m235wQMtn36Z&>9F)^X(ik+R)#7JJahz^LHl5eL?u+}J_1QqhXS&S4~aRvByC z+dD2@+uqS(Txq%PtT8lg-V|tXXA&8TmQMTr%oS_aWU-`^o|AJYEQB>>C9~M8X+9jp ze@iTW8lVP6bzMesuy5Gt&e`ddF^tZ{Cu07lKrx*78wmeL!k%S$Z1CvJBmcjYa?U8$ zN^d&7l{a^JsIe@0z+tIRE+V6|T>LY|g74e-;(n;y4ao++wwy_4xvOyQ>Lj{5!dP(J z9a)dT2o2FFU?1(ks2|^&27&hjZo!z3pGW`nF(>&3!CtNnu0&rHoO>|;{VF8j(u-5U zs)^^(Eo4)gaMPzOO_C!*t)evyt_i9KzDYjh9ALrmNc02EHikfV!O7Cp9F|@ZnRdh- z{MO@}8FGMU;dB3_R^eiBH8qew#u$#|DFQ^`5Ikp+_ zi?I*FOZJzK%kc(N)ER+}3$3DTJM3?y4#4$zAM2pC7;*fa@@Byq_eF=jOqWEFpM!I; z6H+$hl9YlBXMg}(Fz*0#r$m!8IYYDJ?UZDIB)jD_1K$*S@I}CYA6$*ck%DvvGA`a5<8U1OEW1DFbQ% diff --git a/Tools/nant/bin/NAnt.NUnit.xml b/Tools/nant/bin/NAnt.NUnit.xml index e5dfa34..39d46d6 100755 --- a/Tools/nant/bin/NAnt.NUnit.xml +++ b/Tools/nant/bin/NAnt.NUnit.xml @@ -5,31 +5,31 @@ - - Carries data specified through the formatter element. - + + Carries data specified through the formatter element. + - - Gets or sets the type of the formatter. - - The type of the formatter. + + Gets or sets the type of the formatter. + + The type of the formatter. - - Gets or sets a value indicating whether output should be persisted - to a file. - - - if output should be written to a file; otherwise, - . The default is . - + + Gets or sets a value indicating whether output should be persisted + to a file. + + + if output should be written to a file; otherwise, + . The default is . + - - Gets or sets the extension to append to the output filename. - - The extension to append to the output filename. + + Gets or sets the extension to append to the output filename. + + The extension to append to the output filename. @@ -92,11 +92,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -129,10 +129,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -147,64 +147,64 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - The built-in formatter types. - + + The built-in formatter types. + - - A plaintext formatter. - + + A plaintext formatter. + - - An XML formatter. - + + An XML formatter. + - - Represents the FormatterElement of the NUnit task. - + + Represents the FormatterElement of the NUnit task. + - - Type of formatter. - + + Type of formatter. + - - Extension to append to the output filename. - + + Extension to append to the output filename. + - - Determines whether output should be persisted to a file. The default - is . - + + Determines whether output should be persisted to a file. The default + is . + @@ -271,11 +271,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -308,10 +308,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -326,28 +326,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + diff --git a/Tools/nant/bin/NAnt.NUnit1Tasks.dll b/Tools/nant/bin/NAnt.NUnit1Tasks.dll index f0bc28c0888c530921f33e225ebddca4a2cc05c5..a7bda372c6db238d49836ca4c80663e1ad70133e 100755 GIT binary patch literal 36864 zcmeHw3w)c^vFCi}lRn9^En9MMlHw4BBp}BR?1b7NX^hYUNXn%0~qAk6JEtf|NEiABYX)llR*kx&Np)K2zwy^)1b3RFq zQ<~oG{&s)6QqX*7=FFLyGiT16hh(v8%MD}`kq_^8-XXdNPkt>F`0ij7)#2&i3e#6B z9-DEGweqnUJv&pm*kIP(kxdN5`VyIpn~!Zv#zpp*Ld2VCpDwe3KDGvC8nuA%$xEk;|n#tR@==KwqIWN0fNpin-*Rrh~NN* zZXUw34|2P?G)nY5JL2fq=ZLC~rX3F+BSH@fuORT{1&pXQpJdhaR1W~^q_3rhY4X*r9(e4}`mycQBIEXD?18ce${r|tpzMMFk34V}A42isv#BCK-MfJ3-ZP0Tq5kb)j*8b4h0t)$3a_Z_ zcqNf@6bU>`0%u*DqRDtdXM|K7#gOez0n95H6>1`9&SH=5bEmTSIou|SHsC0>c@L_D zon_i`tj3W(LiM4hT2i)ibG!mdPa$XWMIpz&KJ~V*GSKo0WZ85oWO=-knAZ(}bsWEY zBE(CR=jMpbtRMFdMg0w){t|PiiMa*-arT~c4F2gwem=|lMSc#d9O>Elo+I3tFtQ)u zDt2W=#b+>$?2vNYlTjRjM}6!oi!dn0zx$c!0+hIy{biveMCdj8Q{*x3EY$1%>U#9W zbN9Q~pW{h{hcR|Xq2il%=w{i4K1_Ps3OOy67>W_-@ljJXsehQsof1^}Mj#BGLp!#e zePwK8x|r?JaSy|N;&wuZ38It7+>9S0$Eg>MQ{Z3>w3CI02II4!Fg}~DmNq{6$G@qK z?Vf_RTJUU7@Fq{N?ZSf4wWncZ;&IW@bhgKI%`up4x6$LbU3A7h?Y9QSn8Rc8MTF}e9DR#BiXP+u2pIxiB41aGdUV1;`I=ykq`&qdDU zfv&5FRJ7Dn#FyP=(V%-4sJ28=sObcX1Selq7mNfW0nRPwRzG=E^&AWLn~K6Ty+xJ|V*55=%7)p#daNH9I|n*> zNc<6h%OtXudp;z)7cjtZ!cLn5qm*kZ+1Y6dGls|2k#Xa&5!S_cA{}uAIqpITsdJhd z5G0FGL}a)r(1R|xLT(4ZDTKOCW@Gg~es)^K5l_?wA_3SXR0M+OjsRcYate})DpG+s z;u%hDf?or11U1Uel((&FW@0{HMRU+*k2x*Th_AWQ=I(K2lQp@?suwvYQ??P^3Anwe z%FahoCP1m9D?FVQq$ZEB(-FMmXgp4mXSL5$)bdfns>b;yM8CzehJBt}g1&~F_)>Pj zG6u^TbODf~U2nUW!3=i=(=QZyb_q;!S8{oBZWSJtj=LHUEoBW#PN4oexYLRw)sA%Ldn!=qf8dN;iXFdfAMUzPAMHjxLzQ^LcT@aTP_)+Mu9?MI^WNk|pd zGO5%yq)xUC-7k^JSczW4gZL=nVQeA~!o7rtu@WBR2ZTfk4`afk2*JU@g87n$V?&OL za|&`V0l+kgbJlX-YY@&s?pA{!i#qN$gPg-izd<+!xZ4fFIl$d%kcEuw62x2cc>F<@ zmzp%fp2dSbh7o6<;KAL-gL{TLHXaWiCp>saReY-q|6kbaU&so_Z~s?l60~}IeaOL> zlz#8|80AHv@Y4}Yya+NqTcHl+^gp! zhSS^Y7kEUejFCPIm^mT!3L}18^}M;47RbbAuU~=|a=|3&>wfG}OXdk<6X((i<9HaG z$OCaDau}P)Q$LP}v57o5dzQ#ytc1t-W6C%l#wPOMkXj;#v57p`Y?tsbR>FgBa?Wb- zc#g`USbs~}GKRK1w-G$@!c=81;K2^VgZqmIcL{Twt;T~5!-I9Bj@_?v$T6W2)(Z*? zHYYN%&88HjbB%5Smx0SUv{$1TdV|6x@L|m zg`MN&ERF@(YCk{REg*RJ1A5PkF0fBnr-Y*C6ZDDctWW5?GVy+J2W&-05$Yr3ypVdWmUNibq{2X7cUxvNZqj5*}(Nn@?WJ?Zh- zu>Ehf0YZ=821QGc?FVdhJU_UQSn7s%*|*QZCIWsOzxO^a9axqA*L3^_{XoPWBCbVpo z%p2QUd^oxgJ?lp(Kg$+4IBeq7XnanH=>5MSzs-BxHXl6-4oqFdzIK7_i|<7nQn_pK z7?Eix5vtrgETi}kV0F}v@4+*q;`@bJW}As*G(U>1GT>~E)t*Xp*~L|wDd=7=?c!JH z<}w9fuZ#{ z^Ow(`LufhGT115wVf?Oe!nt6zcji%a9_&Mc#GQc)A8;?R*Kb53;1IOk5zzFJ-{)Qm ziWC0_P$~nt_u*01A$?g2b21D-7> zV(q}j?O6G;zK|!(OtVB|A!k1Smvd$@C(fGd<;3ICBS8g6plAOvJxj5AA!@zVOBNDu zy}%VKuNPb`>xGP>tlR=n18uVzkaI^Cy2JpuG)-1@zeiB_h?&G{Dazk`anJs=K+*EaNhHpy#f>E!drn>~iq^PWNKah<=PDcCO{bs{)$^1(>*B%Nd0R^b`bafQ@Y5?74P+2~zsD?avx zM$QCL+r;fmJf1PG9b-BkZxofH$46MDXol9qLb6M+zTlSQT1dsB$Rx+T4#+836NF(E zFF?rHp^>vtX}g;_7C2OJTkHI`Gv}fW ze{zPYMt4ntuaLPLrs9q5?#%9dHkH|dof^?u%>YR5GdFb8S#A0&von`%=;{P{Iq-Y{ zb&Jz{>mo0#N7kn4pSLR*J7Ue_WWn0Gz7}tc1APMTy?8SZ?B%;r`D_t><-2pjnn4%f z4WCL|sK6^^df`yN)nkR|dTT%6E!L+2??5?B_gmipd=M~1KLp*O=dCAE{{qDw1S;|D5+ zQ2vs@2L(PS@QA<@LR{M_aGAjE0pj#`9j<;4%@cSwV3>APudfc# zFls||4Pcl)Tg`s^n!pDDqx9dax$pikdt-W-Ia>uj7XD5+M86OJ3~+AEi8UcwE^uoN z^L)x-y|>rg2>RD+xcohV&((atCX5piYpJYV4;xMvxIo}0foZ^#WJEA7wT-Hto~dP@ z|3Y9e!k(WK`937Cim#+L`^_ki^}j}W z+<%C2J?^;cB}nz$;5l*_Q8t|r)F|U$tQKDdZ$p$?m;e@{_flZhC`AR^Cz!%%i|ekU z577zWn=RO3)J>&Ink!Q75Gi%kDRtkKc6GRgU=2?SHiz?TI6Mxb56eb}GWdu=@nN5`Ac-I(kXh1#eY5X%YobX6-Lj z{IePW78mSl`Zu*3*m7NGy&_oB)P?QYsLPwWNrD~Fb6 z_ZaLy13QWC73@ZO#{N7q!k-NGs(l;9=-SyVRMg^p&{abhUd6o574Rp*}xtaY>ejl zp98i4J8r_~^B4GE#;UoXQDf_Yol36@rlT%S3$YhqnZNWOMAo>-V1Mu*0oHFYpK}m7 zAY>o2}FjR{z z?7qsGO3Mv)5%ir#TMc#@^qod&!LFn$oOh5XU)OaqejU3+QoOhxvD&wUB-%n4W(NX;Q1!&hu{}oi5l5GXECRI#b8rS5Xt}{SdX~~wgK_jMrL@5~dX~`vgK_jMqZU^L^pap>ba&upYYPQ&QszAIt-x%$ zm2~J15uwXjxUP4n1#(DQrYA_h*-S^U0 z4aR-%rPmF{eNRyHS!~NI7Wci678#8D-cOx^-AJ5ilk|jOY*`&{b^n{jg6!*^6g-=y zTrK0UlV)p7ytI?f(3p(hWz=an+k+2Vm(e8#J1_Vsu;LA2t~GeHVR3 zFx~ew-DxoH`vA@2Lk)Vwea}$sxf?l zvr>DD)E-^7h$$X?Q#k)9lv0~@xs+3vC-NLW<$s4Cj$eBz=T)`r0o`lupX-HkblLOL zK&0qxZmWnXw(Y}rN84O#NokM%lKgk?m$sHIx9R#? z{>C)EF9jIH+mF3#1pCk+-hS*kgLwOC2HlFi;|$p|&LCc$zDdi~5xQUCBLbfg_)~!| z2z*uG8v@@FXj$B<0`MV<2%IXE8B%Tpe4N?=XVcjN7XcoDJxqzvPb)vEx~$deFyJP2 z2jEt9w~ElODj%gTYe0Qht+V#1he00!z00~vcy3ltW8SlbgmtZYMy0HCtG-MrYf;s0 zwA)%+^((cGwp4L0PggxEl;42zK9rHq4doALwWx~h6x~{N5T74^4R9*mFYrfI0sD~k z3#LPFwVkqFtBL{!tEbtY5c@x2&8wbe-)>z{y_*hO7gjgfcMJWS0`IpzRy~{A>9*>p z>?c5Z#%`xatAAzx)cQ&FK^mrO)o<+=tXtJv_N!KX_#Jx;I~_~%`3>uKKuh6#0G>e2L9{xzrVXvSYtHbE zS=pKufXz;~uTdR9?U=>zE$g+K&AxVZq-FpX25PguM&cbm+xcPNuz0mm;ATiZLJ7dx zl#=ppf$dT|Ec7ucFA`XRb@zHdJX|{)5y#oLf;j6|5NF#%>gL+d`wywZwO{n#P5)f` zCI4Y*b(rq2J%W3H2W!9Pzfrwa`z`+`)CrOMP>w|o((UTp$V2|SRWkAzB=3#9jJ8)s zUIV-)^01Y_>hrpP4E}t_f4{m_y<^`c~xB)z1iAKYpaeB!!-`W4S+q-*`RCz>=K*T8Oz;h!nsi$ zh+gI#rW>L;CuMym`g#BDbZ2zf8Mf}P`hfG6y1(jr)ZQ1JPIuFfqn~st>{p_XBCdYV zkT}u~6sc&OT}Z+$HoJbq4zA4!Ti&kDj#F*x#ccSe^DG^rHGF-y`&zN?R||AJxx% zuY&SzK&IFh^H*3esvr6qt>2=y3-D!M3Y0(k4gm)Jw_BC=9KaXxRmexA{0PeD`CkRx z1juqK6lSZ@zNH>ekE`d@%j#7%#cs2|Z~w^tg&p!;;rop5 zcfLXYkpFW3`}_y|hx{M&Kkfe?{*cq)oZ&2VRydbB?{hxte8KsOVb5hp>S!)hB~mpu%)&c@{~KKlGBVAyvL;8s7E z(*iH|{}Sc*`(Fn<=zo);!#p<#{HVZB3H*Y?txDVelh6;VGcDG&7|`enY)1L`Z)P2ux?d|HkZK0c{|KlsM( z6hMVDaSh6GK!uZS1m!t^3dhkpz-HXvDcsmi27Ml&qSKLsEt(Ig=nTlS=uALGXW_m8 zH*0{3&cXeFMdt!4T7VVI!YAJ|P(B}{Vc`~gCdvz8g@uz6!{x9-;WWaq8&)XlfqsP< z-GbUJfC^E58p@XdD(tM=QGPF=!cKY~%3A>y_R;fE-Ug^JAI?O%A5c*ec3HF?P+`w} zF3LLr6=wH&fS17{3p3{elrykMVTalQ_zyT&S@b?Yg}k&3@Po)Mimt=#v*>z2MK|Ew zVj+XALLA27b00j$G1&&6S0FpsfOmpYf$R_<-zY)_efTc+Ec!Jh`_f8^+7Ex4DHg53 zNb;_y_`==0(8jm?#xZCK-^8~1K6kvlPfJ?{FJV8zuc8iGu*&TpN+-{!)r&Iu*3}y_ zseF4+BDX8o+MiBS*ZO2`D4k#GW(N}ad@@_g)!H*Wn9NOJ>2TBOWM4jo@4y`0dP!zz zAel|%-7Kwica#Wat*mssc(#JXqMl?fUo4eqDAbmSF3>s?`2?*W%4CvR-HoCMO{KNz zL@LvRUsx&HvOYQB=92{(hLH`>GM4PiXA^YMKzf2_xDy?2HmS9=F2!%#B=@@6UDU;` zSEh3LBrKtUT%Vgwr?ye|Fen49#opwoSYDjSB@G9y*>)KmN?oOWuIFzT>J|5K_$$W1YIz>6Ju&BSE@Lr$D>`0<}nLHfM{Tv+baj7fQpWL@* zJD#~@Hc!iv`I0X3KkccQExsq zkaRKPz1y|w92(_#V0x2mX%WpMkT8D>X{DrSQb%FdnfNV+Kcssp$JFJ-P0LFR;}|Q& z*^L_aY%Owl6z1tM9pGB8EOfD#OGn$4!-ypNhVn^0*-RPi9=$8GXmGI89YAmwNo%wC zTb)t^#~bIV=0VDt;lZ3Lbho!Joyg^=7a%#XEj=tQ*+nuoE)oexg+a_nfOl{Zb8LHR z$5I3d_2%9F6qqnt+ZpGsVY*5kcit;Y=iN@Qic6%#v<@+VX}ZKTjzh7A$pwUK;Iv&L zKnlV;&KhYjjM}nv?8S zjIbOX)jmgi66v92Z!aqP`jQw06F&$9iE(kIUI04qLuI_kFh{bVRwtAFInKTK@&J>m zBb!X*lLgZt3VdCe?QU_%#Q|^ze88!+z{~6F(d~I!YirkJ3Ul5gj7!+PnISAlJPD~6 zGZd@1_tYi}Ns8J@~U(Jzi(8EvoJi+Uk?1QWHsDOuVkw(Uvf(

Ntn6kr=~N<9Vu9znp-dj0 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 diff --git a/Tools/nant/bin/NAnt.NUnit1Tasks.xml b/Tools/nant/bin/NAnt.NUnit1Tasks.xml index 1dc317d..941273b 100755 --- a/Tools/nant/bin/NAnt.NUnit1Tasks.xml +++ b/Tools/nant/bin/NAnt.NUnit1Tasks.xml @@ -5,14 +5,14 @@ -

- The whole test suite started. - + + The whole test suite started. + - - The whole test suite ended. - + + The whole test suite ended. +
@@ -72,11 +72,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -109,10 +109,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -127,42 +127,42 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Prints information about running tests directly to the build log. - + + Prints information about running tests directly to the build log. + - Not used, all output goes to Log class. + Not used, all output goes to Log class. - Called when the whole test suite has started. + Called when the whole test suite has started. - Called when the whole test suite has ended. + Called when the whole test suite has ended. Convert a stack trace line into something that can be clicked on in an IDE output window. @@ -207,35 +207,35 @@ - - Stops running tests when a test causes an error. The default is - . - - - Implies haltonfailure. - + + Stops running tests when a test causes an error. The default is + . + + + Implies haltonfailure. + - - Stops running tests if a test fails (errors are considered failures - as well). The default is . - + + Stops running tests if a test fails (errors are considered failures + as well). The default is . + - - Cancel the individual tests if they do not finish in the specified - time (measured in milliseconds). Ignored if fork is disabled. - + + Cancel the individual tests if they do not finish in the specified + time (measured in milliseconds). Ignored if fork is disabled. + - - Tests to run. - + + Tests to run. + - - Formatters to output results of unit tests. - + + Formatters to output results of unit tests. + @@ -243,25 +243,25 @@ - - Base name of the test result. The full filename is determined by this - attribute and the extension of formatter. - + + Base name of the test result. The full filename is determined by this + attribute and the extension of formatter. + - - Directory to write the reports to. - + + Directory to write the reports to. + - - Class name of the test. - + + Class name of the test. + - - Assembly to load the test from. - + + Assembly to load the test from. + @@ -269,20 +269,20 @@ - - Stop the build process if an error occurs during the test run. - + + Stop the build process if an error occurs during the test run. + - - Stop the build process if a test fails (errors are considered failures - as well). - + + Stop the build process if a test fails (errors are considered failures + as well). + - - The application configuration file to use for the NUnit test domain. - + + The application configuration file to use for the NUnit test domain. + @@ -336,11 +336,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -373,10 +373,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -391,98 +391,98 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Carries data specified through the test element. - + + Carries data specified through the test element. + - - Determines if the unit test needs running. - - - if unit test needs running, otherwise, - . - - - - Determines if the test needs running by looking at the date stamp - of the test assembly and the test results log. - - + + Determines if the unit test needs running. + + + if unit test needs running, otherwise, + . + + + + Determines if the test needs running by looking at the date stamp + of the test assembly and the test results log. + + - - Runs a Suite extracted from a TestCase subclass. - + + Runs a Suite extracted from a TestCase subclass. + - - Creates the formatters to be used when running this test. - + + Creates the formatters to be used when running this test. + - - Returns the output file or null if does not use a file. - + + Returns the output file or null if does not use a file. + - - Returns the test suite from a given class. - - - The assemblyQualifiedName parameter needs to be in form: - "full.qualified.class.name,Assembly" - + + Returns the test suite from a given class. + + + The assemblyQualifiedName parameter needs to be in form: + "full.qualified.class.name,Assembly" + - - Gets the collection of registered formatters. - - Collection of registered formatters. + + Gets the collection of registered formatters. + + Collection of registered formatters. - - Gets the result of the test. - - The result of the test. + + Gets the result of the test. + + The result of the test. - - Prints information about running tests in plain text. - + + Prints information about running tests in plain text. + - Sets the Writer the formatter is supposed to write its results to. + Sets the Writer the formatter is supposed to write its results to. - Called when the whole test suite has started. + Called when the whole test suite has started. - Called when the whole test suite has ended. + Called when the whole test suite has ended. Convert a stack trace line into something that can be clicked on in an IDE output window. @@ -502,15 +502,15 @@ - - Gets or sets the total run-time of a test. - - The total run-time of a test. + + Gets or sets the total run-time of a test. + + The total run-time of a test. - - Prints detailed information about running tests in XML format. - + + Prints detailed information about running tests in XML format. + @@ -525,14 +525,14 @@ - - Called when the whole test suite has started. - + + Called when the whole test suite has started. + - - Called when the whole test suite has ended. - + + Called when the whole test suite has ended. + diff --git a/Tools/nant/bin/NAnt.NUnit2Tasks.dll b/Tools/nant/bin/NAnt.NUnit2Tasks.dll index 547279ef673eb340ccbafee66b4376a805bcc196..657180c2e232511219117212153fc5ddf7ca14a7 100755 GIT binary patch literal 32768 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 - - Specifies a list of categories to include. - + + Specifies a list of categories to include. + - - Specifies a list of categories to exclude. - + + Specifies a list of categories to exclude. + - - Represents a certain group of test cases or fixtures. - + + Represents a certain group of test cases or fixtures. + - - A name of a category, or comma-separated list of names. - + + A name of a category, or comma-separated list of names. + - - If then the category will be processed; - otherwise, skipped. The default is . - + + If then the category will be processed; + otherwise, skipped. The default is . + - - If then the category will be skipped; - otherwise, processed. The default is . - + + If then the category will be skipped; + otherwise, processed. The default is . + @@ -75,17 +75,33 @@ Initializes a new instance of the class. + + + Initializes a new instance of the + class as a wrapper for + the specified list. + + + The list that is wrapped by the newly created instance. + + Initializes a new instance of the class with the specified instance. + + The collection to use to initialize the new instance with. + Initializes a new instance of the class with the specified array of instances. + + The collection to use to initialize the new instance with. + @@ -96,89 +112,15 @@ if there are no categories. - + - Adds a to the end of the collection. + Adds the elements of a array to the end of the + collection. - The to be added to the end of the collection. - The position into which the new element was inserted. - - - - Adds the elements of a array to the end of the collection. - - The array of elements to be added to the end of the collection. - - - - Adds the elements of a to the end of the collection. - - The to be added to the end of the collection. - - - - Determines whether a is in the collection. - - The to locate in the collection. - - if is found in the - collection; otherwise, . - - - - - Determines whether a with the specified - value is in the collection. - - The argument value to locate in the collection. - - if a with value - is found in the collection; otherwise, - . - - - - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. - - - - Retrieves the index of a specified object in the collection. - - The object for which the index is returned. - - The index of the specified . If the is not currently a member of the collection, it returns -1. - - - - - Inserts a into the collection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - - - Returns an enumerator that can iterate through the collection. - - - A for the entire collection. - - - - - Removes a member from the collection. - - The to remove from the collection. - - - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + The array of elements to be added to the end of + the collection. + @@ -186,45 +128,9 @@ The name of the to get. - - - Enumerates the elements of a . - - - - - Initializes a new instance of the class - with the specified . - - The collection that should be enumerated. - - - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - - - - - Sets the enumerator to its initial position, which is before the - first element in the collection. - - - - - Gets the current element in the collection. - - - The current element in the collection. - - - Runs tests using the NUnit V2.2 framework. + Runs tests using the NUnit V2.6 framework. @@ -303,24 +209,50 @@ - - Runs the tests and sets up the formatters. - + + Runs the tests and sets up the formatters. + + + + + Gets a new EventListener to use for the unit tests. + + + A new EventListener created with a new EventCollector that + is initialized with . + + + Log writer to send test output to. + + + + + Gets the logging threshold to use for a test runner based on + the current threshold of this task. + + + The logging threshold to use when running a test runner. + - - Stop the test run if a test fails. The default is . - + + Stop the test run if a test fails. The default is . + + + + + Indicate whether or not to label the text output as the tests run. + - - Tests to run. - + + Tests to run. + - - Formatters to output results of unit tests. - + + Formatters to output results of unit tests. + @@ -328,35 +260,35 @@ - - Name of the assembly to search for tests. - + + Name of the assembly to search for tests. + - - Name of a specific testfixture to run. If not specified then all - testfixtures are run. - + + Name of a specific testfixture to run. If not specified then all + testfixtures are run. + - - Assemblies to include in test. - + + Assemblies to include in test. + - - Assemblies to scan for missing assembly references. - + + Assemblies to scan for missing assembly references. + - - Categories of test cases to include or exclude. - + + Categories of test cases to include or exclude. + - - Build fails on failure. The default is . - + + Build fails on failure. The default is . + @@ -365,19 +297,19 @@ - - The application configuration file to use for the NUnit test domain. - If not specified, NAnt will try to use a configuration name matching - the file name of the assembly with extension ".config". - + + The application configuration file to use for the NUnit test domain. + If not specified, NAnt will try to use a configuration name matching + the file name of the assembly with extension ".config". + - - Gets all assemblies specified for these tests. - - - All assemblies specified for these tests. - + + Gets all assemblies specified for these tests. + + + All assemblies specified for these tests. + @@ -431,11 +363,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -468,10 +400,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -486,34 +418,34 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Custom TestDomain, similar to the one included with NUnit, in order - to workaround some limitations in it. - + + Custom TestDomain, similar to the one included with NUnit, in order + to workaround some limitations in it. + @@ -522,20 +454,20 @@ - - Runs a single testcase. - - The test assembly. - The application configuration file for the test domain. - List of files to scan for missing assembly references. - - The result of the test. - + + Runs a single testcase. + + The test assembly. + The application configuration file for the test domain. + List of files to scan for missing assembly references. + + The result of the test. + - - Helper class called when an assembly resolve event is raised. - + + Helper class called when an assembly resolve event is raised. + @@ -564,21 +496,21 @@ An that contains the event data. - - Holds the list of directories that will be scanned for missing - assembly references. - + + Holds the list of directories that will be scanned for missing + assembly references. + - - Holds the list of assemblies that can be scanned for missing - assembly references. - + + Holds the list of assemblies that can be scanned for missing + assembly references. + - - Holds the loaded assemblies. - + + Holds the loaded assemblies. + diff --git a/Tools/nant/bin/NAnt.SourceControlTasks.dll b/Tools/nant/bin/NAnt.SourceControlTasks.dll index 3374df58594f68a86841b3ed70a9c7fc9bb6e0e7..82e44da1f2301d2c8c2f9ed6a38201be6e148b41 100755 GIT binary patch literal 40960 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 CcL2Kp diff --git a/Tools/nant/bin/NAnt.SourceControlTasks.xml b/Tools/nant/bin/NAnt.SourceControlTasks.xml index 2e5cb8f..9e1791a 100755 --- a/Tools/nant/bin/NAnt.SourceControlTasks.xml +++ b/Tools/nant/bin/NAnt.SourceControlTasks.xml @@ -5,44 +5,44 @@ - - A base class for creating tasks for executing CVS client commands on a - CVS repository. - + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + - - A base class for creating tasks for executing CVS client commands on a - CVS repository. - + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + - - Name of the environmental variable specifying a users' home - in a *nix environment. - + + Name of the environmental variable specifying a users' home + in a *nix environment. + - - Used on windows to specify the location of application data. - + + Used on windows to specify the location of application data. + - - The environment variable that holds path information. - + + The environment variable that holds path information. + - - The environment variable that holds the location of the - .cvspass file. - + + The environment variable that holds the location of the + .cvspass file. + - - Property name used to specify the source control executable. This is - used as a readonly property. - + + Property name used to specify the source control executable. This is + used as a readonly property. + @@ -51,245 +51,245 @@ - - Build up the command line arguments, determine which executable is being - used and find the path to that executable and set the working - directory. - - The process to prepare. + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. - - Adds a new global option if none exists. If one does exist then - the use switch is toggled on or of. - - The common name of the option. - The option value or command line switch - of the option. - true if the option should be - appended to the commandline, otherwise false. + + Adds a new global option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch + of the option. + true if the option should be + appended to the commandline, otherwise false. - - Adds a new command option if none exists. If one does exist then - the use switch is toggled on or of. - - The common name of the option. - The option value or command line switch - of the option. - true if the option should be - appended to the commandline, otherwise false. + + Adds a new command option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch + of the option. + true if the option should be + appended to the commandline, otherwise false. - - Set up the environment variables for a process. - - A process to setup. + + Set up the environment variables for a process. + + A process to setup. - - Append the files specified in the fileset to the command line argument. - Files are changed to use a relative path from the working directory - that the task is spawned in. - + + Append the files specified in the fileset to the command line argument. + Files are changed to use a relative path from the working directory + that the task is spawned in. + - - Derive the location of the version control system from the environment - variable PATH. - - The file information of the version control system, - or null if this cannot be found. + + Derive the location of the version control system from the environment + variable PATH. + + The file information of the version control system, + or null if this cannot be found. - - The name of the passfile, overriden for each version control system (VCS). - + + The name of the passfile, overriden for each version control system (VCS). + - - The path to the specific home directory of the version control system, - this can be where the binary files are kept, or other app - information. - + + The path to the specific home directory of the version control system, + this can be where the binary files are kept, or other app + information. + - - The environment variable that defines where the version control system - (VCS) home variable is kept. - + + The environment variable that defines where the version control system + (VCS) home variable is kept. + - - The name of the version control system (VCS) executable file. - + + The name of the version control system (VCS) executable file. + - - - The root variable contains information on how to locate a repository. - Although this information is in different formats it typically must - define the following: - - server location - protocol used to communicate with the repository - repository location on the server - project location in the repository - - - + + + The root variable contains information on how to locate a repository. + Although this information is in different formats it typically must + define the following: + + server location + protocol used to communicate with the repository + repository location on the server + project location in the repository + + + - - Destination directory for the local sandbox. If destination is not specified - then the current directory is used. - - - Root path of the local sandbox. - - - - Root path of the local sandbox. - - + + Destination directory for the local sandbox. If destination is not specified + then the current directory is used. + + + Root path of the local sandbox. + + + + Root path of the local sandbox. + + - - The password for logging in to the repository. - - - The password for logging in to the repository. - + + The password for logging in to the repository. + + + The password for logging in to the repository. + - - The full path to the cached password file. If not specified then the - environment variables are used to try and locate the file. - + + The full path to the cached password file. If not specified then the + environment variables are used to try and locate the file. + - - Holds a collection of globally available options. - + + Holds a collection of globally available options. + - - A collection of options that can be used to modify the default behavoir - of the version control commands. See the sub-tasks for implementation - specifics. - + + A collection of options that can be used to modify the default behavoir + of the version control commands. See the sub-tasks for implementation + specifics. + - - Command-line arguments for the program. The command line arguments are used to specify - any cvs command options that are not available as attributes. These are appended - after the command itself and are additive to whatever attributes are currently specified. - - - <cvs-checkout cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant" - module="nant" - destination="e:\test\merillcornish\working" - readonly="true" - quiet="true" - commandline="-n" - cvsfullpath="C:\Program Files\TortoiseCVS\cvs.exe" - /> -
- Produces the cvs command: - c:\Program Files\TortoiseCVS\cvs.exe -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant -q checkout -n nant -
+ + Command-line arguments for the program. The command line arguments are used to specify + any cvs command options that are not available as attributes. These are appended + after the command itself and are additive to whatever attributes are currently specified. + + + <cvs-checkout cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant" + module="nant" + destination="e:\test\merillcornish\working" + readonly="true" + quiet="true" + commandline="-n" + cvsfullpath="C:\Program Files\TortoiseCVS\cvs.exe" + /> +
+ Produces the cvs command: + c:\Program Files\TortoiseCVS\cvs.exe -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant -q checkout -n nant +
- - The name of the command that is going to be executed. - + + The name of the command that is going to be executed. + - - Used to specify the version control system (VCS) files that are going - to be acted on. - + + Used to specify the version control system (VCS) files that are going + to be acted on. + - - The executable to use for ssh communication. - + + The executable to use for ssh communication. + - - The environment name for the ssh variable. - + + The environment name for the ssh variable. + - - The name of the version control system executable. - + + The name of the version control system executable. + - - Get the command line arguments for the task. - + + Get the command line arguments for the task. + - - Default value for the recursive directive. The default is - . - + + Default value for the recursive directive. The default is + . + - - Default value for the quiet command. - + + Default value for the quiet command. + - - Default value for the really quiet command. - + + Default value for the really quiet command. + - - An environment variable that holds path information about where - cvs is located. - + + An environment variable that holds path information about where + cvs is located. + - - Name of the password file that cvs stores pserver - cvsroot/ password pairings. - + + Name of the password file that cvs stores pserver + cvsroot/ password pairings. + - - The default compression level to use for cvs commands. - + + The default compression level to use for cvs commands. + - - The default use of binaries, defaults to use sharpcvs. - + + The default use of binaries, defaults to use sharpcvs. + - - The name of the cvs executable. - + + The name of the cvs executable. + - - The temporary name of the sharpcvslib binary file, to avoid - conflicts in the path variable. - + + The temporary name of the sharpcvslib binary file, to avoid + conflicts in the path variable. + - - Environment variable that holds the executable name that is used for - ssh communication. - + + Environment variable that holds the executable name that is used for + ssh communication. + - - Property name used to specify on a project level whether sharpcvs is - used or not. - + + Property name used to specify on a project level whether sharpcvs is + used or not. +
@@ -299,253 +299,255 @@ - Converts a value to a - representation that can be interpreted by cvs. + Converts a date value to a string representation that can be + interpreted by cvs. - to convert. + Date to convert. - interpretation of . + String interpretation of . - - Build up the command line arguments, determine which executable is being - used and find the path to that executable and set the working - directory. - - The process to prepare. + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. - - Override to append any commands before the modele and files. - + + Override to append any commands before the modele and files. + - - Append the command line options or commen names for the options - to the generic options collection. This is then piped to the - command line as a switch. - + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + - - Add the given argument to the command line options. Note that are not explicitly - quoted are split into seperate arguments. This is to resolve a recent issue - with quoting command line arguments. - - + + Add the given argument to the command line options. Note that are not explicitly + quoted are split into seperate arguments. This is to resolve a recent issue + with quoting command line arguments. + + - - The environment name for the ssh variable. - + + The environment name for the ssh variable. + - - The name of the cvs binary, or cvs.exe at the time this - was written. - + + The name of the cvs binary, or cvs.exe at the time this + was written. + - - The name of the pass file, or .cvspass at the time - of this writing. - + + The name of the pass file, or .cvspass at the time + of this writing. + - - The name of the version control system specific home environment - variable. - + + The name of the version control system specific home environment + variable. + - - Specify if the module is needed for this cvs command. It is - only needed if there is no module information on the local file - system. - + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + - - Used to specify the version control system (VCS) files that are going - to be acted on. - + + Used to specify the version control system (VCS) files that are going + to be acted on. + - - Get the cvs file set. - + + Get the cvs file set. + - - The name of the cvs executable. - + + The name of the cvs executable. + - - The full path to the cvs binary used. The cvs tasks will attempt to - "guess" the location of your cvs binary based on your path. If the - task is unable to resolve the location, or resolves it incorrectly - this can be used to manually specify the path. - - - A full path (i.e. including file name) of your cvs binary: - On Windows: c:\vcs\cvs\cvs.exe - On *nix: /usr/bin/cvs - + + The full path to the cvs binary used. The cvs tasks will attempt to + "guess" the location of your cvs binary based on your path. If the + task is unable to resolve the location, or resolves it incorrectly + this can be used to manually specify the path. + + + A full path (i.e. including file name) of your cvs binary: + On Windows: c:\vcs\cvs\cvs.exe + On *nix: /usr/bin/cvs + - - - The cvs root variable has the following components: - - - [protocol]:[username]@[servername]:[server path] -
    -
  • protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation.
  • -
  • username: [username]
  • -
  • servername: cvs.sourceforge.net
  • -
  • server path: /cvsroot/nant
  • -
-
-
- - NAnt anonymous cvsroot: - - :pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant - - + + + The cvs root variable has the following components: + + + [protocol]:[username]@[servername]:[server path] +
    +
  • protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation.
  • +
  • username: [username]
  • +
  • servername: cvs.sourceforge.net
  • +
  • server path: /cvsroot/nant
  • +
+
+
+ + NAnt anonymous cvsroot: + + :pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant + +
- - The module to perform an operation on. - - - The module to perform an operation on. This is a normal file/folder - name without path information. - - - In NAnt the module name would be: - nant - + + The module to perform an operation on. + + + The module to perform an operation on. This is a normal file/folder + name without path information. + + + In NAnt the module name would be: + nant + - - - if the SharpCvsLib binaries that come bundled - with NAnt should be used to perform the cvs commands, - otherwise. - - - You may also specify an override value for all cvs tasks instead - of specifying a value for each. To do this set the property - sourcecontrol.usesharpcvslib to . - - - If you choose not to use SharpCvsLib to checkout from cvs you will - need to include a cvs.exe binary in your path. - - - - To use a cvs client in your path instead of sharpcvslib specify - the property: - >property name="sourcecontrol.usesharpcvslib" value="false"< - The default settings is to use sharpcvslib and the setting closest - to the task execution is used to determine which value is used - to execute the process. - For instance if the attribute usesharpcvslib was set to false - and the global property was set to true, the usesharpcvslib is - closes to the point of execution and would be used and is false. - Therefore the sharpcvslib binary would NOT be used. - + + + if the SharpCvsLib binaries that come bundled + with NAnt should be used to perform the cvs commands, + otherwise. + + + You may also specify an override value for all cvs tasks instead + of specifying a value for each. To do this set the property + sourcecontrol.usesharpcvslib to . + + + If you choose not to use SharpCvsLib to checkout from cvs you will + need to include a cvs.exe binary in your path. + + + + To use a cvs client in your path instead of sharpcvslib specify + the property: + >property name="sourcecontrol.usesharpcvslib" value="false"< + + The default settings is to use sharpcvslib and the setting closest + to the task execution is used to determine which value is used + to execute the process. + + For instance if the attribute usesharpcvslib was set to false + and the global property was set to true, the usesharpcvslib is + closes to the point of execution and would be used and is false. + Therefore the sharpcvslib binary would NOT be used. + - - The executable to use for ssh communication. - + + The executable to use for ssh communication. + - - Indicates if the output from the cvs command should be supressed. - The default is . - + + Indicates if the output from the cvs command should be supressed. + The default is . + - - Indicates if the output from the cvs command should be stopped. - The default is . - + + Indicates if the output from the cvs command should be stopped. + The default is . + - - if the sandbox files should be checked out in - read only mode. The default is . - + + if the sandbox files should be checked out in + read only mode. The default is . + - - if the sandbox files should be checked out in - read/write mode. The default is . - + + if the sandbox files should be checked out in + read/write mode. The default is . + - - Compression level to use for all net traffic. This should be a value from 1-9. -
-
- NOTE: This is not available on sharpcvslib. -
+ + Compression level to use for all net traffic. This should be a value from 1-9. +
+
+ NOTE: This is not available on sharpcvslib. +
- - Produces an XML report that represents the cvs changes from the given - start day, to a given end date. - - - Report changes in NAnt from 1st of June 2004 until 25th of July 2004. - - - ]]> - - + + Produces an XML report that represents the cvs changes from the given + start day, to a given end date. + + + Report changes in NAnt from 1st of June 2004 until 25th of July 2004. + + + ]]> + + - - The command being executed. - + + The command being executed. + - - Name of the xml file that will contain the cvs log information. - + + Name of the xml file that will contain the cvs log information. + - - The earliest change to use in the cvs log command. - + + The earliest change to use in the cvs log command. + - - The latest date to use in the cvs log command. - + + The latest date to use in the cvs log command. + - - The cvs command to execute. - + + The cvs command to execute. + - - Override use of sharpcvslib, needs to be true. - + + Override use of sharpcvslib, needs to be true. +
@@ -575,61 +577,61 @@ - - Checks out a CVS module to the required directory. - - - Checkout NAnt. - - - ]]> - - - - - Checkout NAnt revision named 0_85 to the - folder c:\src\nant\v0.85. - - - - ]]> - - So the nant module tagged with revision 0_85 will be checked - out in the folder v0.85 under the working/ destination directory. -
This could be used to work on different - branches of a repository at the same time.
-
- - - Checkout NAnt with specified revision date to the - folder c:\src\nant\2003_08_16. - - - - ]]> - - + + Checks out a CVS module to the required directory. + + + Checkout NAnt. + + + ]]> + + + + + Checkout NAnt revision named 0_85 to the + folder c:\src\nant\v0.85. + + + + ]]> + + So the nant module tagged with revision 0_85 will be checked + out in the folder v0.85 under the working/ destination directory. +
This could be used to work on different + branches of a repository at the same time.
+
+ + + Checkout NAnt with specified revision date to the + folder c:\src\nant\2003_08_16. + + + + ]]> + +
- - The command being executed. - + + The command being executed. + @@ -637,55 +639,55 @@ - - Specify the revision to checkout. This corresponds to the "sticky-tag" - of the file. - + + Specify the revision to checkout. This corresponds to the "sticky-tag" + of the file. + - - Sticky tag or revision to checkout. - + + Sticky tag or revision to checkout. + - - Specify the revision date to checkout. The date specified is validated - and then passed to the cvs binary in a standard format recognized by - cvs. - + + Specify the revision date to checkout. The date specified is validated + and then passed to the cvs binary in a standard format recognized by + cvs. + - - Specify a directory name to replace the module name. Valid names - include any valid filename, excluding path information. - + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + - - Specify a directory name to replace the module name. Valid names - include any valid filename, excluding path information. - + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + - - The name of the cvs command that is going to be executed. - + + The name of the cvs command that is going to be executed. + - - Executes the cvs login command which appends or updates an entry to the - specified .cvspass file. - - - Update .cvspass file to include the NAnt anonymous login. - - - ]]> - - + + Executes the cvs login command which appends or updates an entry to the + specified .cvspass file. + + + Update .cvspass file to include the NAnt anonymous login. + + + ]]> + + @@ -693,111 +695,111 @@ - - Update the .cvspass file with the given password. If the passfile - is not specified then the default search locations are used: - - CVS_PASSFILE/.cvspass - HOME/.cvspass - USERPROFILE/.cvspass TODO: Confirm that this is valid - behavior or if it is going to give problems with the - cvsnt implementation. - - + + Update the .cvspass file with the given password. If the passfile + is not specified then the default search locations are used: + + CVS_PASSFILE/.cvspass + HOME/.cvspass + USERPROFILE/.cvspass TODO: Confirm that this is valid + behavior or if it is going to give problems with the + cvsnt implementation. + + - - Password to append or update to the .cvspass file. - + + Password to append or update to the .cvspass file. + - - The full path to the .cvspass file. The default is ~/.cvspass. - - + + The full path to the .cvspass file. The default is ~/.cvspass. + + - - The current working directory. - + + The current working directory. + - - The repository root string. - + + The repository root string. + - - Executes the cvs command specified by the command attribute. - - - Checkout NAnt. - - - ]]> - - + + Executes the cvs command specified by the command attribute. + + + Checkout NAnt. + + + ]]> + + - - The cvs command to execute. - + + The cvs command to execute. + - - Specify if the module is needed for this cvs command. - + + Specify if the module is needed for this cvs command. + - - Exports a cvs module in preperation for a release (i.e. the CVS version - folders are not exported). - - - Export the most recent NAnt sources from cvs. - - - ]]> - - - - - Export NAnt revision named your_favorite_revision_here to the - folder c:\src\nant\replacement_for_module_directory_name. - - **NOTE**: filesets names for the export task must be - prefixed with the module name. This is different than other tasks. - - - - - - - - - ]]> - - + + Exports a cvs module in preperation for a release (i.e. the CVS version + folders are not exported). + + + Export the most recent NAnt sources from cvs. + + + ]]> + + + + + Export NAnt revision named your_favorite_revision_here to the + folder c:\src\nant\replacement_for_module_directory_name. + + **NOTE**: filesets names for the export task must be + prefixed with the module name. This is different than other tasks. + + + + + + + + + ]]> + + - - The command being executed. - + + The command being executed. +
@@ -811,9 +813,9 @@ - - No shortening. Do not shorten module paths if -d specified. - + + No shortening. Do not shorten module paths if -d specified. + @@ -827,82 +829,82 @@ - - If a directory is specified indicates whether sub-directories should - also be processed. - - - if the sub-directories should be tagged; - otherwise, . The default is . - + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + - - Specify the revision to update the file to. This corresponds to the "sticky-tag" - of the file. - + + Specify the revision to update the file to. This corresponds to the "sticky-tag" + of the file. + - - Specify the revision date to update to. The version of the file that - existed at the date specified is retrieved. - - - A valid date time value, which is then converted to a format that - cvs can parse. - + + Specify the revision date to update to. The version of the file that + existed at the date specified is retrieved. + + + A valid date time value, which is then converted to a format that + cvs can parse. + - - Specify a directory name to replace the module name. Valid names - include any valid filename, excluding path information. - + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + - - The export command name for the cvs client. - + + The export command name for the cvs client. + - - Tags all sources in the remote repository with a given tag. - - - - Unlike tag, the rtag command acts only on sources that are in the repository. - Any modified sources on the local file system will NOT be tagged with this - command, so a commit should be performed before an rtag is done. - - - NOTE: Although a working directory is not necessary to perform the command - one must be specified in order to remain in compliance with the cvs library. - - - - Tag NAnt sources remotely. - - - ]]> - - - - Remove a tag from the remote repository. - - - ]]> - - + + Tags all sources in the remote repository with a given tag. + + + + Unlike tag, the rtag command acts only on sources that are in the repository. + Any modified sources on the local file system will NOT be tagged with this + command, so a commit should be performed before an rtag is done. + + + NOTE: Although a working directory is not necessary to perform the command + one must be specified in order to remain in compliance with the cvs library. + + + + Tag NAnt sources remotely. + + + ]]> + + + + Remove a tag from the remote repository. + + + ]]> + + @@ -911,17 +913,17 @@ - - Append the tag information to the commandline. - + + Append the tag information to the commandline. + - - The name of the tag to assign or remove. - - - The name of the tag to assign or remove. - + + The name of the tag to assign or remove. + + + The name of the tag to assign or remove. + @@ -945,14 +947,14 @@ - - If a directory is specified indicates whether sub-directories should - also be processed. - - - if the sub-directories should be tagged; - otherwise, . The default is . - + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + @@ -966,14 +968,14 @@ - - Indicates the revision date of the file that the tag should be - applied to. - - - A valid date which specifies the revision point that the tag will - be applied to. - + + Indicates the revision date of the file that the tag should be + applied to. + + + A valid date which specifies the revision point that the tag will + be applied to. + @@ -987,9 +989,9 @@ - - The name of the cvs command that is going to be executed. - + + The name of the cvs command that is going to be executed. + @@ -1032,9 +1034,9 @@ - - Cvs command to be executed. - + + Cvs command to be executed. + @@ -1043,17 +1045,17 @@ - - Append the tag information to the commandline. - + + Append the tag information to the commandline. + - - The name of the tag to assign or remove. - - - The name of the tag to assign or remove. - + + The name of the tag to assign or remove. + + + The name of the tag to assign or remove. + @@ -1077,14 +1079,14 @@ - - If a directory is specified indicates whether sub-directories should - also be processed. - - - if the sub-directories should be tagged; - otherwise, . The default is . - + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + @@ -1098,14 +1100,14 @@ - - Indicates the revision date of the file that the tag should be - applied to. - - - A valid date which specifies the revision point that the tag will - be applied to. - + + Indicates the revision date of the file that the tag should be + applied to. + + + A valid date which specifies the revision point that the tag will + be applied to. + @@ -1130,64 +1132,64 @@ - - The name of the cvs command that is going to be executed. - + + The name of the cvs command that is going to be executed. + - - Not used - + + Not used + - - Specify if the module is needed for this cvs command. It is - only needed if there is no module information on the local file - system. - + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + - - Updates a CVS module in a local working directory. - - - Update nant. - - - ]]> - - - - - Update your NAnt revision named your_favorite_revision_here in - the folder c:\src\nant\replacement_for_module_directory_name. - - - - - - - - ]]> - - + + Updates a CVS module in a local working directory. + + + Update nant. + + + ]]> + + + + + Update your NAnt revision named your_favorite_revision_here in + the folder c:\src\nant\replacement_for_module_directory_name. + + + + + + + + ]]> + + - - The command being executed. - + + The command being executed. + @@ -1200,69 +1202,69 @@ - - If . new directories will be created on the local - sandbox. The default is . - + + If . new directories will be created on the local + sandbox. The default is . + - - If empty directories copied down from the - remote repository will be removed from the local sandbox. - The default is . - + + If empty directories copied down from the + remote repository will be removed from the local sandbox. + The default is . + - - If the local copy of the file will be - overwritten with the copy from the remote repository. The default - is . - + + If the local copy of the file will be + overwritten with the copy from the remote repository. The default + is . + - - Specifies if the command should be executed recursively. The - default is . - - - The -R option is on by default in cvs. - + + Specifies if the command should be executed recursively. The + default is . + + + The -R option is on by default in cvs. + - - Specify the revision to update the file to. This corresponds to the - "sticky-tag" of the file. - + + Specify the revision to update the file to. This corresponds to the + "sticky-tag" of the file. + - - Sticky tag or revision to update the local file to. - - - A valid cvs tag. - + + Sticky tag or revision to update the local file to. + + + A valid cvs tag. + - - Specify the revision date to update to. The version of the file that - existed at the date specified is retrieved. - - - A valid date time value, which is then converted to a format that - cvs can parse. - + + Specify the revision date to update to. The version of the file that + existed at the date specified is retrieved. + + + A valid date time value, which is then converted to a format that + cvs can parse. + - - Specify if the module is needed for this cvs command. It is - only needed if there is no module information on the local file - system. - + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + - - The name of the cvs command that is going to be executed. - + + The name of the cvs command that is going to be executed. + @@ -1277,11 +1279,11 @@ - - Indicates whether the entires in the .cvsignore should be used to limit the - file list; to exclude files in .cvsignore, otherwise - . The default is . - + + Indicates whether the entires in the .cvsignore should be used to limit the + file list; to exclude files in .cvsignore, otherwise + . The default is . + diff --git a/Tools/nant/bin/NAnt.VSNetTasks.dll b/Tools/nant/bin/NAnt.VSNetTasks.dll index 9e77b69019e04cd05a0c94f680ab6d7bec5443ae..37f8c3aca2bf541eb1199340fc8652741c53c815 100755 GIT binary patch literal 180224 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

{c_*Y%bjHANH`vd=~{$#U5B#ps_ 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πKoFP1hp-zbs77?+Lz*kd=){M#$l6^C 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

#T&a4&+u$IG@Ol2yzkQ8=gTMU5zfH42 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 diff --git a/Tools/nant/bin/NAnt.VSNetTasks.xml b/Tools/nant/bin/NAnt.VSNetTasks.xml index 8220497..7a67649 100755 --- a/Tools/nant/bin/NAnt.VSNetTasks.xml +++ b/Tools/nant/bin/NAnt.VSNetTasks.xml @@ -5,9 +5,9 @@ -

- Analyses Microsoft Visual Studio .NET 2003 (Everett) solution files. - + + Analyses Microsoft Visual Studio .NET 2003 (Everett) solution files. +
@@ -20,14 +20,14 @@ No project with unique identifier could be located. - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the underlying task. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + @@ -51,15 +51,15 @@ A project GUID in the solution file does not match the actual GUID of the project in the project file. - - Translates a project path, in the form of a relative file path or - a URL, to an absolute file path. - - The directory of the solution. - The project path to translate to an absolute file path. - - The project path translated to an absolute file path. - + + Translates a project path, in the form of a relative file path or + a URL, to an absolute file path. + + The directory of the solution. + The project path to translate to an absolute file path. + + The project path translated to an absolute file path. + @@ -84,20 +84,20 @@ - - Returns a number representing how much this file fits this project type. - - - - - - This enables the override in other providers. Do not return big numbers, mainly when compring only on filename. - + + Returns a number representing how much this file fits this project type. + + + + + + This enables the override in other providers. Do not return big numbers, mainly when compring only on filename. + - - Analyses Microsoft Visual Studio .NET 2002 (Rainier) solution files. - + + Analyses Microsoft Visual Studio .NET 2002 (Rainier) solution files. + @@ -246,9 +246,9 @@ - - Private var containing custom properties. - + + Private var containing custom properties. + @@ -267,29 +267,29 @@ The macro cannot be expanded. - - Builds the list of folders that should be scanned for assembly - references. - - - The list of folders that should be scanned for assembly references. - + + Builds the list of folders that should be scanned for assembly + references. + + + The list of folders that should be scanned for assembly references. + - - The projects to build. - + + The projects to build. + - - The projects to scan, but not build. - - - These projects are used to resolve project references and are - generally external to the solution being built. References to - these project's output files are converted to use the appropriate - solution configuration at build time. - + + The projects to scan, but not build. + + + These projects are used to resolve project references and are + generally external to the solution being built. References to + these project's output files are converted to use the appropriate + solution configuration at build time. + @@ -303,52 +303,52 @@ - - The name of the solution configuration to build. - - - - Generally release or debug. Not case-sensitive. - - + + The name of the solution configuration to build. + + + + Generally release or debug. Not case-sensitive. + + - - The name of platform to build the solution for. - + + The name of platform to build the solution for. + - - Gets the solution configuration to build. - + + Gets the solution configuration to build. + - - The directory where compiled targets will be placed. This - overrides path settings contained in the solution/project. - + + The directory where compiled targets will be placed. This + overrides path settings contained in the solution/project. + - - WebMap of URL's to project references. - + + WebMap of URL's to project references. + - - Fileset of projects to exclude. - + + Fileset of projects to exclude. + - - Set of folders where references are searched when not found in path - from project file (HintPath). - + + Set of folders where references are searched when not found in path + from project file (HintPath). + - - Includes Visual Studio search folders in reference search path. - The default is . - + + Includes Visual Studio search folders in reference search path. + The default is . + @@ -362,163 +362,163 @@ - - Set of properties set at solution level. Builders for projects in solution may or may not use them. - - - - TODO: some documentataion which properties could be defined here. - - + + Set of properties set at solution level. Builders for projects in solution may or may not use them. + + + + TODO: some documentataion which properties could be defined here. + + - - Gets the list of folders to scan for assembly references. - - - The list of folders to scan for assembly references. - + + Gets the list of folders to scan for assembly references. + + + The list of folders to scan for assembly references. + - - Defines how the project is using the ATL library. - + + Defines how the project is using the ATL library. + - - Don't use ATL. - + + Don't use ATL. + - - Use ATL in a Static Library. - + + Use ATL in a Static Library. + - - Use ATL in a Shared DLL. - + + Use ATL in a Shared DLL. + - - Defines how the project is using the MFC library. - + + Defines how the project is using the MFC library. + - - Don't use MFC. - + + Don't use MFC. + - - Use MFC in a Static Library. - + + Use MFC in a Static Library. + - - Use MFC in a Shared DLL. - + + Use MFC in a Shared DLL. + - - Indicates the possible ways in which precompiled header file use is - specified in a Visual C++ project. - - - The integer values assigned match those specified in the Visual C++ - project file for each setting. - > + + Indicates the possible ways in which precompiled header file use is + specified in a Visual C++ project. + + + The integer values assigned match those specified in the Visual C++ + project file for each setting. + > - - Precompiled header file use not specified. - + + Precompiled header file use not specified. + - - Don't use a precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yc. - + + Don't use a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + - - Create precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yc. - + + Create precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + - - Automatically create precompiled header file if necessary. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yc. - + + Automatically create precompiled header file if necessary. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + - - Use a precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yu. - + + Use a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yu. + - - Represents a single mapping from URL project path to physical project - path. - + + Represents a single mapping from URL project path to physical project + path. + - - Specifies the URL of the project file, or a URL fragment to match. - - - The URL of the project file or the URL fragment to match. - + + Specifies the URL of the project file, or a URL fragment to match. + + + The URL of the project file or the URL fragment to match. + - - Specifies the actual path to the project file, or the path fragment - to replace. - - - The actual path to the project file or the path fragment to replace - the URL fragment with. - + + Specifies the actual path to the project file, or the path fragment + to replace. + + + The actual path to the project file or the path fragment to replace + the URL fragment with. + - - Specifies whether the mapping is case-sensitive or not. - - - A boolean flag representing the case-sensitivity of the mapping. Default is . - + + Specifies whether the mapping is case-sensitive or not. + + + A boolean flag representing the case-sensitivity of the mapping. Default is . + - - Indicates if the URL of the project file should be mapped. - - - if the URL of the project file should be - mapped; otherwise, . - + + Indicates if the URL of the project file should be mapped. + + + if the URL of the project file should be + mapped; otherwise, . + - - Indicates if the URL of the project file should not be mapped. - - - if the URL of the project file should not - be mapped; otherwise, . - + + Indicates if the URL of the project file should not be mapped. + + + if the URL of the project file should not + be mapped; otherwise, . + @@ -591,11 +591,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -628,10 +628,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -652,38 +652,38 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Gets the output path of the reference, without taking the "copy local" - setting into consideration. - - The solution configuration that is built. - - The full output path of the reference. - + + Gets the output path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The full output path of the reference. + @@ -699,35 +699,35 @@ - - Gets the complete set of assemblies that need to be referenced when - a project references this component. - - The solution configuration that is built. - - The complete set of assemblies that need to be referenced when a - project references this component. - + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + - - Gets the timestamp of the reference. - - The solution configuration that is built. - - The timestamp of the reference. - + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + - - Gets a value indicating whether the reference is managed for the - specified configuration. - - The solution configuration that is built. - - if the reference is managed for the - specified configuration; otherwise, . - + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The solution configuration that is built. + + if the reference is managed for the + specified configuration; otherwise, . + @@ -742,14 +742,14 @@ - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the underlying task. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + @@ -763,39 +763,39 @@ - - Gets a value indicating whether the output file(s) of this reference - should be copied locally. - - - if the output file(s) of this reference - should be copied locally; otherwise, . - + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + - - Gets a value indicating whether this reference represents a system - assembly. - - - if this reference represents a system - assembly; otherwise, . - + + Gets a value indicating whether this reference represents a system + assembly. + + + if this reference represents a system + assembly; otherwise, . + - - Gets the project in which the reference is defined. - + + Gets the project in which the reference is defined. + - - Gets a value indicating whether the reference is managed for the - specified configuration. - - The build configuration of the reference. - - . - + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The build configuration of the reference. + + . + @@ -811,14 +811,14 @@ - - Gets the path of the reference, without taking the "copy local" - setting into consideration. - - The solution configuration that is built. - - The output path of the reference. - + + Gets the path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + @@ -833,55 +833,55 @@ - - Gets the complete set of assemblies that need to be referenced when - a project references this component. - - The solution configuration that is built. - - The complete set of assemblies that need to be referenced when a - project references this component. - + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + - - Gets the timestamp of the reference. - - The solution configuration that is built. - - The timestamp of the reference. - + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + - - Resolves an assembly reference. - - - The full path to the resolved assembly, or - if the assembly reference could not be resolved. - + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + - - Searches for the given file in all paths in . - - The folders to search. - The file to search for. - - The path of the assembly if was found - in ; otherwise, . - + + Searches for the given file in all paths in . + + The folders to search. + The file to search for. + + The path of the assembly if was found + in ; otherwise, . + - - Resolves an assembly reference in the framework assembly directory - of the target framework. - - The file to search for. - - The full path of the assembly file if the assembly could be located - in the framework assembly directory; otherwise, . - + + Resolves an assembly reference in the framework assembly directory + of the target framework. + + The file to search for. + + The full path of the assembly file if the assembly could be located + in the framework assembly directory; otherwise, . + @@ -895,24 +895,24 @@ - - Gets a value indicating whether the output file(s) of this reference - should be copied locally. - - - if the output file(s) of this reference - should be copied locally; otherwise, . - + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + - - Gets a value indicating whether this reference represents a system - assembly. - - - if this reference represents a system - assembly; otherwise, . - + + Gets a value indicating whether this reference represents a system + assembly. + + + if this reference represents a system + assembly; otherwise, . + @@ -951,14 +951,14 @@ - - Gets the project. - + + Gets the project. + - - Gets the name of the configuration. - + + Gets the name of the configuration. + @@ -978,34 +978,34 @@ - - Gets the output directory. - + + Gets the output directory. + - - Gets the path for the output file. - + + Gets the path for the output file. + - - Gets the path in which the output file will be created before its - copied to the actual output path. - + + Gets the path in which the output file will be created before its + copied to the actual output path. + - - Get the path of the output directory relative to the project - directory. - + + Get the path of the output directory relative to the project + directory. + - - Gets the platform that the configuration targets. - - - The platform targeted by the configuration. - + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + @@ -1040,33 +1040,33 @@ The appropriate number of entries that the can initially contain. - - Gets the platform that the configuration targets. - - - The platform targeted by the configuration. - + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + - - Gets the path in which the output file will be created before its - copied to the actual output path. - + + Gets the path in which the output file will be created before its + copied to the actual output path. + - - Gets a value indicating whether to register the project output for - use with COM components. - - - if the project output should be registered - for use with COM components; otherwise, . - + + Gets a value indicating whether to register the project output for + use with COM components. + + + if the project output should be registered + for use with COM components; otherwise, . + - - Base class for all project classes. - + + Base class for all project classes. + @@ -1093,25 +1093,25 @@ - - Gets a value indicating whether building the project for the specified - build configuration results in managed output. - - The build configuration. - - if the project output for the given build - configuration is managed; otherwise, . - + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The build configuration. + + if the project output for the given build + configuration is managed; otherwise, . + - - Expands the given macro. - - The macro to expand. - - The expanded macro or if the macro is not - supported. - + + Expands the given macro. + + The macro to expand. + + The expanded macro or if the macro is not + supported. + @@ -1142,33 +1142,33 @@ - - Prepares the project for being built. - - The solution configuration that is built. - - The default implementation will ensure that none of the output files - are marked read-only. - - - - Copies the specified file if the destination file does not exist, or - the source file has been modified since it was previously copied. + Prepares the project for being built. + + The solution configuration that is built. + + The default implementation will ensure that none of the output files + are marked read-only. + + + + + Copies the specified file if the destination file does not exist, or + the source file has been modified since it was previously copied. The file to copy. The destination file. The in which context the operation will be performed. - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the underlying task. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + @@ -1182,77 +1182,77 @@ - - Gets the Visual Studio product version of the project. - - - The Visual Studio product version of the project. - + + Gets the Visual Studio product version of the project. + + + The Visual Studio product version of the project. + - - Gets the name of the VS.NET project. - + + Gets the name of the VS.NET project. + - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the path of the VS.NET project. - + + Gets the path of the VS.NET project. + - - Gets the directory containing the VS.NET project. - + + Gets the directory containing the VS.NET project. + - - Get the location of the project. - + + Get the location of the project. + - - Get the directory in which intermediate build output that is not - specific to the build configuration will be stored. - - - - For projects, this is defined - as <Project Directory<\obj. - - - For projects, this is defined - as %HOMEPATH%\VSWebCache\<Machine Name>\<Project Directory>\obj. - - + + Get the directory in which intermediate build output that is not + specific to the build configuration will be stored. + + + + For projects, this is defined + as <Project Directory<\obj. + + + For projects, this is defined + as %HOMEPATH%\VSWebCache\<Machine Name>\<Project Directory>\obj. + + - - Gets or sets the unique identifier of the VS.NET project. - + + Gets or sets the unique identifier of the VS.NET project. + - - Gets a list of all configurations defined in the project. - + + Gets a list of all configurations defined in the project. + - - Gets a list of project configurations that can be build. - - - - Project configurations that are not in this list do not need to be - compiled. - - + + Gets a list of project configurations that can be build. + + + + Project configurations that are not in this list do not need to be + compiled. + + @@ -1268,37 +1268,37 @@ - - Gets the set of projects that the project depends on. - - - The set of projects that the project depends on. - + + Gets the set of projects that the project depends on. + + + The set of projects that the project depends on. + - - TODO: refactor this !!! - + + TODO: refactor this !!! + - - Gets a value indicating whether building the project for the specified - build configuration results in managed output. - - The solution configuration that is built. - - . - + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The solution configuration that is built. + + . + - - Prepares the project for being built. - - The solution configuration that is built. - - Ensures the configuration-level object directory exists and ensures - that none of the output files are marked read-only. - + + Prepares the project for being built. + + The solution configuration that is built. + + Ensures the configuration-level object directory exists and ensures + that none of the output files are marked read-only. + @@ -1346,37 +1346,37 @@ - - Gets the absolute path of the type library for the project - output. - - The configuration to build. - - The absolute path of the type library for the project output. - + + Gets the absolute path of the type library for the project + output. + + The configuration to build. + + The absolute path of the type library for the project output. + - - Generates a type library for the specified assembly, registers it. - - The project configuration that is built. - The solution configuration that is built. - The path of the type library to generate. - - The regasm tool is used to generate the type library. - + + Generates a type library for the specified assembly, registers it. + + The project configuration that is built. + The solution configuration that is built. + The path of the type library to generate. + + The regasm tool is used to generate the type library. + - - Unregister a type library for the specified assembly, and the types - in that assembly. - - The project configuration that is built. - The solution configuration that is built. - - The regasm tool is used to unregister the type library, and - remove the COM registration for types in the specified assembly. - + + Unregister a type library for the specified assembly, and the types + in that assembly. + + The project configuration that is built. + The solution configuration that is built. + + The regasm tool is used to unregister the type library, and + remove the COM registration for types in the specified assembly. + @@ -1441,52 +1441,52 @@ - - Gets the default file extension of sources for this project. - - - The default file extension of sources for this project. - + + Gets the default file extension of sources for this project. + + + The default file extension of sources for this project. + - - Gets a value indicating if this is a web project. - - - if this is a web project; otherwise, - . - - - If the url of a web project has been mapped to a local path - (using the <webmap> element), then this property will return - for a - project. - + + Gets a value indicating if this is a web project. + + + if this is a web project; otherwise, + . + + + If the url of a web project has been mapped to a local path + (using the <webmap> element), then this property will return + for a + project. + - - Gets the name of the VS.NET project. - + + Gets the name of the VS.NET project. + - - Gets the path of the VS.NET project. - + + Gets the path of the VS.NET project. + - - Gets the directory containing the VS.NET project. - + + Gets the directory containing the VS.NET project. + - - Get the location of the project. - + + Get the location of the project. + - - Gets or sets the unique identifier of the VS.NET project. - + + Gets or sets the unique identifier of the VS.NET project. + @@ -1502,15 +1502,15 @@ A . - - Gets the intermediate build directory in which the satellite - assembly is built. - - The project build configuration. - - The intermediate build directory in which the satellite assembly - is built. - + + Gets the intermediate build directory in which the satellite + assembly is built. + + The project build configuration. + + The intermediate build directory in which the satellite assembly + is built. + @@ -1525,15 +1525,15 @@ - - Gets path of the satellite assembly, relative to the output - directory. - - The project settings. - - The path of the satellite assembly, relative to the output - directory. - + + Gets path of the satellite assembly, relative to the output + directory. + + The project settings. + + The path of the satellite assembly, relative to the output + directory. + @@ -1542,9 +1542,9 @@ - - Gets the set of localized resources. - + + Gets the set of localized resources. + @@ -1630,25 +1630,25 @@ - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the default file extension of sources for this project. - - - For C# projects, the default file extension is ".cs". - + + Gets the default file extension of sources for this project. + + + For C# projects, the default file extension is ".cs". + - - Supports grouping of individual projects, and treating them as a solution. - + + Supports grouping of individual projects, and treating them as a solution. + @@ -1679,14 +1679,14 @@ - - Prepares the project for being built. - - The solution configuration that is built. - - Ensures the configuration-level object directory exists and ensures - that none of the output files are marked read-only. - + + Prepares the project for being built. + + The solution configuration that is built. + + Ensures the configuration-level object directory exists and ensures + that none of the output files are marked read-only. + @@ -1744,112 +1744,112 @@ - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the default file extension of sources for this project. - - - For J# projects, the default file extension is ".jsl". - + + Gets the default file extension of sources for this project. + + + For J# projects, the default file extension is ".jsl". + - - Resolves an assembly reference. - - - The full path to the resolved assembly, or - if the assembly reference could not be resolved. - - - - Visual Studio .NET uses the following search mechanism : - - - - - The project directory. - - - - - The directories specified in the "ReferencePath" property, - which is stored in the .USER file. - - - - - The .NET Framework directory (see KB306149) - - - - - - The directories specified under the following registry - keys: - - - - - HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders - - - - - HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders - - - - - HKLM\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders - - - - - HKCU\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders - - - - - Future versions of Visual Studio .NET will also check - in: - - - - - HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx - - - - - HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx - - - - - - - - The HintPath. - - - - + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + + + + Visual Studio .NET uses the following search mechanism : + + + + + The project directory. + + + + + The directories specified in the "ReferencePath" property, + which is stored in the .USER file. + + + + + The .NET Framework directory (see KB306149) + + + + + + The directories specified under the following registry + keys: + + + + + HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders + + + + + HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders + + + + + HKLM\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders + + + + + HKCU\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders + + + + + Future versions of Visual Studio .NET will also check + in: + + + + + HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx + + + + + HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx + + + + + + + + The HintPath. + + + + - - Gets the name of the referenced assembly. - - - The name of the referenced assembly, or if - the name could not be determined. - + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + @@ -1868,37 +1868,37 @@ - - Indentifies the different output types of a managed project. - - - Visual Studio .NET does not support modules. - + + Indentifies the different output types of a managed project. + + + Visual Studio .NET does not support modules. + - - A class library. - + + A class library. + - - A console application. - + + A console application. + - - A Windows program. - + + A Windows program. + - - Gets the output path of the reference, without taking the "copy local" - setting into consideration. - - The solution configuration that is built. - - The output path of the reference. - + + Gets the output path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + @@ -1916,86 +1916,86 @@ - - Gets the complete set of assemblies that need to be referenced when - a project references this project. - - The solution configuration that is built. - - The complete set of assemblies that need to be referenced when a - project references this project. - - - - Apparently, there's some hack in VB.NET that allows a type to be used - that derives from a type in an assembly that is not referenced by the - project. - - - When building from the command line (using vbc), the following error - is reported "error BC30007: Reference required to assembly 'X' - containing the base class 'X'. Add one to your project". - - - Somehow VB.NET can workaround this issue, without actually adding a - reference to that assembly. I verified this with both VS.NET 2003 and - VS.NET 2005. - - - For now, we have no other option than to return all assembly - references of the referenced project if the parent is a VB.NET - project. - - + + Gets the complete set of assemblies that need to be referenced when + a project references this project. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this project. + + + + Apparently, there's some hack in VB.NET that allows a type to be used + that derives from a type in an assembly that is not referenced by the + project. + + + When building from the command line (using vbc), the following error + is reported "error BC30007: Reference required to assembly 'X' + containing the base class 'X'. Add one to your project". + + + Somehow VB.NET can workaround this issue, without actually adding a + reference to that assembly. I verified this with both VS.NET 2003 and + VS.NET 2005. + + + For now, we have no other option than to return all assembly + references of the referenced project if the parent is a VB.NET + project. + + - - Gets the timestamp of the reference. - - The solution configuration that is built. - - The timestamp of the reference. - + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + - - Gets a value indicating whether the output file(s) of this reference - should be copied locally. - - - if the output file(s) of this reference - should be copied locally; otherwise, . - + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + - - Gets a value indicating whether this reference represents a system - assembly. - - - as a project by itself can never be a - system assembly. - + + Gets a value indicating whether this reference represents a system + assembly. + + + as a project by itself can never be a + system assembly. + - - Gets a value indicating whether the reference is managed for the - specified configuration. - - The solution configuration that is built. - - . - + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The solution configuration that is built. + + . + - - Gets the path of the reference, without taking the "copy local" - setting into consideration. - - The solution configuration that is built. - - The output path of the reference. - + + Gets the path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + @@ -2010,52 +2010,52 @@ - - Gets the complete set of assemblies that need to be referenced when - a project references this component. - - The solution configuration that is built. - - The complete set of assemblies that need to be referenced when a - project references this component. - + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + - - Gets the timestamp of the reference. - - The solution configuration that is built. - - The timestamp of the reference. - + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + - - Removes wrapper assembly from build directory, if wrapper assembly - no longer exists in output directory or is not in sync with build - directory, to force rebuild. - - The project configuration. + + Removes wrapper assembly from build directory, if wrapper assembly + no longer exists in output directory or is not in sync with build + directory, to force rebuild. + + The project configuration. - - Gets a value indicating whether the output file(s) of this reference - should be copied locally. - - - if the reference wraps a Primary Interop - Assembly; otherwise, . - + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the reference wraps a Primary Interop + Assembly; otherwise, . + - - Gets a value indicating whether this reference represents a system - assembly. - - - as none of the system assemblies are wrappers - or Primary Interop Assemblies anyway. - + + Gets a value indicating whether this reference represents a system + assembly. + + + as none of the system assemblies are wrappers + or Primary Interop Assemblies anyway. + @@ -2068,74 +2068,74 @@ - - Gets the path of the wrapper assembly. - - - The path of the wrapper assembly. - - - The wrapper assembly is stored in the object directory of the - project. - + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + - - Gets a value indicating whether the wrapper assembly has already been - created. - + + Gets a value indicating whether the wrapper assembly has already been + created. + - - Gets the path of the Primary Interop Assembly. - - - The path of the Primary Interop Assembly, or - if not available. - + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + - - Gets the hex version of the type library as defined in the definition - of the reference. - - - The hex version of the type library. - + + Gets the hex version of the type library as defined in the definition + of the reference. + + + The hex version of the type library. + - - Gets the GUID of the type library as defined in the definition - of the reference. - - - The GUID of the type library. - + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + - - Gets the locale of the type library in hex notation. - - - The locale of the type library. - + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + - - Gets the name of the type library. - - - The name of the type library. - + + Gets the name of the type library. + + + The name of the type library. + - - Gets the name of the referenced assembly. - - - The name of the referenced assembly, or if - the name could not be determined. - + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + @@ -2148,25 +2148,25 @@ - - Gets the path of the wrapper assembly. - - - The path of the wrapper assembly. - - - The wrapper assembly is stored in the object directory of the - project. - + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + - - Gets the path of the Primary Interop Assembly. - - - The path of the Primary Interop Assembly, or - if not available. - + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + @@ -2187,111 +2187,111 @@ - - Gets the GUID of the type library as defined in the definition - of the reference. - - - The GUID of the type library. - + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + - - Gets the locale of the type library in hex notation. - - - The locale of the type library. - + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + - - Specifies the type of the project. - + + Specifies the type of the project. + - - A Visual Basic.NET project. - + + A Visual Basic.NET project. + - - A Visual C# project. - + + A Visual C# project. + - - A Visual C++ project. - + + A Visual C++ project. + - - A Visual J# project. - + + A Visual J# project. + - - MSBuild project. - + + MSBuild project. + - - Specifies the result of the build. - + + Specifies the result of the build. + - - The build failed. - + + The build failed. + - - The build succeeded. - + + The build succeeded. + - - The build succeeded and the output was updated. - + + The build succeeded and the output was updated. + - - Visual Studio.NET 2002 - + + Visual Studio.NET 2002 + - - Visual Studio.NET 2003 - + + Visual Studio.NET 2003 + - - Visual Studio 2005 - + + Visual Studio 2005 + - - Visual Studio 2008 - + + Visual Studio 2008 + - - Visual Studio 2010 - + + Visual Studio 2010 + - - Indentifies the physical location of a managed project. - + + Indentifies the physical location of a managed project. + - - A local project. - + + A local project. + - - A web project. - + + A web project. + @@ -2357,11 +2357,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -2394,16 +2394,16 @@ The to remove from the collection. - - Remove items with the specified guid from the collection. - - The guid of the project to remove from the collection. + + Remove items with the specified guid from the collection. + + The guid of the project to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -2427,56 +2427,56 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Gets or sets the in memory representation of the project. - - - The in memory representation of the project, or - if the project is not (yet) loaded. - - - This property will always be for - projects that are not supported. - + + Gets or sets the in memory representation of the project. + + + The in memory representation of the project, or + if the project is not (yet) loaded. + + + This property will always be for + projects that are not supported. + - - Return a mapping between the configurations defined in the - solution file and the project build configurations. - - - Mapping between configurations defined in the solution file - and the project build configurations, or - if the project is not defined in a solution file. - - - This mapping only includes project build configurations that - are configured to be built for a given solution configuration. - + + Return a mapping between the configurations defined in the + solution file and the project build configurations. + + + Mapping between configurations defined in the solution file + and the project build configurations, or + if the project is not defined in a solution file. + + + This mapping only includes project build configurations that + are configured to be built for a given solution configuration. + @@ -2544,11 +2544,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -2581,10 +2581,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -2608,33 +2608,33 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Factory class for VS.NET projects. - + + Factory class for VS.NET projects. + @@ -2703,38 +2703,38 @@ - - Gets the .ico file to use as application icon. - - - The .ico file to use as application icon, or - if no application icon should be used. - + + Gets the .ico file to use as application icon. + + + The .ico file to use as application icon, or + if no application icon should be used. + - - Gets the key file to use to sign ActiveX/COM wrappers. - - - The path of the key file to use to sign ActiveX/COM wrappers, - relative to the project root directory, or - if the wrapper assembly should not be signed using a key file. - + + Gets the key file to use to sign ActiveX/COM wrappers. + + + The path of the key file to use to sign ActiveX/COM wrappers, + relative to the project root directory, or + if the wrapper assembly should not be signed using a key file. + - - Gets the key name to use to sign ActiveX/COM wrappers. - - - The name of the key container to use to sign ActiveX/COM wrappers, - or if the wrapper assembly should not be - signed using a key container. - + + Gets the key name to use to sign ActiveX/COM wrappers. + + + The name of the key container to use to sign ActiveX/COM wrappers, + or if the wrapper assembly should not be + signed using a key container. + - - Gets the output type of this project. - + + Gets the output type of this project. + @@ -2744,20 +2744,20 @@ - - Contains commands to be run before a build takes place. - - - Valid commands are those in a .bat file. For more info see MSDN. - + + Contains commands to be run before a build takes place. + + + Valid commands are those in a .bat file. For more info see MSDN. + - - Contains commands to be ran after a build has taken place. - - - Valid commands are those in a .bat file. For more info see MSDN. - + + Contains commands to be ran after a build has taken place. + + + Valid commands are those in a .bat file. For more info see MSDN. + @@ -2772,13 +2772,13 @@ - - Gets the file name of the assembly with the given assembly name. - - The assembly name of the assembly of which the file name should be returned. - - The file name of the assembly with the given assembly name. - + + Gets the file name of the assembly with the given assembly name. + + The assembly name of the assembly of which the file name should be returned. + + The file name of the assembly with the given assembly name. + @@ -2819,18 +2819,18 @@ - - Gets a value indicating whether the resource is in fact a ResX file. - - - if the resource is a ResX file; otherwise, - . - + + Gets a value indicating whether the resource is in fact a ResX file. + + + if the resource is a ResX file; otherwise, + . + - - Factory class for VS.NET solutions. - + + Factory class for VS.NET solutions. + @@ -2927,25 +2927,25 @@ - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the default file extension of sources for this project. - - - For VB projects, the default file extension is ".vb". - + + Gets the default file extension of sources for this project. + + + For VB projects, the default file extension is ".vb". + - - A mapping from properties in the .vcproj file to command line arguments. - + + A mapping from properties in the .vcproj file to command line arguments. + @@ -2954,19 +2954,19 @@ - - Gets the argument string corresponding with a configuration property - named with value . - An ignore mask can be used to eliminate some arguments from the search. - - The name of the configuration property. - The value of the configuration property. - Specify any groups that needs to be ignored. - - The argument string corresponding with a configuration property - named with value , - or if no corresponding argument exists. - + + Gets the argument string corresponding with a configuration property + named with value . + An ignore mask can be used to eliminate some arguments from the search. + + The name of the configuration property. + The value of the configuration property. + Specify any groups that needs to be ignored. + + The argument string corresponding with a configuration property + named with value , + or if no corresponding argument exists. + @@ -3164,55 +3164,55 @@ - - Gets the name of the command-line argument. - - - The name of the command-line argument. - + + Gets the name of the command-line argument. + + + The name of the command-line argument. + - - Represents a command-line arguments of which the trailing backslashes - in the value should be duplicated. - + + Represents a command-line arguments of which the trailing backslashes + in the value should be duplicated. + - - Represents a command-line argument of which the value should be - quoted, and of which trailing backslahes should be duplicated. - + + Represents a command-line argument of which the value should be + quoted, and of which trailing backslahes should be duplicated. + - - Gets the string that the configuration setting should match in - order for the command line argument to be set. - + + Gets the string that the configuration setting should match in + order for the command line argument to be set. + - - Allow us to assign an argument to a specific group. - + + Allow us to assign an argument to a specific group. + - - The argument is not assigned to any group. - + + The argument is not assigned to any group. + - - The argument is ignored when the optimization level is set to - Minimum Size (1) or Maximum Size (2). - + + The argument is ignored when the optimization level is set to + Minimum Size (1) or Maximum Size (2). + - - Resolves an assembly reference. - - - The full path to the resolved assembly, or - if the assembly reference could not be resolved. - + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + @@ -3227,19 +3227,19 @@ Expansion of a given macro is not yet implemented. - - Gets the name of the referenced assembly. - - - The name of the referenced assembly, or if - the name could not be determined. - + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + - - A single build configuration for a Visual C++ project or for a specific - file in the project. - + + A single build configuration for a Visual C++ project or for a specific + file in the project. + @@ -3290,69 +3290,69 @@ - - Gets the intermediate directory, specified relative to project - directory. - - - The intermediate directory, specified relative to project directory. - + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + - - Gets a comma-separated list of directories to scan for assembly - references. - - - A comma-separated list of directories to scan for assembly - references, or if no additional directories - should scanned. - + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + - - Gets the name of the configuration, including the platform it - targets. - - - Tthe name of the configuration, including the platform it targets. - + + Gets the name of the configuration, including the platform it + targets. + + + Tthe name of the configuration, including the platform it targets. + - - Gets the output directory. - + + Gets the output directory. + - - Gets the path in which the output file will be created before its - copied to the actual output path. - - - For Visual C++ projects, the output file will be immediately - created in the output path. - + + Gets the path in which the output file will be created before its + copied to the actual output path. + + + For Visual C++ projects, the output file will be immediately + created in the output path. + - - Gets the name of the configuration. - - - The name of the configuration. - + + Gets the name of the configuration. + + + The name of the configuration. + - - Gets the platform that the configuration targets. - - - The platform targeted by the configuration. - + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + - - Represents the configuration of a file. - + + Represents the configuration of a file. + @@ -3394,75 +3394,75 @@ - - Gets a value indication whether the file should be excluded from - the build for this configuration. - - - if the file should be excluded from the - build for this configuration; otherwise, . - + + Gets a value indication whether the file should be excluded from + the build for this configuration. + + + if the file should be excluded from the + build for this configuration; otherwise, . + - - Gets the relative path of the file. - - - The path of the file relative to the project directory. - + + Gets the relative path of the file. + + + The path of the file relative to the project directory. + - - Get the path of the output directory relative to the project - directory. - + + Get the path of the output directory relative to the project + directory. + - - Gets the intermediate directory, specified relative to project - directory. - - - The intermediate directory, specified relative to project directory. - + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + - - Gets the path for the output file. - - - The path for the output file, or if there's - no output file for this configuration. - + + Gets the path for the output file. + + + The path for the output file, or if there's + no output file for this configuration. + - - Gets a comma-separated list of directories to scan for assembly - references. - - - A comma-separated list of directories to scan for assembly - references, or if no additional directories - should scanned. - + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + - - Visual C++ project. - + + Visual C++ project. + - - Gets a value indicating whether building the project for the specified - build configuration results in managed output. - - The solution configuration that is built. - - if the project output for the specified build - configuration is either a Dynamic Library (dll) or an Application - (exe), and Managed Extensions are enabled; otherwise, - . - + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The solution configuration that is built. + + if the project output for the specified build + configuration is either a Dynamic Library (dll) or an Application + (exe), and Managed Extensions are enabled; otherwise, + . + @@ -3493,65 +3493,65 @@ - - Expands the given macro. - - The macro to expand. - - The expanded macro or if the macro is not - supported. - + + Expands the given macro. + + The macro to expand. + + The expanded macro or if the macro is not + supported. + - - Build resource files for the given configuration. - - The resource files to build. - The project configuration. - The build configuration. - - TODO: refactor this as we should always get only one element in the - list. Each res file should be built - with its own file configuration. - + + Build resource files for the given configuration. + + The resource files to build. + The project configuration. + The build configuration. + + TODO: refactor this as we should always get only one element in the + list. Each res file should be built + with its own file configuration. + - - Build Interface Definition Language files for the given - configuration. - - The IDL files to build. - The project configuration. - The build configuration. - - TODO: refactor this as we should always get only one element in the - list. Each IDL file should be built - with its own file configuration. - + + Build Interface Definition Language files for the given + configuration. + + The IDL files to build. + The project configuration. + The build configuration. + + TODO: refactor this as we should always get only one element in the + list. Each IDL file should be built + with its own file configuration. + - - Merges the specified tool setting of - with . - - - The merge is suppressed when the flag $(noinherit) is defined in - . - + + Merges the specified tool setting of + with . + + + The merge is suppressed when the flag $(noinherit) is defined in + . + - - Gets the absolute path to the object file or directory. - - The build configuration - - The absolute path to the object file or directory, or - - - We use an absolute path for the object file, otherwise - <cl> assumes a location relative to the output - directory - not the project directory. - + + Gets the absolute path to the object file or directory. + + The build configuration + + The absolute path to the object file or directory, or + + + We use an absolute path for the object file, otherwise + <cl> assumes a location relative to the output + directory - not the project directory. + @@ -3581,10 +3581,10 @@ - - Removes leading and trailing quotes from the specified path. - - The path to clean. + + Removes leading and trailing quotes from the specified path. + + The path to clean. @@ -3619,58 +3619,58 @@ - - Gets the name of the Visual C++ project. - + + Gets the name of the Visual C++ project. + - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the path of the Visual C++ project. - + + Gets the path of the Visual C++ project. + - - Gets the directory containing the VS.NET project. - + + Gets the directory containing the VS.NET project. + - - Get the location of the project. - - - . - - - For now, we only support local Visual C++ projects. - + + Get the location of the project. + + + . + + + For now, we only support local Visual C++ projects. + - - Get the directory in which intermediate build output that is not - specific to the build configuration will be stored. - - - This is a directory relative to the project directory, - named temp\. - + + Get the directory in which intermediate build output that is not + specific to the build configuration will be stored. + + + This is a directory relative to the project directory, + named temp\. + - - Gets or sets the unique identifier of the Visual C++ project. - + + Gets or sets the unique identifier of the Visual C++ project. + - - Represents a Visual C++ project configuration. - + + Represents a Visual C++ project configuration. + @@ -3692,15 +3692,15 @@ - - Gets the value of the specified attribute from the specified node. - - The node of which the attribute value should be retrieved. - The attribute of which the value should be returned. - - The value of the attribute with the specified name or - if the attribute does not exist or has no value. - + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + @@ -3711,106 +3711,106 @@ - - Holds list of files to link in the order in which they are defined - in the project file. - + + Holds list of files to link in the order in which they are defined + in the project file. + - - Holds the C++ sources for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the C++ source files for that - build configuration. - + + Holds the C++ sources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the C++ source files for that + build configuration. + - - Holds the resources for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the resources files for that - build configuration. - + + Holds the resources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the resources files for that + build configuration. + - - Holds the IDL files for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the IDL files for that build - configuration. - + + Holds the IDL files for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the IDL files for that build + configuration. + - - Tells the compiler which character set to use. - + + Tells the compiler which character set to use. + - - Gets a value indicating whether Managed Extensions for C++ are - enabled. - + + Gets a value indicating whether Managed Extensions for C++ are + enabled. + - - Gets a value indicating how MFC is used by the configuration. - + + Gets a value indicating how MFC is used by the configuration. + - - Gets a value indicating how ATL is used by the configuration. - + + Gets a value indicating how ATL is used by the configuration. + - - Gets the list of files to link in the order in which they are - defined in the project file. - + + Gets the list of files to link in the order in which they are + defined in the project file. + - - Holds the C++ sources for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the C++ source files for that - build configuration. - + + Holds the C++ sources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the C++ source files for that + build configuration. + - - Gets the resources for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the resources files for that - build configuration. - + + Gets the resources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the resources files for that + build configuration. + - - Get the IDL files for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the IDL files for that build - configuration. - + + Get the IDL files for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the IDL files for that build + configuration. + - - Gets the target path for usage in macro expansion. - - - The target path, or a zero-length string if there's no output file - for this configuration. - + + Gets the target path for usage in macro expansion. + + + The target path, or a zero-length string if there's no output file + for this configuration. + @@ -3830,69 +3830,69 @@ - - Get the path of the output directory relative to the project - directory. - + + Get the path of the output directory relative to the project + directory. + - - Gets the intermediate directory, specified relative to project - directory. - - - The intermediate directory, specified relative to project directory. - + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + - - Gets the absolute path for the output file. - - - The absolute path for the output file, or - if there's no output file for this configuration. - + + Gets the absolute path for the output file. + + + The absolute path for the output file, or + if there's no output file for this configuration. + - - Gets a comma-separated list of directories to scan for assembly - references. - - - A comma-separated list of directories to scan for assembly - references, or if no additional directories - should scanned. - + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + - - The type of output for a given configuration. - + + The type of output for a given configuration. + - - A Makefile. - + + A Makefile. + - - Application (.exe). - + + Application (.exe). + - - Dynamic Library (.dll). - + + Dynamic Library (.dll). + - - Static Library (.lib). - + + Static Library (.lib). + - - Utility. - + + Utility. + @@ -3906,23 +3906,23 @@ - - Gets a value indicating whether the reference is managed for the - specified configuration. - - The build configuration of the reference. - - if the reference is managed for the - specified configuration; otherwise, . - + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The build configuration of the reference. + + if the reference is managed for the + specified configuration; otherwise, . + - - Gets the name of the referenced assembly. - - - The name of the referenced assembly. - + + Gets the name of the referenced assembly. + + + The name of the referenced assembly. + @@ -3935,25 +3935,25 @@ - - Gets the path of the wrapper assembly. - - - The path of the wrapper assembly. - - - The wrapper assembly is stored in the object directory of the - project. - + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + - - Gets the path of the Primary Interop Assembly. - - - The path of the Primary Interop Assembly, or - if not available. - + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + @@ -3966,21 +3966,21 @@ The definition of the reference does not contain a "ControlVersion" attribute. - - Gets the GUID of the type library as defined in the definition - of the reference. - - - The GUID of the type library. - + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + - - Gets the locale of the type library in hex notation. - - - The locale of the type library. - + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + diff --git a/Tools/nant/bin/NAnt.VisualCppTasks.dll b/Tools/nant/bin/NAnt.VisualCppTasks.dll index 3a2e6963b798da0712ffb9425dcb82438cda96ca..4f6c39c96d4910dbb8d97b788acf77f405609d3f 100755 GIT binary patch literal 49152 zcmeHw33yz^mF~H>_mjN@Zuf1q z1WYFHd*Am)ZTj3gr%s(Zb?Vfqf*Dl z=q;Th8=Qdr;F9lc_G)`x+?h2_ROG#&G#lzGe__+diJxQW6OG=aP=E7rL_p^!Am_YY z5yb&4-9D7(9>_hPspBFq&=4a(&x_QKq`eWmSp+R8eWJkEmoSmmq0GS{;KBC*AWz%s zSIm$vZ!HuHeMqZr$B`hz zfpH6rTVUJ*;}#gVz_g!<4ct&L27S~^|S(gSj4*{3FezHqY7p$d~78BEPW zZ;kLXa*pO_q^lkka&f}*2IZ1-G`Xbv+GqMCKO2gb+JOOJ#ztW(ly(neECmZQss9|0 zO{TVm<#%v0m<#qvL25XE8gd(7ahhIn8luVQ!c#2W&10~|^C^JhJf={6oX&+2J8B`) z$1K!1Mj_J2EQH81YE7h%RVa_~6}D|zIT1}2xA{JJbYTuGagvV4hFCJzhwEAY643uy?$LqJ+~Me<8Q z^z~aa1YZHck^C}bq|mEjbzG}O%aV%x!Xag)jMNXvN*}2zL|xv54A#1`|J7GteRg^> zJ`C-ghMHuJ*WhTfCVvLFYmG?PJRV7uWgx@tj(`PvJM7#JL-vPGxHes=ojRzA{#yb?;*YRby}x>?3aFumEI79 z_zysQGB}p}C*Od4b@{WPk*9r0ehBjKr2NnyEk9iNA_TaMFJYgMaN&L>V?Oqi-4rG# z&#PBn2hW5Cf2W+x@Ck5Jh^yg-x@27^=0OG_J=4a_C@u5Dg=bJEe>TnCGA&&AX&Fm| z3on&1_zq?aufl~>P}^^`Hd1}Hu?91EZ3j>Bx*#m!q~+9cS<$;ccs=X8DNJhNhD0(k zd3z_@z%NWCEvazf57bkIh6__%FWrI`EGc7f{MBrxn?DB+FQ9JrB2X7N&3eE_AO@9k zpwWPxYDdY2h>2OrNPZ2_deA#6U}=Q+KDxie%R!l06lnqWd!|az!3|j5q<3EXP?6|GBkqz2}^%s z1pQ%n&wTLz5>LOJv!KsML3;{8+oN;Mht{&$oUcwr2h~ItE`UY9i_!*j`lP~oR=QjeTHUZQ` z7*wf8%ByEmpyV~IC*rT-`)H1vD#eUHUeFB?1W6^8O!Nu2oSO`5?5q_xYNcbMKp%K& z&hgaTJGPq7o-PohVU{iX90p?8gxN^4Bq$31wv))@I?T$k`3|&kWrlO{0Y}}T0sXcY zmcuAbO2AENxWXDG?C+zx*uv3z2=$hFC}?}Ab~*bYV4Jnsvpyu0Z0~CnCBXLO!asU# z+rLpUAEg*iiIQzmdNj+9RHEf_v;J* zw5+4utDK~^<;_ub5iE&PTVO;~-R3!kZ;WUUlQffdIBR4IYU#jSYO$np*pfnr!%1jG4m&}yT3gvfY)8^B2zu~-c) z49oJV;4?XenL&i63(0d4K%K2?1*mokU|q3NUG8DnHWIL5G^n^_seGtm>2DhG0vgG+(mNr^@psCU%Z@QlrT_ z&*Fal7WPW<5>|~79m`*e6y~eKmuZ6?Bx8A{OYNptTu&(makc+LV=5JG%3sFP2+^N-PHoE#YOq0ks6XPd2HZ5kZHbOHu>FI(WxoCyt5mxCHir2)N0L_ltc zJ$tdVoa)uLeXRNf3;LZXJI7nKvtK{?2VCWNwqC;^?HegY!N!Id!eBBsza5Ko`rkwN z!W?ocTtNdO(xhW^CVfa;k1yOqKMidz$1C&EtjVco5GK9(k8|pWkT*f|jE`Ybt(C&< zP`%g(6|W5V$@iAYx*yK>gJt2wKq`Z0eis1DfuI8+^Cghl?V}cYidyo}x znIVCA%gGGkS>PsT7Ef424>2DP z78I0&ZM2Vvn2!g8lswZac!>FU&r_UPQm3yEkycQg}7!2GxjhN{vO)fjrU{ddAspObii?) zYIGL81P<=)z9ZOuqw(G{DpIlgW;5Nxgr(hgU6?zWQVFx2b5jVNx`Ut^x)CSAZh<{x zXw^^_VX5UL1g4cp)<`(gq{GBAgU)$J+w+eIg?8$}(E&pt#Yb^OU?(3)Zeu;)1!#!3 zoQWCadq{HIdmPUN(P;hwJTXSJxB7h{|^#>b2YLG3z}Y z%=s^}L=Eb#$$tgOI*H})#B)J3mj48v{(8?sy|Mi5ppK}wCVwA@rFv`3R6Az9>LJTv zA+uDBw#=}W)QxZ&wP3+y40InnkjIHnH)DVB z%M1IY1ew+|A4E?cVdQj+pJEc4dv6yQ2klz}C|-*5Xd>e(`pXwHiGj(R z3qpoxb_EYHACH|cW>)YJQ=WjJCuNec8zMy*YwN?OBG=4_W|~8r-4wR^#up165j(f( zPUHx=p(r0Zo9RmoV&!vws{>{|9}6*`o_3Bv0Q2z>tLB+g!9%Q?=d=nQV%0ozD|m=i z^T3sT`VjN+*!d9@9}h7fkDVV8`+Ypbd_1n&|F!47W)vCie7hY^fGsiSzH`|{XsWm3 zLNwF4kMyyoF^=R>3z0r%q4UQmMEaP8FqTHGiS)4waZjO#$!N>U?Lqjeon|+}34L1& z+jw|z#WZWTHuhATCUg%Ij+j?VzU|Gch~XNJX+fP=Nw8C;o9gi8mV-5^{$Py`QQMYh zjT#)z)_C)8fs;lgh3!(l#wHau8&*2TF%BM zj_Z>K?iusPky;Q#;sGSMRG?wKB?`z~qxfqUl-4B*`M!**>&#MN%x=LZ-!4%Ss5+rb zl!h?Rgzhv|hfAvzuWGJRkbiqs)d{mo@v2U|R@H6__VmVzzIgd5%vf^Tc4T^fbPBrg zSIBg^1TaqPZ?b=x;e{1{Urq7)DuNSe>%uq^jUx*AT$m@&uh~si$H#2uXe$_=9hh3ksWa&R1L4OMZAEpbr2~R)&66p5}@Xo{> z;L*7j;(@MR3$>eWuZ^xe1_9_z67+l*i9M_1k5XLr>2a5~LZ`a3P`O>0RO#{h>$EqQ0y!+P z5pC=6#)4lax(Ns3X6?s=C0+Y{5o)FekW*Sv`WJv9F)Ki>)5boR2p|vVY5K8CMXqFQ zk_#4_ZYxTvv>}mV_(%)*!@m4dUuLd$O(}4#U0e+7Blg zjW~Hi^}g5Q@s^mYJmsYxOH|9juJ?82kf$t%n94DC7wno5TL2#qF&__x71llebyHYE z@Kfwcl2Z5?dMRFdIfYK<%jg%`b+g#1=Q*S7GAFOKyv7$en(8NvXqKm zR$Vj{s~AM&7`5p3Qqg%{ty3zClB2RhtKF%o*>!ze691*VN|s?>ndSYQCZeWgF=GhNjP)|dqDn#vs(H?=;34MYv2|f8^2s4q&4bmukB3+_59TZ% z53y>VvnzOrRr8!v!9&c)6E*$S?(ul%1(v>M3_2!2qnpPcF>=;=blut$vvt*Q*pjDk z1w7O{%MQrY65ZU*!l~UTd)J`61iq8Cj?~*3%F26Jj04`xB6Z{xRJxhil~`K#e9Rw) z0(NdQp%Njh(@h>dFsN~NgV%@)>jQ<2%0;5x(H~|+^D*=)1Bo63!x_9uCDaBA!(cFbCs$*d zuj~z4mZ8ln%Mj*cxLp}Y^cWbwd<o9{@W4uU;ZPp85ZK@zp%MO_m7b3YrnM2 ztH{^Oe?~@1S+78qc3(^l(35)EW#xdm@)t6@Y@DZiEsA1uj_$Nq{;n-IqGhdZ!5G&U zZ3|8b=#@WnSMel$P2ktpr^CW8VAuRQ3LIu!w^nS)SOsuph3*nx5Oq^UJbALg+SlTx z4BXs15+n&j%3MCQHsBjdLnvH?elz@fL((&n-%1N_e0>c~G>3oN*Cmmb>3H>kL5o|7 z0dp&HO2x~PNcq0Z_aQ#=T0IabT&mtx3O2@{F(rwEmb&tkbITR(bf8Fo%-!}&FMUd2 z|4ji)e<;xUE0cc3E$oK8BMd2S5g|B!g!Z*bPL(#v+0kykI0bs!EN`yVdC)z)4q4?r z4KbZ71A=MXp0gkB1Qo7j-WKcO`un|+QYbX*$OqKDUC0n2*QK^_Z@FH4*di*!9DC9#3W4%lk0iIr|q!&m@vk9D+^D`!MxN zZzq-?M&4-{z0G(Q4x{b%OqX}R+|+wLv+x$!ezLl$8$t8NX4N|LKo2t(s0 z;9hj+k?nibg-E@A0sJO^K=lCQ%^>B=o*Rbenmb{5Wm@%(cZ7_7V_X-uv14P^_?-$(z6wq34dNeAq|pW=Ib8U5Da(#zWkB?Y zq4`?U3wH~TLSOrycl4WSRhv$0+>*DJENr%%xX6ZkY;ZPL{#sgJGDlLbOmVLLSou!d zQTQXKcD}DrTSF-uobX!`uK7qEYt5Ix6`ANqu%7L$)}BLq%?o$@?!--%mE$}1vIlvu zKD`|ree}oh(Nl~r%D91D$-B`@AY4y+d{??~I$7zG-iyPA$nuXskgsZ6FL!vU(i%tw zbML8w%c~&09Sdjmi95e6uB1{-CZnRo$SE|`$>5A+5i7NLO`%vuY72i?M(TX}6t85% zg0lRtVSL=-(Th0^p$JA*H*+x6uOxJa)QnYKY)WEQ#B3 z=5E~2hiHn56CcR8} zGk!J3Fl(m`MpHYPFob$D$U1lOku8d2!4!u|i0!VP8;79Vh)jD`2?GE(n7Yt8<^~gf zTLniO<#$Y^mS+xP^Q+z;v+^`u&9xu)}aToP7V6EWKzZ2rM$a8#$ z?dm-<_C=}w>%97X>K;>dOZ*l3zH1bI?B&or<*$YQr>gwom!XWd4Dro2_IhQc9w&is z7WmxM4W!{>nH$bys*4}liViWqD{KN!v&uS5V%|Y^*}SIjli-;>g2$Q@`Z#E);1`!{ zuaSYZjc4xH&c_c6O^E>Yn?C}jqa&!m@jXXJJtKVGpFg&*BY2GB>!fNk^qhj&{3>6k z{4x)*YMyNsJjBNG^+$|j`+fa8hNSJHug_6C+OAYzulrN``UzC|27Ue8U`_e?|DX6e z7b4;oABQr3gs)>Z^7*>4?_m;+ub0eQxHRgfo>odzp&LOy@ZE`AU|_8h zFTMxh%CH{qGoHN{f>LTvv!%ckg_&WvJTrJ#Rx!CFFC=blOWIZ9NsCW*^-4(|LgEYR zEYc4IN70yKuxj50Wb*cws4cO*#*O6P2ilAsIsro>0&b*mHJ1tR2OV=CD!@g0>V_~m z%DvmsbwhxLZt<4wZsF||MlGN+$kXxO)#$tZr2Gd!*4lIf9dDWMn!3yE4IcaC?UR)~ z-lBr>`)c+{8+4lIvll9;wAbVtFiYYLziGyfk45u0p+0pNwx&#ElW}UmOYc2A=3;cK3w9Q(Rq4YbKC3a2zOJp(W-a~roL!*X^bCA_SaxA(fLiZ#-1kj(RB)MQuhyY~;sqf}GO49?d(+VmlOT#&6JBE~D5&*{)blvBk1Wv0=qJ18$$c0D09!>&2pzu*ZM~o&v z2;YzNKPfb||33T>D51y+z@`ZGF*W-6zvZ%2BuY3XO5IFZ!`~cbsd)-lD)h@V(mG?b zzy%5oWqa&?x!~x7G1|e@^*v2LrSQ2JYx!TA{uhP6Q}`-M;b%@b^F^x_CgZA=!c!E^ zQ8-`WF}0ZAddAwu4n~u|toZ_@Jy1hACYSu4C8yR-gC$Q@I3Ex^wXD6pmKttQ_?@~e z94&?sP)+yboSpcZbK%hrg&P%K0Jx&2;>}!GbSomCPv4;X1fjw=p#{%6LgTJ=e z&jJ?#}I(?bPb}> zdW$^~x(<8CpDXr`C~e&+!6oE;N0hd1l!+Fb5qT7GD`m0P$m774TI?+3HOU5xU5LCU zx!7XtqscO8G4|19xyoYs$WvHi-ej@Ek!OJ2X0dlhevF$7_gU6N+idyBDG=F03d*&@>`b7gtEV$N@2-MRAM8e+y<=gRYnnLbL%+79L!Z%xS#i_u$C zvd3cS*iy{TcUf#OwgT8a7W*^g&6l5B>|My4FTbs8O_Cy{r$G+OMQ_@lB!7Fg^X@yCHJx7fodw^X)R?7JwpRCZYGDda7a zA&WhSyk&CKV*do0Z;}sN>=%&vCb`RE|BAdbU^^^! zxVBr?$&kg4)m{YbsKq{nymRHl7P}jH=gJ)h)3Lc;K3~FKz+ZDaUc%-&UGju2_grnO zbDsRxVlUJ#bG~lk}9Z7qAn!&SJ0BwmVzolNO8Ao$Fj6 z_gO4acc#-V-?vy(-BPDVUa;8oy3G!Zvfb3zQr81)qGH#e4KH9{u+-#5fHxmYe% z?1!c@NsWPbl_1lc!d?SY9Y$9pIdOiRqO| ziPcbRmBnT!I)JUW7<=Usx!hvxl}jXNG4{%(a;?SKE0@ZR2Gja>$So!88SHdESHku? zm&tKk?z!3{&YR`O7JH%g8mCu&Z7}r8yPUK%^0)x^Ab(T4-`OeWl(1){Plhb^O6_}{ zetEyeB6T-A8M(`1iMn?=yX66kHPv0??2#udHofl8owvx(E!I+ZC$Qfu#$I_w_Db^( zW2H0dzTo6!tzxEEa?)?|guRlJYfYZ^N=|OKdF+*(++*|DD>*r?*v)cL;sMBz{rRU8i?>1nA@?MMGA9}#KLY`C1jK3n-9GRK?Q^F@2D2>pSpK032 zKiEjhQNTZSjsJE1-!|$0u2z4p^6!2FwftUrCO5slK0B3%(6v2yKq*)GprO1?c?`dy zm{KNf;77F7WQDJ7Pb0@jFq}rhf2Cf^apj)ZsGYgB*a=L)cd?v-=(bqL&tl<7xmvad zI&f-2_&$ZVD7;KgZqf%msagN^X~p^(%1J*;{|IGew5$Tihwm zq55U+6)NYD++5#*U(8OgTj3sZ&Zt}MUhOanU+pm7UhUimIafOm03LD}caAyF)VHBU zKdtX{(4H@@-)#q!@%e8ymnC`r8cW!JbxHFv(Hhjdr!dmI0kdt&i+3-oU_r8YD zDtyqr-Fd#@N$B%(?GN0$A?GD`J5CpW<(_a7jsNaG=CJLLIk;94_@TDw0(q`B5_r*B z+<2Y54E{F2m$5#0**UMVHjqYceITaxyZ|yM2X1#ZH%<>^QECc%oxfn!X&lzwquRJ_Pu3?IV$y>L(Ytuhc#n z+3rT_egJx+?h(MII`XvC{VXz1C1l;{bw7_>0hys_yYuU&1F*oWO_Pvrsyi95rEV@@ zZ1Tcr6n~BEf8eC$V)-iI4xC*ku;Tjz(rwN+0GB$EoD{Q>!(NPkrR96FdR9JNP2t z!@*dvFK~Wn9^g}fE z?m%OB9^ec>w!I7KMd2*qitsVO&hXuUTf!#*FAKj2xGNlsbO#2)^8gQoy8y2VX92Gd z9|QbQ`0mKwz`fxUfGxon0apiOQCcY*r6$J!PmkOUcy{Cj;DwPFH8&O`e>Mimk!dN8~KljL=(~G=#uEls4EW6EbDPLi92i<%@ORfqwr03CYaypaQsLrb_ek?5<&Z_bR-ihP5Bo^ihTHRCq%Tb@-sBZ&7%wQf^cD zDTSX^c(1}{wU6Ic#*+Se{Z^{0rToU)S&nCOQ`XP_^;+ur?OJO1n8MTRE&=}!>h=Nt zsE&W+Ye}M-=WgZslI3x+W(mM=0{G{`d-$d)gnuqPD1vlEVN7D6L>0#2OAfw-b@=DP zulVj_0{*%1Ey9U7rR6;r!Up`~9UsC*oVz;s5>CcH7iX=6Ct-%bO-A^wi__5Q$ejx4 z;%ssT($fK5oHyd;8&b1CnTL}*7bj+OkZ!?=n~PI0!Uf22a3+O&fH-|>L3$A&e}TCW z>BWF9PKg#Fy#&z3$mjSvs&B3)qoZBn|JQGg`Cmw`nW9{O~S%3~sA^FhPA5kOZqg63d!b|JkPIgV^m zxD`1rMk`@Aa$Jns3jntRbFdffM*32WVh6L>Hl#1ZKH8Bt1G>@+E=Mj0bg|mH6mTc< z9odZ>7w-TG_aMiStirvRkz9ETpde07^L6ixFM{Ui_6xg$2xAjuaIRql7C% zfQ}phuPgf%9z+QTYpyFmxe~m1UkB(SsthB2MB$&Igez|abg=$Cg!EB`Zv(H3`Sb|j zwen|xZ%4j^o$%F2zY{qwZa=&o@J3*cya&+5U5#T%zYoxr_hWu`^0wm^oIal`7n50xdmLVd<6N9+<_cdZdZ6GavZr!;U_VlyYdM@M?NbbL;5oczak$; z`l~46%3omyc5pNIPNa{6*OB`behcqTU3oy?pgxS5+m&xC{2nB^@`QXI<7dDL02Z7O z;C?59G4yFrCdlVNnIQLo5@v*fs}uS3Qx;)Na}QGfIC9x2H1n1@U^rK8 z%=ZuHGH1)C_JN_+3$w-HbgpA?uqR#ITWsym<)kCW^oZAt?`)=3%Tr0 zC{-NF>=P;>ow*Fu=%F+zKkcPYqPA) zqBmfPLtO*A^3t0h9vU1T0#SMg`}U9@iBf<0x{KL8dkXpC-G)o8z&5t_XeY2Jd#JaV zA1=UP(wiOV%MJHuAREZO%usr5dMMrHC+^CFvws_H%i?5952SZz`e~+tB6<*{K7arB z<_FoaMcJ&+vMHpuKeH=4KpDdWrDR@hV_Vg~Qxogar$gzTY$(i>&+X6jTcwJgnR@Vl zUu@l)**%;~7dj8Z9O!;l3R31^sbK~)o#yYL*6zVfUpAe~UYY3^b4jQ|&un4nP`5Qw zE4xB=XNGz=mpYFpyy+F`ke`=I#0EWcpdI_u)i}$>#(YR@%p6PA3o!cW?)Mz8Q0=o6N|E+jqL4} zjzWf}YabrU+vGOHT$b|(Ks7+`KAq%Lmn_4Kp%!(@Kw!!49zeV^vrU$f20^=@(TzRp zGo<>C4rdj>T-XiM=LpH_&ZA|pgqe`cc=FPuca2bjLPpZa2Q@YFGT%%4bR1P7ubz?e zyz*5BV$|I^jP;_i98A)m$)yi%$YYl8Uz@{J*qhn6Gt&=jD`Ksg7^vM^Ek@l;inNg` zX(*{8n$ne(7&(=+vP5G;BgphsXO&KrP)*eV$@K|`qfxXlYgU0`ifaTo3Ul<=5u@3b#3VE-PFFZ zQ+m^VSm9%q+C6~B;9y67U{@AB$>|m_m*wiCx34%fyc4~e%ORZLL^d<9UwSuZ#kK`w zBHPaeL;m0)=^e^}br(j~0GAw8uN`$zH$D~D>Xf1>rIqSddI@75XBics38fgt$l76& zO6{haO4Jl-a6d%Ev{Jn^>78f-Ir$`x))2*mSP$AjluzQuoJz7uQoGPD%j#Th1)qL+O2kV#`>jP5Gg2Ec><% zWc#?P-#DBb%C0$th|B26Wx39Mz1dwR#6y$e0W9^39;#LQIJJHs&it-YVdj=G=54Ex z#{5bOVpmCva>+^_t%FN%70*O_e?PxlVUr9N+yg`DEY^P=`N2aydFjHU;o#<7cos8- zAx@;ewfEM{zWjbn)s#ZH9m9pf=nMH)-;%x6&$09-yys zYt>UoXLAU#r7c&PxjGA_tBESEnrtnyHM7gx5VjYKn2>V1`6=v6bCOTzF3c3TzHcAG zh5nsbjEToJW=03Re7KOQE&(0-GyBqoz13NCoy!Y6_Ejgyw4d-$?JaqPko;$Hg^&JbSaI;A?X9wun{fH`^`v!*)Yc`>{aDy$jrA)6+ z5A0yIGYkEYC4E;FbHc zIIR(bmd-dj5B6o$wHO#NqBYEwA_C7Ou<$fz3>@KlIzdx-X$Fc)E)9NpbR|OS(2~<- zLuP*_CmZs+wT+p5gPhK^23RVS-shh{u{_Jz(*R#sGaC}s%kDQBBAFK~cr)sQHX+@JI9qB=aLv6C>#p>vE`l1ka z_oW90;7fe6S1aqu4?-aKX@#CW$fr@XU#*S;#o$mnggkq2WRyJ-1}t8b#ljk*z5Y?t zY{(4kHsnt4Oi8e$!n9t-ePt*kKRi^p>yodD4@&iT+G+C_A9zSRIQx!vbm&D2y{aB_A+LOFR74*^GcSR15aU z!ZJf=(}x|{dXVL9;di5RyNCNYFUyupX0PmmA8R$tsTdzJpht^3Mn{3|l7KV&dvE^Kc7p13=-N(VoPw~xoXR-rt zD=x!(rCE66F@QHCIlQsx$6Jwd&ZW4Mz6v}ky!V+qf@>FWzC)P{{x^f~Z1A< zqt|-sIRrja%VOw17g{=@MbJZHggO2aGO`G7(3&ClEKP4?x^5BPhQ+oo^jI`HmoE#BIp z%~QO*s+>t)PA}fqt-<@gZt~BhjRw@>gtSH;z2#|*{zAJ3K+EB~8(-<(g0kzCZ&-WB z@b{zV*l!DvQ^2ziyd!N-pW&}7ipU!VS0DI_^odS?5BDRN^k%J>{hyJ8=)WT5k1ZX2 zw#_ev{FIP^HyUpmQV*jC52EHhczQnYno_&`Qu#)ba(6;z2GX0+jzRRQX?y=`>$kT9 zwbC+sOWt@uDb&p9SUHZ%y>Y7bjZ;x0b=VL7v9*9jCs#`HS}IGbb*SWQhF2IrI~6^{ ze{wE8br`MXXdj!~KREsih+=GO7jnyy)NhSu&}j$UEJkUL3Hl~Ip;<>qU&#yD)}s3NI@HD(E0glz zd<#;nZHsd5L40Y26wgI`~i`;L*I(qb#U_%dq| z`oTmD-T~N#9_hii3sIrOgVKhw1spvX@1-1#Bb|s|6}9c%49g5*ESQ+!`CDb|ej_7$ zCnV5j>>bljjNLn7&9vE4A>v-;Xmmj1DxvK2&FEEc%t)P|E}>SGmq;s0U`E~6qu#U|wGLrzRK%*s zMDm3?z81nS%Cng_(np)o%5wues>?5x^XORfULJ%Si#*0;OCfp+5VNdyUcw6*N#~{OJfo^=gtz2a%KE1(7FCbIjmBuSC9T0jgOPU5?rZB zZ)oheCOf25Z}dcIw#mH_0vPmjsxyy zNd%Ds!2h3>G?Z=@moxxL&Q{uN7MZCVk`EDZI>?RV)WkGQgiI51asVQH0YoiL6-nufl@2*U5@Vpie90$tYC7vCYLk0K$8n7V+Fx-f&~*t z#z}CwR>E0mMwHEnLXBt`iRtwzphKeK)F1s|^5`uQ{H-OVriH+B^kXpzB^kngdSq=$FBdY7On1nsYxJxmc4YLNG*PT9`FHnP4+mLbIMh zqoegle;5?F%c+qG^+&%}fAoI*#~Q#54eF16v;OEq^+!)6Ym>7nV{!fBAaqktS_bVC z^^23sCPt$5D-sE+3|15{7FZUGgg_@5Rk(D^Xre9>PN2yrl=mT3&V?TJM}KORdQp*= z$UJQt3|+sN$wZW#AYdw8mY~&=%aY5cMO06gRgM1*%+se)I&^@V3HN0DO%ij&)}O_7 z=^i(_HFL!7ZBBjeB8$2*QGUiaM=!{%9)F$~Y@b zAIj;a79-5)1RJtTd6LN+E``z!7vZqohea-HnC`Nb2|6%*FcFOeQ7JGQbC13l803u* zseug&eI`wN?CYalEA2tu_u+mlwylwX4z(v;-1?>Ri6#sn9eEsl@LxOV*e$&3A#q&U z$7v_7duTu6%13XXx$_|uOAjZ2qp3!h_(_J5R|~XAKC=dBtzuo z5EX;-Slo}m&&wprM)BOZvSIW>>*ZndG~x>|A|eH7!BSwwj6$#qhC$53%n*(s-eX>Ab^;86 ziD)7m3A)jQs|ZL=0t*B%xqM(mCR}RO*17^~&JZVNnd``@r5D)Esg8Ngr?<5&UU+)j z;?tYY%@hiUn!ER;517{Qt*b~gex0#rXlQWdqD2FE#n@`X7NXGZOzQw{E2vLlv}W+W z(2S$@=GIM}JwCSQkdJvZiN@w-FqE<%-Pd#7a>%|pjT&UTIfN3sbXEJ)9o!qa^k>+#!#r~V8`S;@V4`v>%Gz5DEzd#bH zqLXhuz84?I-$&%K#(u63EJf-kAGwGV*HlLD?6zA9YP7Si=t|Kpb<~_R^oR_d?&yb3_+^@G@tFnm2%YFid^m; z_@|;mkn6Q!EvQB8fq4=%i2QQfH$h8ERZCIf8-vYVZ#SO#u_$f(Nj9Xyb0^=4Kx4^gs#w{>zfpH6rTR?8ZIStL=ZMerxGH!u! m3yfP}+ydhk7`MQ<1;#BfZh>(Nj9Xyb0^=4Kx4{2*7WhAGXbJBC literal 49152 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

oK9t+SW;nuuSGyKWpu_j@5Xs27U_y=B!n@d=E3@ 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 N+ydhk_#bY8{|j_eTTTD~ diff --git a/Tools/nant/bin/NAnt.VisualCppTasks.xml b/Tools/nant/bin/NAnt.VisualCppTasks.xml index 876d46d..95a9075 100755 --- a/Tools/nant/bin/NAnt.VisualCppTasks.xml +++ b/Tools/nant/bin/NAnt.VisualCppTasks.xml @@ -5,24 +5,24 @@ -

- Compiles C/C++ programs using cl.exe, Microsoft's C/C++ compiler. - - - This task is intended for version 13.00.9466 of cl.exe. - - - Compiles helloworld.cpp for the Common Language Runtime. - - - - - - - ]]> - - + + Compiles C/C++ programs using cl.exe, Microsoft's C/C++ compiler. + + + This task is intended for version 13.00.9466 of cl.exe. + + + Compiles helloworld.cpp for the Common Language Runtime. + + + + + + + ]]> + + @@ -30,77 +30,77 @@ - - Compiles the sources. - + + Compiles the sources. + - - Determines if the sources need to be compiled. - + + Determines if the sources need to be compiled. + - - Determines whether the precompiled header file is up-to-date. - - - if no precompiled header file was specified; - otherwise, . - - - In order to determine accurately whether the precompile header file - is up-to-date, we'd need scan all the header files that are pulled - in. As this is not implemented right now, its safer to always - recompile. - + + Determines whether the precompiled header file is up-to-date. + + + if no precompiled header file was specified; + otherwise, . + + + In order to determine accurately whether the precompile header file + is up-to-date, we'd need scan all the header files that are pulled + in. As this is not implemented right now, its safer to always + recompile. + - - Determines whether any file that are includes in the specified - source file has been updated after the obj was compiled. - - The source file to check. - The last write time of the compiled obj. - - The full path to the include file that was modified after the obj - was compiled, or if no include files were - modified since the obj was compiled. - - - - To determine what includes are defined in a source file, conditional - directives are not honored. - - - If a given include cannot be resolved to an existing file, then - it will be considered stable. - - + + Determines whether any file that are includes in the specified + source file has been updated after the obj was compiled. + + The source file to check. + The last write time of the compiled obj. + + The full path to the include file that was modified after the obj + was compiled, or if no include files were + modified since the obj was compiled. + + + + To determine what includes are defined in a source file, conditional + directives are not honored. + + + If a given include cannot be resolved to an existing file, then + it will be considered stable. + + - - Quotes an argument value and duplicates trailing backslahes. - - The argument value to quote. - - The quotes argument value. - + + Quotes an argument value and duplicates trailing backslahes. + + The argument value to quote. + + The quotes argument value. + - - Determines the file name of the OBJ file for the specified source - file. - - The source file for which the OBJ file should be determined. - The path of the object file. - - The file name of the OBJ file for the specified source file. - + + Determines the file name of the OBJ file for the specified source + file. + + The source file for which the OBJ file should be determined. + The path of the object file. + + The file name of the OBJ file for the specified source file. + - - Directory where all output files are placed. - + + Directory where all output files are placed. + @@ -123,244 +123,244 @@ - - Specifies whether Managed Extensions for C++ should be enabled. - The default is . - + + Specifies whether Managed Extensions for C++ should be enabled. + The default is . + - - Tells the compiler to use the specified character set. - + + Tells the compiler to use the specified character set. + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - The list of files to compile. - + + The list of files to compile. + - - The list of directories in which to search for include files. - + + The list of directories in which to search for include files. + - - Directories that the compiler will search to resolve file references - passed to the #using directive. - + + Directories that the compiler will search to resolve file references + passed to the #using directive. + - - Specifies metadata files to reference in this compilation as an - alternative to passing a file name to #using in source code. - + + Specifies metadata files to reference in this compilation as an + alternative to passing a file name to #using in source code. + - - Macro definitions to pass to cl.exe. - Each entry will generate a /D - + + Macro definitions to pass to cl.exe. + Each entry will generate a /D + - - Macro undefines (/U) to pass to cl.exe. - + + Macro undefines (/U) to pass to cl.exe. + - - A name to override the default object file name; can be either a file - or directory name. The default is the output directory. - + + A name to override the default object file name; can be either a file + or directory name. The default is the output directory. + - - A name for the compiler-generated PDB file; can be either a file or - directory name. The default is the output directory. - + + A name for the compiler-generated PDB file; can be either a file or + directory name. The default is the output directory. + - - Gets the filename of the external program to start. - - The filename of the external program. + + Gets the filename of the external program to start. + + The filename of the external program. - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Defines the supported modes for the use of precompiled header files. - + + Defines the supported modes for the use of precompiled header files. + - - Create a precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yc. - + + Create a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + - - Automatically create a precompiled header file if necessary. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /YX. - + + Automatically create a precompiled header file if necessary. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /YX. + - - Use a (previously generated) precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yu. - + + Use a (previously generated) precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yu. + - - Run lib.exe, Microsoft's Library Manager. - - - Create a library. - - - - - - - ]]> - - + + Run lib.exe, Microsoft's Library Manager. + + + Create a library. + + + + + + + ]]> + + - - Creates the library. - + + Creates the library. + - - Determines if the sources need to be linked. - + + Determines if the sources need to be linked. + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - The output file. - + + The output file. + - - The module definition file. - + + The module definition file. + - - The list of files to combine into the output file. - + + The list of files to combine into the output file. + - - Symbols to add to the symbol table. - + + Symbols to add to the symbol table. + - - Names of default libraries to ignore. - + + Names of default libraries to ignore. + - - The list of additional library directories to search. - + + The list of additional library directories to search. + - - Gets the filename of the external program to start. - - The filename of the external program. + + Gets the filename of the external program to start. + + The filename of the external program. - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Links files using link.exe, Microsoft's Incremental Linker. - - - This task is intended for version 7.00.9466 of link.exe. - - - - Combine all object files in the current directory into helloworld.exe. - - - - - - - - ]]> - - + + Links files using link.exe, Microsoft's Incremental Linker. + + + This task is intended for version 7.00.9466 of link.exe. + + + + Combine all object files in the current directory into helloworld.exe. + + + + + + + + ]]> + + - - Links the sources. - + + Links the sources. + - - Determines if the output needs linking. - + + Determines if the output needs linking. + - - Quotes an argument value and duplicates trailing backslahes. - - The argument value to quote. - - The quotes argument value. - + + Quotes an argument value and duplicates trailing backslahes. + + The argument value to quote. + + The quotes argument value. + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - Create debugging information for the .exe file or DLL. The default is - . - + + Create debugging information for the .exe file or DLL. The default is + . + - - The output file. - + + The output file. + @@ -370,237 +370,237 @@ - - The name of a module-definition file (.def) to be passed to the - linker. - + + The name of a module-definition file (.def) to be passed to the + linker. + - - Specified DLLs for delay loading. - + + Specified DLLs for delay loading. + - - The list of files to combine into the output file. - + + The list of files to combine into the output file. + - - The list of additional library directories to search. - + + The list of additional library directories to search. + - - Link the specified modules into this assembly. - + + Link the specified modules into this assembly. + - - Embed the specified resources into this assembly. - + + Embed the specified resources into this assembly. + - - Symbols to add to the symbol table. - + + Symbols to add to the symbol table. + - - Names of libraries that you want the linker to ignore when it - resolves external references. - + + Names of libraries that you want the linker to ignore when it + resolves external references. + - - Gets the filename of the external program to start. - - The filename of the external program. + + Gets the filename of the external program to start. + + The filename of the external program. - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Compiles messages using mc.exe, Microsoft's Win32 message compiler. - - - - Compile text.mc using the default options. - - - - ]]> - - - Compile text.mc, passing a path to store the header, the rc - file and some additonal options. - - - - ]]> - - + + Compiles messages using mc.exe, Microsoft's Win32 message compiler. + + + + Compile text.mc using the default options. + + + + ]]> + + + Compile text.mc, passing a path to store the header, the rc + file and some additonal options. + + + + ]]> + + - - Compiles the sources. - + + Compiles the sources. + - - Determine if source files need re-building. - + + Determine if source files need re-building. + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - Path to store header file. The default is the project base directory. - + + Path to store header file. The default is the project base directory. + - - Path to store RC file. The default is the project base directory. - + + Path to store RC file. The default is the project base directory. + - - Input filename. - + + Input filename. + - - Gets the filename of the external program to start. - - - The filename of the external program. - + + Gets the filename of the external program to start. + + + The filename of the external program. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - This tasks allows you to run MIDL.exe. - - - - This task only supports a small subset of the MIDL.EXE command line - switches, but you can use the options element to specify any other - unsupported commands you want to specify. - - - - - - - - - - - - - ]]> - - + + This tasks allows you to run MIDL.exe. + + + + This task only supports a small subset of the MIDL.EXE command line + switches, but you can use the options element to specify any other + unsupported commands you want to specify. + + + + + + + + + + + + + ]]> + + - - This is where the work is done. - + + This is where the work is done. + - - Check output files to see if we need rebuilding. - - if a rebuild is needed; otherwise, - . + + Check output files to see if we need rebuilding. + + if a rebuild is needed; otherwise, + . - - Check output files to see if we need rebuilding. - - - if a rebuild is needed; otherwise, - . - + + Check output files to see if we need rebuilding. + + + if a rebuild is needed; otherwise, + . + - - Writes the response file for midl.exe. - + + Writes the response file for midl.exe. + - - The /acf switch allows the user to supply an - explicit ACF file name. The switch also - allows the use of different interface names in - the IDL and ACF files. - + + The /acf switch allows the user to supply an + explicit ACF file name. The switch also + allows the use of different interface names in + the IDL and ACF files. + - - The /align switch is functionally the same as the - MIDL /Zp option and is recognized by the MIDL compiler - solely for backward compatibility with MkTypLib. - - The alignment value can be 1, 2, 4, or 8. + + The /align switch is functionally the same as the + MIDL /Zp option and is recognized by the MIDL compiler + solely for backward compatibility with MkTypLib. + + The alignment value can be 1, 2, 4, or 8. - - The /app_config switch selects application-configuration - mode, which allows you to use some ACF keywords in the - IDL file. With this MIDL compiler switch, you can omit - the ACF and specify an interface in a single IDL file. - + + The /app_config switch selects application-configuration + mode, which allows you to use some ACF keywords in the + IDL file. With this MIDL compiler switch, you can omit + the ACF and specify an interface in a single IDL file. + - - The /char switch helps to ensure that the MIDL compiler - and C compiler operate together correctly for all char - and small types. - - Can be one of signed | unsigned | ascii7 + + The /char switch helps to ensure that the MIDL compiler + and C compiler operate together correctly for all char + and small types. + + Can be one of signed | unsigned | ascii7 - - The /client switch directs the MIDL compiler to generate - client-side C source files for an RPC interface - - can be one of stub | none + + The /client switch directs the MIDL compiler to generate + client-side C source files for an RPC interface + + can be one of stub | none - - The /cstub switch specifies the name of the client - stub file for an RPC interface. - + + The /cstub switch specifies the name of the client + stub file for an RPC interface. + @@ -610,198 +610,198 @@ - - The /env switch selects the - environment in which the application runs. - - It can take the values win32 and win64 + + The /env switch selects the + environment in which the application runs. + + It can take the values win32 and win64 - - The /Oi switch directs the MIDL compiler to - use a fully-interpreted marshaling method. - The /Oic and /Oicf switches provide additional - performance enhancements. - - - If you specify the Oi attribute, you must set it to - one of the values: - - Oi="" - - Oi="c" - - Oi="f" - - Oi="cf" - + + The /Oi switch directs the MIDL compiler to + use a fully-interpreted marshaling method. + The /Oic and /Oicf switches provide additional + performance enhancements. + + + If you specify the Oi attribute, you must set it to + one of the values: + - Oi="" + - Oi="c" + - Oi="f" + - Oi="cf" + - - Specifies a file name for the type library generated by the MIDL - compiler. - + + Specifies a file name for the type library generated by the MIDL + compiler. + - - Specifies the name of the header file. - + + Specifies the name of the header file. + - - Specifies the name of the interface identifier file for a COM - interface, overriding the default name obtained by adding _i.c - to the IDL file name. - + + Specifies the name of the interface identifier file for a COM + interface, overriding the default name obtained by adding _i.c + to the IDL file name. + - - Specifies the name of the interface proxy file for a COM interface. - + + Specifies the name of the interface proxy file for a COM interface. + - - Name of .IDL file to process. - + + Name of .IDL file to process. + - - Additional options to pass to midl.exe. - + + Additional options to pass to midl.exe. + - - Macro definitions to pass to mdil.exe. - Each entry will generate a /D - + + Macro definitions to pass to mdil.exe. + Each entry will generate a /D + - - Macro undefines (/U) to pass to mdil. - + + Macro undefines (/U) to pass to mdil. + - - The list of directories in which to search for include files. - + + The list of directories in which to search for include files. + - - Filename of program to execute - + + Filename of program to execute + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Compiles resources using rc.exe, Microsoft's Win32 resource - compiler. - - - - Compile text.rc to text.res using the default options. - - - - ]]> - - - - - Compile text.rc, passing an additional option. - - - - ]]> - - + + Compiles resources using rc.exe, Microsoft's Win32 resource + compiler. + + + + Compile text.rc to text.res using the default options. + + + + ]]> + + + + + Compile text.rc, passing an additional option. + + + + ]]> + + - - Compile the resource file - + + Compile the resource file + - - Determines if the resource need compiling. - + + Determines if the resource need compiling. + - - Check if a resource file has been updated. - - - + + Check if a resource file has been updated. + + + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - Output file. - + + Output file. + - - The resource file to compile. - + + The resource file to compile. + - - Default language ID. - + + Default language ID. + - - The list of directories in which to search for include files. - + + The list of directories in which to search for include files. + - - Macro definitions to pass to rc.exe. - Each entry will generate a /d - + + Macro definitions to pass to rc.exe. + Each entry will generate a /d + - - Filename of program to execute - + + Filename of program to execute + - - Arguments of program to execute - + + Arguments of program to execute + - - Defines the character sets that can be used by the C++ compiler. - + + Defines the character sets that can be used by the C++ compiler. + - - Have the compiler determine the character set. - + + Have the compiler determine the character set. + - - Unicode character set. - + + Unicode character set. + - - Multi-byte character set. - + + Multi-byte character set. + - - Represents a library. - + + Represents a library. +
@@ -816,21 +816,21 @@ is . - - The name of the library. - + + The name of the library. + - - If then the element will be processed; - otherwise, skipped. The default is . - + + If then the element will be processed; + otherwise, skipped. The default is . + - - If then the element will be skipped; - otherwise, processed. The default is . - + + If then the element will be skipped; + otherwise, processed. The default is . + @@ -884,11 +884,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -921,10 +921,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -939,33 +939,33 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Represents a symbol. - + + Represents a symbol. + @@ -980,21 +980,21 @@ is . - - The name of the symbol. - + + The name of the symbol. + - - If then the element will be processed; - otherwise, skipped. The default is . - + + If then the element will be processed; + otherwise, skipped. The default is . + - - If then the element will be skipped; - otherwise, processed. The default is . - + + If then the element will be skipped; + otherwise, processed. The default is . + @@ -1048,11 +1048,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -1085,10 +1085,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -1103,55 +1103,55 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Defines how to deal with backslashes in values of command line - arguments. - + + Defines how to deal with backslashes in values of command line + arguments. + - - Does not perform any processing on backslashes. - + + Does not perform any processing on backslashes. + - - Duplicates the trailing backslash. - + + Duplicates the trailing backslash. + - - Fixes the trailing backslash by replaces trailing double backslashes - with only one backslash and removing single trailing backslashes. - + + Fixes the trailing backslash by replaces trailing double backslashes + with only one backslash and removing single trailing backslashes. + - - Removes all the trailing backslashes. - + + Removes all the trailing backslashes. + @@ -1172,29 +1172,29 @@ - - Duplicates the trailing backslash. - - The input string to check and duplicate the trailing backslash if necessary. - The result string after being processed. - - Also duplicates trailing backslash in quoted value. - + + Duplicates the trailing backslash. + + The input string to check and duplicate the trailing backslash if necessary. + The result string after being processed. + + Also duplicates trailing backslash in quoted value. + - - Fixes the trailing backslash. This function replaces the trailing double backslashes with - only one backslash. It also, removes the single trailing backslash. - - The input string. - The result string after being processed. + + Fixes the trailing backslash. This function replaces the trailing double backslashes with + only one backslash. It also, removes the single trailing backslash. + + The input string. + The result string after being processed. - - Removes all the trailing backslashes from the input. - - The input string. - The result string without trailing backslashes. + + Removes all the trailing backslashes from the input. + + The input string. + The result string without trailing backslashes. diff --git a/Tools/nant/bin/NAnt.Win32Tasks.dll b/Tools/nant/bin/NAnt.Win32Tasks.dll index ab2bfa78857e558b02edb18b3042339eb91c94f5..80ec5c15d29cba56a8e10f9dc2e8de8ec9a5b4e7 100755 GIT binary patch literal 40960 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 diff --git a/Tools/nant/bin/NAnt.Win32Tasks.xml b/Tools/nant/bin/NAnt.Win32Tasks.xml index 0fb6349..1478bd8 100755 --- a/Tools/nant/bin/NAnt.Win32Tasks.xml +++ b/Tools/nant/bin/NAnt.Win32Tasks.xml @@ -5,15 +5,15 @@ - - Groups a set of functions that convert Windows native filenames to - Cygwin POSIX-style pathnames and vice versa. - - - It can be used when a Cygwin program needs to pass a file name to a - native Windows program, or expects to get a file name from a native - Windows program. - + + Groups a set of functions that convert Windows native filenames to + Cygwin POSIX-style pathnames and vice versa. + + + It can be used when a Cygwin program needs to pass a file name to a + native Windows program, or expects to get a file name from a native + Windows program. + @@ -67,128 +67,128 @@ - - Factory method to return a new instance of ExecTask - - - + + Factory method to return a new instance of ExecTask + + + - - Generates a Windows Forms Control that wraps ActiveX Controls defined - in an OCX. - - - - - ]]> - - + + Generates a Windows Forms Control that wraps ActiveX Controls defined + in an OCX. + + + + + ]]> + + - - Import the ActiveX control. - + + Import the ActiveX control. + - - Determines whether the assembly needs to be created again. - - - if the assembly needs to be created again; - otherwise, . - + + Determines whether the assembly needs to be created again. + + + if the assembly needs to be created again; + otherwise, . + - - Filename of the .ocx file. - + + Filename of the .ocx file. + - - Filename of the generated assembly. - + + Filename of the generated assembly. + - - Specifies the file containing the public key to use to sign the - resulting assembly. - - - The file containing the public key to use to sign the resulting - assembly. - + + Specifies the file containing the public key to use to sign the + resulting assembly. + + + The file containing the public key to use to sign the resulting + assembly. + - - Specifies the publisher's official public/private key pair with which - the resulting assembly should be signed with a strong name. - - - The keyfile to use to sign the resulting assembly with a strong name. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the publisher's official public/private key pair with which + the resulting assembly should be signed with a strong name. + + + The keyfile to use to sign the resulting assembly with a strong name. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the key container in which the public/private key pair - should be found that should be used to sign the resulting assembly - with a strong name. - - - The key container containing a public/private key pair that should - be used to sign the resulting assembly. - + + Specifies the key container in which the public/private key pair + should be found that should be used to sign the resulting assembly + with a strong name. + + + The key container containing a public/private key pair that should + be used to sign the resulting assembly. + - - Specifies to sign the resulting control using delayed signing. - + + Specifies to sign the resulting control using delayed signing. + - - Determines whether C# source code for the Windows Form wrapper should - be generated. The default is . - + + Determines whether C# source code for the Windows Form wrapper should + be generated. The default is . + - - Assembly to use for Runtime Callable Wrapper rather than generating - new one [.NET 1.1 or higher]. - + + Assembly to use for Runtime Callable Wrapper rather than generating + new one [.NET 1.1 or higher]. + - - Indicates whether aximp supports using an existing Runtime - Callable Wrapper for a given target framework. The default is - . - + + Indicates whether aximp supports using an existing Runtime + Callable Wrapper for a given target framework. The default is + . + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Reads the most recent Windows SDK InstallationFolder key into a NAnt property - - - - - ]]> - - + + Reads the most recent Windows SDK InstallationFolder key into a NAnt property + + + + + ]]> + + - - locate the most recent WinSDK installed - + + locate the most recent WinSDK installed + @@ -202,153 +202,153 @@ - - - The property to set to the value stored in the InstalledFolder key of the located WinSDK version. - - + + + The property to set to the value stored in the InstalledFolder key of the located WinSDK version. + + - - - The minimum acceptable Windows SDK version. - - + + + The minimum acceptable Windows SDK version. + + - - - The maximum acceptable Windows SDK version. - - + + + The maximum acceptable Windows SDK version. + + - - - The minimum acceptable .NET sdk version. - - + + + The minimum acceptable .NET sdk version. + + - - - The maximum acceptable .NET sdk version. - - + + + The maximum acceptable .NET sdk version. + + - - Reads the mono registry path into a NAnt property. - - - The mono registry keyes can exist in one of two places depending on the platform. This - task will check to see which registry path that Mono is using. - - - - - ]]> - - + + Reads the mono registry path into a NAnt property. + + + The mono registry keyes can exist in one of two places depending on the platform. This + task will check to see which registry path that Mono is using. + + + + + ]]> + + - - The Mono reg key to default to if none of the keys in _regKeys are found - in the running machine. - + + The Mono reg key to default to if none of the keys in _regKeys are found + in the running machine. + - - Private property name to assign the Mono registry path to. - + + Private property name to assign the Mono registry path to. + - - Private array of Mono registry paths to test in order. - - - If new registry paths are used by the Mono team, add them to this array. - + + Private array of Mono registry paths to test in order. + + + If new registry paths are used by the Mono team, add them to this array. + - - Locates the appropriate Mono registry path to use. - + + Locates the appropriate Mono registry path to use. + - - - The property to set to the Mono registry path. - - + + + The property to set to the Mono registry path. + + - - Reads a value or set of values from the Windows Registry into one or - more NAnt properties. - - - Read a single value from the registry. - - - ]]> - - Read all the registry values in a key. - - - ]]> - - + + Reads a value or set of values from the Windows Registry into one or + more NAnt properties. + + + Read a single value from the registry. + + + ]]> + + Read all the registry values in a key. + + + ]]> + + - - read the specified registry value - + + read the specified registry value + - - Returns the hive for a given key. - - - - - The hive for a given key. - + + Returns the hive for a given key. + + + + + The hive for a given key. + - - Returns the key for a given registry hive. - - The registry hive to return the key for. - - The key for a given registry hive. - + + Returns the key for a given registry hive. + + The registry hive to return the key for. + + The key for a given registry hive. + - - The property to set to the specified registry key value. - If this attribute is used then a single value will be read. - + + The property to set to the specified registry key value. + If this attribute is used then a single value will be read. + - - The prefix to use for the specified registry key values. - If this attribute is used then all registry values will be read and stored as properties with this prefix. - - - Registry values a, b, c will be turned into prefixa, prefixb, prefixc named properties - + + The prefix to use for the specified registry key values. + If this attribute is used then all registry values will be read and stored as properties with this prefix. + + + Registry values a, b, c will be turned into prefixa, prefixb, prefixc named properties + - - The registry key to read, including the path. - - - SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot - + + The registry key to read, including the path. + + + SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot + @@ -361,55 +361,55 @@ - - Registers an assembly, or set of assemblies for use from COM clients. - - - - Refer to the Regasm - documentation for more information on the regasm tool. - - - - - Register types in a single assembly. - - - - ]]> - - - - - Register types of an assembly and generate a type library containing - definitions of accessible types defined within the assembly. - - - - ]]> - - - - - Register types of set of assemblies at once, while specifying a set - of reference assemblies. - - - - - - - - - - - - ]]> - - + + Registers an assembly, or set of assemblies for use from COM clients. + + + + Refer to the Regasm + documentation for more information on the regasm tool. + + + + + Register types in a single assembly. + + + + ]]> + + + + + Register types of an assembly and generate a type library containing + definitions of accessible types defined within the assembly. + + + + ]]> + + + + + Register types of set of assemblies at once, while specifying a set + of reference assemblies. + + + + + + + + + + + + ]]> + + @@ -419,9 +419,9 @@ The of which the should be updated. - - Registers or unregisters a single assembly, or a group of assemblies. - + + Registers or unregisters a single assembly, or a group of assemblies. + @@ -430,371 +430,371 @@ - - Registry file to export to instead of entering the types directly - into the registry. - + + Registry file to export to instead of entering the types directly + into the registry. + - - Set the code base registry setting. - + + Set the code base registry setting. + - - Only refer to already registered type libraries. - + + Only refer to already registered type libraries. + - - Export the assemblies to the specified type library and register it. - + + Export the assemblies to the specified type library and register it. + - - Unregister the assembly. The default is . - + + Unregister the assembly. The default is . + - - The set of assemblies to register, or unregister. - + + The set of assemblies to register, or unregister. + - - The set of assembly references. - + + The set of assembly references. + - - Gets the working directory for the application. - - - The working directory for the application. - + + Gets the working directory for the application. + + + The working directory for the application. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Gets the filename of the external program to start. - - - The filename of the external program. - - - Override in derived classes to explicitly set the location of the - external tool. - + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + - - Exports a .NET assembly to a type library that can be used from unmanaged - code (wraps Microsoft's tlbexp.exe). - - - - See the Microsoft.NET Framework SDK documentation for details. - - - - Export DotNetAssembly.dll to LegacyCOM.dll. - - - ]]> - - + + Exports a .NET assembly to a type library that can be used from unmanaged + code (wraps Microsoft's tlbexp.exe). + + + + See the Microsoft.NET Framework SDK documentation for details. + + + + Export DotNetAssembly.dll to LegacyCOM.dll. + + + ]]> + + - - Exports the type library. - + + Exports the type library. + - - Determines whether the assembly needs to be exported to a type - library again. - - - if the assembly needs to be exported to a - type library; otherwise, . - + + Determines whether the assembly needs to be exported to a type + library again. + + + if the assembly needs to be exported to a + type library; otherwise, . + - - Specifies the assembly for which to export a type library. - - - The assembly for which to export a type library. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the assembly for which to export a type library. + + + The assembly for which to export a type library. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the name of the type library file to generate. - - - The name of the type library file to generate. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the name of the type library file to generate. + + + The name of the type library file to generate. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the file used to determine capitalization of names in a - type library. - - - The file used to determine capitalization of names in a type library. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the file used to determine capitalization of names in a + type library. + + + The file used to determine capitalization of names in a type library. + + See the Microsoft.NET Framework SDK documentation for details. - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Imports a type library to a .NET assembly (wraps Microsoft's tlbimp.exe). - - - - This task lets you easily create interop assemblies. By default, it will - not reimport if the underlying COM TypeLib or reference has not changed. - - - See the Microsoft.NET Framework SDK documentation for details. - - - - Import LegacyCOM.dll to DotNetAssembly.dll. - - - ]]> - - - - - Generate an assembly named "Interop.MSVidCtlLib.dll" for the - MS Video Control 1.0 Type Library, transforming any [out, retval] - parameters of methods on dispinterfaces in the type library into - return values in the managed library. - - - - - - - - ]]> - - + + Imports a type library to a .NET assembly (wraps Microsoft's tlbimp.exe). + + + + This task lets you easily create interop assemblies. By default, it will + not reimport if the underlying COM TypeLib or reference has not changed. + + + See the Microsoft.NET Framework SDK documentation for details. + + + + Import LegacyCOM.dll to DotNetAssembly.dll. + + + ]]> + + + + + Generate an assembly named "Interop.MSVidCtlLib.dll" for the + MS Video Control 1.0 Type Library, transforming any [out, retval] + parameters of methods on dispinterfaces in the type library into + return values in the managed library. + + + + + + + + ]]> + + - - Imports the type library to a .NET assembly. - + + Imports the type library to a .NET assembly. + - - Returns the path of the type library, removing the identifier of - the type library from the specified string. - - The path from which to extract the path of the type library. - - The path of the type library without the type library identifier. - - - An example of a path which includes the identifier of the type - library (in this case "2") is - C:\WINDOWS\system32\msvidctl.dll\2. - + + Returns the path of the type library, removing the identifier of + the type library from the specified string. + + The path from which to extract the path of the type library. + + The path of the type library without the type library identifier. + + + An example of a path which includes the identifier of the type + library (in this case "2") is + C:\WINDOWS\system32\msvidctl.dll\2. + - - Determines whether the type library needs to be imported again. - - - if the type library needs to be imported; - otherwise, . - + + Determines whether the type library needs to be imported again. + + + if the type library needs to be imported; + otherwise, . + - - Specifies the name of the output file. - - - The name of the output file. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the name of the output file. + + + The name of the output file. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the namespace in which to produce the assembly. - - - The namespace in which to produce the assembly. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the namespace in which to produce the assembly. + + + The namespace in which to produce the assembly. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the version number of the assembly to produce. - - - - The version number of the assembly to produce. - - - The version number should be in the format major.minor.build.revision. - - - See the Microsoft.NET Framework SDK documentation for details. - - + + Specifies the version number of the assembly to produce. + + + + The version number of the assembly to produce. + + + The version number should be in the format major.minor.build.revision. + + + See the Microsoft.NET Framework SDK documentation for details. + + - - Specifies whether the resulting assembly should be signed with a - strong name using delayed signing. The default is . - - - if the resulting assembly should be signed - with a strong name using delayed signing; otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the resulting assembly should be signed with a + strong name using delayed signing. The default is . + + + if the resulting assembly should be signed + with a strong name using delayed signing; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether a primary interop assembly should be produced for - the specified type library. The default is . - - - if a primary interop assembly should be - produced; otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether a primary interop assembly should be produced for + the specified type library. The default is . + + + if a primary interop assembly should be + produced; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the file containing the public key to use to sign the - resulting assembly. - - - The file containing the public key to use to sign the resulting - assembly. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the file containing the public key to use to sign the + resulting assembly. + + + The file containing the public key to use to sign the resulting + assembly. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the publisher's official public/private key pair with which - the resulting assembly should be signed with a strong name. - - - The keyfile to use to sign the resulting assembly with a strong name. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the publisher's official public/private key pair with which + the resulting assembly should be signed with a strong name. + + + The keyfile to use to sign the resulting assembly with a strong name. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the key container in which the public/private key pair - should be found that should be used to sign the resulting assembly - with a strong name. - - - The key container containing a public/private key pair that should - be used to sign the resulting assembly. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the key container in which the public/private key pair + should be found that should be used to sign the resulting assembly + with a strong name. + + + The key container containing a public/private key pair that should + be used to sign the resulting assembly. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the assembly files to use to resolve references to types - defined outside the current type library. - - - The assembly files to use to resolve references to types defined - outside the current type library. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the assembly files to use to resolve references to types + defined outside the current type library. + + + The assembly files to use to resolve references to types defined + outside the current type library. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether a type library should not be imported if all - references within the current assembly or the reference assemblies - cannot be resolved. The default is . - - - if a type library should not be imported if - all references cannot be resolved; otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether a type library should not be imported if all + references within the current assembly or the reference assemblies + cannot be resolved. The default is . + + + if a type library should not be imported if + all references cannot be resolved; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether to import a COM style SafeArray as a managed - class type. The default is . - - - if a COM style SafeArray should be imported - as a managed class type; otherwise, - . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether to import a COM style SafeArray as a managed + class type. The default is . + + + if a COM style SafeArray should be imported + as a managed class type; otherwise, + . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies how to transform the metadata [.NET 1.1 or higher]. - + + Specifies how to transform the metadata [.NET 1.1 or higher]. + - - Specifies the source type library that gets passed to the type - library importer. - - - The source type library that gets passed to the type library - importer. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the source type library that gets passed to the type + library importer. + + + The source type library that gets passed to the type library + importer. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether interfaces should be produced without .NET Framework - security checks. The default is . - - - if interfaces without .NET Framework security - checks should be produced; otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether interfaces should be produced without .NET Framework + security checks. The default is . + + + if interfaces without .NET Framework security + checks should be produced; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Indicates whether tlbimp supports transforming metadata for - a given target framework. The default is . - + + Indicates whether tlbimp supports transforming metadata for + a given target framework. The default is . + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + diff --git a/Tools/nant/bin/NAnt.exe b/Tools/nant/bin/NAnt.exe index d72dfeba019cf3d63e7864191c3f2e2015ad58fe..55f9e29a632e1a7e24f6fa16a198aeb6320bef1b 100755 GIT binary patch delta 6099 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 Y&bUb_Sj)>FelIMUa2I|c#ygGw0W_~=f&c&j diff --git a/Tools/nant/bin/NAnt.exe.config b/Tools/nant/bin/NAnt.exe.config index b6aed41..a3dc8ec 100755 --- a/Tools/nant/bin/NAnt.exe.config +++ b/Tools/nant/bin/NAnt.exe.config @@ -1300,14 +1300,14 @@ - - + + - - + + @@ -1370,6 +1370,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + true + + + true + true + true + true + true + true + true + true + true + + + true + + + true + true + true + true + + + true + true + + + sn + + + lc + true + + + - - - - diff --git a/Tools/nant/bin/NAnt.xml b/Tools/nant/bin/NAnt.xml index 64a0575..286dda1 100755 --- a/Tools/nant/bin/NAnt.xml +++ b/Tools/nant/bin/NAnt.xml @@ -11,47 +11,47 @@ - - Entry point for executable - - Command Line arguments - The result of the real execution + + Entry point for executable + + Command Line arguments + The result of the real execution - - Constructs the privatebinpath. - - - - For the common version dir, we do not use the framework version - as defined in the NAnt configuration file but the CLR version - since the assemblies in that directory are not specific to a - certain family and the framwork version might differ between - families (eg. mono 1.0 == .NET 1.1). - - - The runtime framework. - The base directory of the domain. - - The privatebinpath. - + + Constructs the privatebinpath. + + + + For the common version dir, we do not use the framework version + as defined in the NAnt configuration file but the CLR version + since the assemblies in that directory are not specific to a + certain family and the framwork version might differ between + families (eg. mono 1.0 == .NET 1.1). + + + The runtime framework. + The base directory of the domain. + + The privatebinpath. + - - Given an absolute directory and an absolute file name, returns a - relative file name. - - An absolute directory. - An absolute file name. - - A relative file name for the given absolute file name. - + + Given an absolute directory and an absolute file name, returns a + relative file name. + + An absolute directory. + An absolute file name. + + A relative file name for the given absolute file name. + - - Helper class for invoking the application entry point in NAnt.Core - and passing the command-line arguments. - + + Helper class for invoking the application entry point in NAnt.Core + and passing the command-line arguments. + @@ -62,17 +62,17 @@ Directories relative to the base directory of the AppDomain to probe for missing assembly references. - - Invokes the application entry point in NAnt.Core. - + + Invokes the application entry point in NAnt.Core. + - - Gets the status that the build process returned when it exited. - - - The code that the build process specified when it terminated. - + + Gets the status that the build process returned when it exited. + + + The code that the build process specified when it terminated. + diff --git a/Tools/nant/bin/NDoc.Documenter.NAnt.dll b/Tools/nant/bin/NDoc.Documenter.NAnt.dll index d9dcccb470cf30e1a48fbe868600e0120dd207fa..e6468832088e6243dc7bca357a206d9cd9f709bc 100755 GIT binary patch delta 13545 zcmb_j4SZZxl|T2sH}Ac9^O1QoX}&{~elhJNAx&DEhEnZKRR3Q(jV} zgzyp+2tO&BP1ylu`4TLO0$MS4L9`+YB5V;@MOikL55+|+uIR1{b^qtSH)-tbqaRb3;@9?W50~Nx^4~WPL8H#@Gv(uuXDuRT|^kZX=T_xTRdgt$wVMF4Gv&&Q>v~28fvMJc!CZX1eF)d!=i@ z!w_idbsdixQn_f4dd_i{W+?!%y3J;%YUE6A8^ zuVE)l5(Ouuqp+GvW0al@k(kuN={lZIxU#&wryi}84zEr@qu*qo^f7ew>{J$_mrEVJ z^pHqJooJ&4>NKXl1bP{TOXmfQFoo08l{i?&?874IPRMm6(phS-AO+{_W+bE}Mg~)< zj)HziEA&)eaL)iirV(C-`wa7rht1hEK*}V?%+BOiER%L(S!^P^7u!&zEE*Y0l_NAk z&9DHw?x~k+o!Iu-%#SYZNad%9OhdYI_yy zt7WlsZMO@O*(S8ICji(+MYb7Fe_gWhsqbR+c@TXHNV$-60_Dj#M~ zM2OjGb?yJNWPCk(P317i<3R?ww!QZOA$EnZ+R5B)Xt%PPCVPBC;l!ExO+^6yp=gxz4KEPI>t>RE~H!}GoUS<`Me(>pq z;M>CN@!*SQ&Ud1IuevJBl#3o@sGSxzc3eJsSNAF|{d2xf7^pxD0L8zETrdhgU`IZGylD91ETZXkS zwk+(}L{>ys_q$H5pR>vn{^dwhnFN(G!u z!`L7?4fncnGQ5&YX7=RCgMHm1aE<)iKBcx2Qjj}WtcF$sf2ph`D zMK`lc*fe@M!MP`DHJWBVgl756SWT%W!h*8#1|7r`9UVDRU;QC(sp>1!%kXqxgkj}7 zF$2M4E$3m9B7G{JH$YC@Wu#9-JN+R5l5TAnZeO9=W$Dv{=NZBC!@=_-!E>d0mZxz6 zK;N=-hyV1_X9WcK6pZrpssLZDo)zhH_(`+4G)Hw7l;(XX-E~#wE+MJ)GbYpLvg9l^ zOJCMf9_&j^kY#LK)>Acqk>b(`!iO4gfbF?JHxybqOl zkuYQLuNW12kt}0HvK&i4Km_3^cY^!R6eV%K@~YHo`lm9k_fNw^=bMnqUPxk%RWx#Y zZCRW$XONz~0P>uGM)uX7f_`SX#^1nEd|17e8MtC;9{cv4p7?m0r(SfP_e5CWiJHR zpHACdMeMxA>O3l()xKcn%7PL{Pjj6U&^Hy+k#T*xN0|@j8Anw+;{!=4@2X=7tKNQ- zf5M0TlL;pXpG+JMmJsni~=2D!rO>LTP2CSqKHrDSTE3Vwa?%8A#Y@1RQ{^3a{Yzi zBR`-zQMD$DXyk2V*%JQ*)>N665cxf^6m^$&ST$)Ia3YRg^a@dFB$G0-8xSRajdl@Q zD)aNfawcYv;}3&nH-cW#64T1Fo6wrven_C=hlVJ5>ZFOZO^2|is@!ZRMEn6t15!}< zf)3k!ZIi<-Gd2H0;C3LA)qS8bl_y=8CuKyr8mj$%Or1(?t*j#ZaVUy~8(P9}!le8b zDhaz+=eJ1X$o~2&uQ1Oj1x9vbO({RbP=1Jp!l=9QB#esLRltvG8Ssw5FqCg2ZE4ow z-Veze3O(tT>va`wXlJ#4o|%kxZ5E-b_+zX1dz;3pBMq)jkIe8H>dZ&sY`FBMj)j>r|e= zZ5^ZWfd1}=CJV0*+cxkTWVd2S_e7}RGuGoIr1({K+Y<2Mdv-fIDr&ji*1)~omFTd4 zC06Kt@6vvk1&~#@b(D?AlC`M9v)i7Ad#KWGdmN8o9F&^J>U-kL)C(L|5kZaX&m(hM;09b_j?q1Z z*AIvgHH#?M!GVTQX)2WQ$O)+=aSHrW%I@vi#*WuqD~9~QZ;&Ep!z43%DO&0vO1o%b z(;{ndd5`ng@VVI@FlHE&o3g#!z&bs7Y!#l;;Y`#)nd5K*`t|x@)vp=@uawjNAewtc z9A>65V6-fjIhn#`ha`+sTEoWV24BnyXSYK{T`y8PztB@J{*Y*nw|%oIT)rk2wz8K& z?2xXyf76&e)9-F%KRNP|nUk0ChD#Y4a`3ATCsuyxi91{&&!zAdr7=vUDXZ-YuuAP9 znfXz~%xN@o>&%Lil_INc372CN^Pzg*!jg-?!Jf1adq0cAY~+oZHC~|MjSrq1m2sQ$ zyXVYfhK(O}Y)Vr;>U8%f@V4HlJ0rcboV*QdVFT2v1bwW;`Tt-<$o++Hgy)1Z7G9U7 zTamilyFpYL5zglg$~g_MnhZY)@HE1BZE3ZAb==rO5`Lc?tc-pCbud*lxNnXeoK+F{ zB6G_7EgH+3F6sm2K9dbM|Hg1cmZdf$e%;|;6~_Y$TNq`$s^DU6t>6Zc<c@z>C`qF{Jr|S+ zn=yWe@+lo6)@>TB~u7`3aQcF6_`%({Z_)9!u}Q*q|vidxgKU z>re;aj$`+RkW1LjQxMRywcX%frVaJ-?uOH`PTF`g+XwlEia;U-F-^Vw;};d4DhD{& z`TF+qN-i_7vruq>bQ6BJ(EWEkC}Ox2VXB26nDAPKfA5xB&t#~JC=1Q(m7vZrqc2JYP(TMjyOfY@R&2ZK{}4j`gisxD(R^|W(VECcTcz&BwUQuYVQh% z`DFczXyvnjo9E-pZx1T*T7gc%7kvq1@}-^X@vYA7yIG`i`)?K%lWwK!;M~XQQFQsS zYQI5`=H9zml#Bk{q+3M2cfWb7Y18ux{!T%|VoJS&3luy@!L17JRPZYb?z0|+_CHxa zvuylK%e|&5xGuafY|~YM2HhI&$JqA)+VrdNqx30yE6nRzYU4xop3N$nZ0@`W(4cee zeoU3yHZF!NbUlDUyA}OmC4WHC-&F7&1u23Das{axCiFgOWeh2I->W!|C+Vt7zqi8>?+ULejkJ+?2X4`Sv9(x*{uR+_U2V$QGeSeIH z`K^Kn0S%g4avk8dl733k-6c1cB1}s#Wki}0m^aodFQjB>`~kwD>w#-Std`9RnfNGnF+fQpDPiv4$YuNxs$#i&J&O4 zM!q1f^HTWX@*74+9ZOtW@w%9Tp1nS1y(wk@yE(u}GWJM-l`3p3z@{lo=b)u)t$7Md zE9{5XsR}#A$7rqO5jq0wVo%NjT7#`lG)UWJGj_`bsQ($;DcdpA3QhsQZbL_tl1M|0 zeN8R_HYdP-B3Hl*y8`SLxf0kxh51v8(whz3?^-pbC|(iz*dH}-2=8_)0@TuX!h6jD zR;3RETNYqE-#A?mU=8{Zux$axvoE2c09ycF3EdiC?280_Gr-OSFF{WP*gAa%E^IUw zpj*Lo=#K%$?oLv)$+z?>@RC%gut6--sWL^=X8XLWLo;x1SrA~m6t-GngVtT4m2whw z2iOClRlq*&OVU3>(wjtg2k61j8ZZ+rN-4b;S|`h>dybEVjCHb{Hlvn;6DbC)f`$UD z5?CeO8(?W;qpYGuD5zMn4Olfj7+|LxU9yJewE4UXjBT>kqtyZG8kfoAXj_2w1Di}Y z1lV=J>ge78`y8-(`ayu@fK8#X0J{gqAU)6LAwES97=3aYU4UyZV^11`ays3MYa(M~ zz>X*HLkk%lr2mBIOuC!XFt8_$Aq3|00X7D#f&Lg^VRM~qqURU+lGDsSc>-Oy*vIAp zYo@v-K6WOs*>t7CMyS)gQMS;wrOX?y*qi*e3Fmr<{wI(|1>F|mlVUfZMh^fAdOOM# zzdbF+?Iu7$etRC;8ZB0oPvDdi^g-YONJ@H5$u}b*c!JjAaV*Hj9ZSa7;~ViMhvokY zC@G30mY?2uThK>AmkR^7LV~uh$RF}j)tMCu%G-V^y)K4m2gBTxcZj*(Fg*!mn4VRP z7ghTJ;GOafz$u6ZhGD=VdRt|nx9NeIu?EFDp4e;>g$!+t_m zin;bPvR@6X8RX%vB=r4$g{-j;WJh=g+_psDF%xrQZ5$$?0 zB{GGE#R-w5ww6welxw$$j!3Pxf;L8`X?KdgNJjgzxIQu)@TSO4+6xUsw1Qrbd{o;f zWb{Hv#-cOm7W^o3G5Xd=FO&1BLBaNDHz*6E)wGtDMP1FiMSLW>Lk;kKSbb;I(<;Rt zbY4N;m=ssVV3dOorrKY5q~%o8A4}nzaiGgp4Q&R@Xu*8>2tA{v`XctuzWan zP;=yqu|EMGh`kH_NO^iCneic3SB6kCYt}H|A3~(GA}u6YQJnL^mkj@riXf z0G1?fG1khn6KmuxVqJpm?Mm!6ZV^3+%RniQe%06jbyJYYNAyNUZUt{Pz`!5r4qpNsTFV|=#SA!+Qsw+JuGYWH|R0B zP!EfzOkOU4_OhXFMr0r?;!S ztGBDOCzsqU=I64z#iU%zZc!0in%(;Gu8Zl+i$2l0v3K;}cZ+L`+$HymC8G!K7pq0? zp8Lg|)vI>&^mcA(I(z%p-mWd3O-r*|wsm!Px~n?f%eppp_K;85(A$;WdUj{`hRao} zXK^oXNf&MJ?WCY1i-C0!Te4&H><7j5MkKp!{qjqp4Pdw(}l84^Jx$3<1_`}R2urV{WWQ#LcnDasKU61$6*ox4oq=mYB;#=~C^@iG!C?h& z!jHQmIq*+$mP-!Y6F1Q*o*ej^hHIsPcCtPmtJ7JmJyrlMuP*p2i>7 zJnL(HL93&hX=aI)9Jnbt@FH}4J=vHnO%6PpobE*VF;gZ7UPul+t_D5;J;{OB;xIgJ zv8Aw}P6Mm~0!uA6XQwmpyUAuE9#1yLlhg5-jxGRDC|M_K^J-0qV<;%|NAjP+V1_Bd z!+Qx#{2hx&0OOqq8p(n8z!?;#slnL)mMk(D0(1t$n2QxA&HJ^u;ZV# zFd>X++U#$5n?EuFGk~1W1ZnVu;_#%1*T!wrgh>#og{_+6Tc*yd7ndA8HLzSVuxcC_ zQ>y;WhPSXlk0bm9-hb%LP4ioFD}O3#L`&|HpNcgnTY}VEA3BcH+iF>Mp1Wb&%IwzV zmv8Lc#+!BZW;grE9?pE12miAVnsg(#>xS#gH2g0>qyO_$F=FN7V`5=!7e>l|cIDQN zi4(#XDEzz51-aodak2cP%>89dOcDD>YY&K!h_p}>&7ryYw&ogtCGLY|FaAnY=jvV& n-$47hS43;E%&7CKI2ic{*$^J{|H$x;d85uj@%xhDX7hgm`!YsS delta 12453 zcma)C3wTu3wcdN5Gv_sr%$bRKV_pPKm`O+gb-)LpU>mi9MI}@O0V76%!IL0j#F^Mu zLo2Omw4=qg;^S8FdX=Khtw^tr+p1s158JAhTIA6xT)7om>-}!EdjGZ0nPh^2>(Q*U z*JH1>_S$Rjz0Mx8StFY@?&zz_UH8C+%zyT>NNtd7jP2r#)p*2{5A<)DA{gu6TN8O@ zKWB3!S+Fv-zcxNl%NL8WFAUtm$B8m^+ZKLlWIQ{7&Un6zKlEc|4|De9G{!tCW7!#u z-MyR-9OaFfc#B|TAVZJniZW)cHyKlf3*ps{4P2ySfD^zc*^}@F%N9-?)NU2M(vZ@u z1k+9=0~@2sI3pB6`Dj8UGjJqYoH?!sm3kXv8FB*J3WWzo75?$4)JI2B_k=_4c94uN zOpbMg)Yhttq>(wpMj|j04|x3xvdTG&=$ajH*Fx6T(hU^TbLgN%vPF$?tCckNnjv#CfRtpG;{JhrqWSfL8&1tY zMq+}7r&kSNEkGIa+zw2w1>03LB(>@d%0zp3P;MNk+_=(+r{!Q67S@59am&HjH5D;- zu*q2I6o7jsXkLbaAv3ILysdhor~iMV$u4i%x#vKOt+|UwC|d&ql$u5|PVQz_BSk6d zLms)0K|U?*nzor7Z=2qDJ|ObYB)K00bw48-jVG=Ju$YlJS{(V9EDs;iYS2Hb(3S(m&#-zvu~IS`A$;d?=lXy%AH3ykl%0{;mQd zQw}uR=;wllbuJT4(esI>czHE#;9F&ta+ zQ3-lML5d>Wn;tth$+r!<@N! z4mshTKg_sNGA7Vy^Tm^L?4hs9!#aH?#)BZEbP2Ev@rDt*3uhZPFEJFu`OUIMZRPYX(3NF6tPFs;6fH z-DBxVP4`lU9Q3BOqJl*y$odJS;V0grvv&smUO6{&Ho6Mu96jLlf6?&CA2o*`9)}4*^#=Qy2EEsk!87{}>@f_C&i z#1PIxKXjEX8v8yH4X3K@e>c=gfv?e|DC_G9QP+>fOHCtyTCz;I^N|DVYl!21Ld{w< z6K!hxGW5X_rw#O;JUt^EDAL?rmcM=C9F{eco_YnF04gYXu3DJspzfVFBa4EN=pj!G zq0=#`r58fE?(WU23!9!gBlR^>XAG;0(*~TR{pXl6BOY-7g6^&s1c(tBOJEX#Spa(& zI$n-`4RLd7fV7&r<^lSlr{9f>X)E&R^{P|v*jHo;73F@aQ}w0fD>>MgC6%Q$sl~xWTuWbp zKza4k614msKaTbH5k`#D&{on*!6=&)R7%s!(5jx+9F)gOF!ee_6j@QGuLLI<^AHzf z@yf9%_j*^GladNm)AM0$E>ckXJB?CMl0m&3CPuAnXMBC>iGXPjf}7-&NiKVt)7G9NIb&w>$)FC+8g zM5}Lj@m2YY^9aT{v^a;@-YO&~E`<}=1x7kSIpZyOwb)9e6q!V6+S{zAutbh=qAWCu z74J%ojGT_;f?GCxw&*2RY9cM3bSIR#r=p*84O&UP!b+8Zfml))lX|I@(n!#~5Hh<^ zWN{~h0FL_In4F?`pNuHNj{kL;)XS{YHjKC2O8qNdzG_r#C+O2$pgD8g57(qxX(bkx zTZwjGDeAuyC{-buSBw&|P%=vq8As!!57VStWhK-Sf5Q&?Nk^d^nCZm53q_<5lNF%i zG$C?jpYq}T{TN>P33!z!;FXTf%SeM&h0OecqR6`4xfWxP-cS~d#dKoLAj#!T0IK1_ zf&Xg6z~#p~)^b>rr9eE8dQZ;Sh&zOgpA4gP4eH6T_pyksa*G-DPGOXuAtPyd7X|S^ z;(Fg#oQ0$Knm_BLvtcud>y>5<82zUE{pO9@&!1fHf&x`rGKgZu?-?jYcV-9hai+>^ z02H5g*9wZG;u>MBOUerj&(YJFm1xS{+gXKHvIO5lL`tUt#%a~f>DAOw+?Nab)p{}o z-HJwZOH^t87x*#Nn6K2yE4?u?58jN2g-}U2G07}xHMQ!b$2H9KbzpR(7U6Lfw?D4D zB$8JRQjb~M9yX1%3!zEB)T$f3Zd$r)V11&xh4MeHAq=>ar#Q5sF2V;1_79^tZl+Er z6ji$1DG-YKfxU^cjO=8lf?$4bcbPuw{hN1yhumL8*lM*&F%r5koXJ>2?t`GnRS0WO zAF~S`XA{a;$*&dc6$M+xC`pE7Y4VdrbzhO@kp~GwpvL{21Ji~b_{zw9D!e^IGA1wo z!Vb_)Ua}ciG&1cpcen3@Mm}ht_hAsL4*|z*fQD6R;GQ={RY<{ZcY@9FMA47y?qT1y zPPX;W*~VfT?K{bvytv`w48`oJ8QY-#pPxXak%{A3CQ>m%iNc%i&tz>9PN|^ynS_Cr zxKU`+++sjE|KZeu;eF?r(`DqmX5?~4Hr`ZtWF042tYn$AqS z)#&3~lh-o0w;^uIaMM`}`DCdtfh5LZM{qJe8um$OA}9kp+;aUB8=7F%-HYoj$&N(^Sa&6Rm;0b;$SUf52HS- zzhoY}1IvX+>1@`73yJTtKHTj-Alq-UzMOq8FXi>Q#(Q~f z<|+LF-D0mwcu2w`gD8%KGbLOo;aUmrknj-+Uy|_85`JRz!BVRkGcDF`&PKhl!mNkY z9zcuz)a=9R_=Smxvp<=;A#)TIi+!3g$yn5SK-btfs~&qFwJkQsBB2F<8e1#r-?pg3 zR!M(G!e2_bOTyg}zAI(^A=~A_K7?d^@CbTM4_+3qn5SWbr2iQ72>WF)a|Ag)D>N}= zvBjZ2v^UH4xNt?-VyW{)q?6gs=<}ewE7|{) zFm97`ZFWVtf?X~pzXwVMdtB0gV?T$_5ic_c(tlC>o_Y;(L}EypJAs*SI4XJ10}I1V z4>R`wwXxGx=h8po^Z9pkFaC(%mYG{aN^dQDm)D`wO&(?(=Hr0f=VMF|_MbjhEU|+= zHdbPxT88IV<1~r2NbFa}xf1)bhp`2MEL`DZ%f$p>#Tm+N*2~t27Nq@4C~^tgD5hal zGqB|l_9JxES&~W%V2_EjfwlYCE20e}e$vMdhzo%g<2=m|Da2S(Vsc0!R_0?LDt*{4 zrqC@e`E95h5vmJ(W`)`h>}nsQ@kUtI$C4@~+r2(Uqc37l`q&xZ6|r4DMzM&pgFZF~ zyeLy~UXZ;->Nw0rRTGv9p{u~OS;}WpxMOUtkKGJjjIEGZFQ(~S5ofbnJTJN%pjqd=?n&-^z{z+QF=8l}gz^1B*ln8%vuF zcmZvZC}l@{EDWrSMRChYymDaWti{J1ZJDTGPx@F2SS2fyd*-d|Jgrkyu`5uBP``!R zYB7do3CjR=wd=*n>|UR_9#}Q|cOSbASPlD~kKF;RmL2i29I!eTLghzFAA&RWjJ^gK z`#O7E>k(sFd&+NGW2U}HG&2=H$`Nm@-XkWmn|$mvU@eS3#)&rvSS!0pVgsy0|Bjf%uAV`>{<3a8 zCn!jq-ECt0oUIDdLADkU|8xY9v*$uY@!B8C_NRcHd2KyRk~Sb`(~7<*+zLs-o|5vP zN$5l|e$ME1d`Qk6pIg}1bLB0mZ4$OB!KMS|hd12jY~wIDRfzbmcqSi|okhLYWfuzA4xttjW^)?1>Hr>u9xRKDCgDBAeD`~yhdW&MvZ*+bUH zVgV>3qqIsht!$qaReJeftva@We`b{`3sAgNDgC@ASf{kH$-zeD9)3Qql{WJQ!BYV{ zf*aXZsOV#D>}SD6%Fp?4f>%QFkHK-QpT8Hp7JZKfug5Sxkb*xoT45msr6R@8V>|?dk(Q@`;(F$!Ud#h+Q zVza-9V)K5H3(7}Di?H)&?C1}*i$ra-UG(#&DEXU;ZqfSr+0pAkc`x`l+BLza0MC!U z05}h@jV+FnqLtCz*a#ld{-SM$$vQ-CzD@KFdp9Uuwy6`0>i1x3N&#=Qg}PaML(0?y z=jhLg-L>{AeF>v^wb@>~3vDZO0~qf~`n&ukC3pB=_@$XHwoh$l*Rp`o%z9W5FeoW; z2`kxm^kx)yBy&2u8|`!0nSo|@K6@7Jd2AoxW$Z72%RoQGwu@QnA+}A_t0vzr1^{0W z`v8g3$bT))3^bzs9@^W*-_$m~Ed!(tjD3LH#g_t|vfU|#IzhQJumSKeAa#4hhucM& z_Jo+G+^#&T>{LEbO4Vw0tu~3Y9DE1^d|i*y-mMFU#wrHuh#_@ ztcoK#fOC?ukHvhJyYOLt-bp<=KCRdW2?z8|D01)B@5?>*Fz;WYX2HQ2e~-<>d#=HY zW0#wYeUBc_@LeF^jQz={p-3Brc4QPPP@4mw(@gwOSkdl;HO*pLO#Z`*gUIq$?{d{uI|odU2Imz(lyJMFIl>xV{rdA zzCp9vy4uLjs*Wpj*FViK&2?|*b;0!N#j~$lvjjHQ4c@h#ck|recJSt0b_X|e%Xjed z+=DxK1EFJc2dK4S2d~VXv4hv;Uf#hgay2`6Xt4Dc{LyIi2VKSOQ})i7-T&xyfB*H$ zZ@xEp_*I_6Zi_&w4vUo&hz4o|7ecLJv2}{hBY_&uW9x`$L^Q@DcD6UbL?i+Ri)A-R zxKYA>gDE_gy(dC)vFzrEj!uzS_7UihXlTc3BjFmARBW}gPuba@Yot5NcjP{OjhAM2 zdMaO2YFJgh9x-Cs{#f>PD0nQ^6f2HpcgFCKHtE$E%f1%NJ|~U-5jtYoeG#>WM-1{3 z)@u~NDj@LEAXhfn*+VDmMUhCXDH3bIs{vgAppP_?vMN0jCO+x%?Bw6Xg?4Uex&Xf^ zz%cHk1{o1(1ks3P|Cf6H6B2Ou?j#TPFIZ~*@cq4W%Jcc8$0e?=_Ii?B#Qw2kf)bZi!=7?)-;`c{|z3<9F6H3MX2C^ zM3u*SFY;dsvLe=C6zMu>6wRFmyo^M33-)9P5k@?gt`bU=0GW;iFt{-hQ`aH}*khza zVCuR;(-Fbgd6imM!$lQ&T@{5N#qz&aZ<_EeueLN#ZOuLL2Cw3+xt(wD_EP$pjTS%q z5dS(q|3nVt7QM+UbpIdY5B9vt2aKPJteT7LhU690YlvRwaO zzFgEOxqs~Cb^MdTG5dIc2U}S)n}Xw{l}*Yu?dOle`dj;XWn&T*8D|%;4z`>v!6nAU z%*Fdk;4ATVaXiV}3s#dmx}QIVUOzd&Cl?iHgWi^HNBQBPxtHVPiLsi=gZ2^rK~aB; F{(m7Eek=e0 diff --git a/Tools/nant/bin/lib/net/1.0/nunit.core.dll b/Tools/nant/bin/lib/net/1.0/nunit.core.dll deleted file mode 100755 index 7b1916e07b32ee3f2e910705d3f21b977299a489..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86016 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 Hqrm?KOgTk> diff --git a/Tools/nant/bin/lib/net/1.0/nunit.framework.dll b/Tools/nant/bin/lib/net/1.0/nunit.framework.dll deleted file mode 100755 index 6038b272f16d5382bcb85c2d2eacbb721552ccbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 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 Pa0G@UFdTvZHWBzgCc^{0 diff --git a/Tools/nant/bin/lib/net/1.0/nunit.util.dll b/Tools/nant/bin/lib/net/1.0/nunit.util.dll deleted file mode 100755 index a778921c7a46c4993280558581b90ceb8c7bba77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86016 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

ET_N@=6nrKAoUu{7r}O?4e*uU-eFx7ctg=^u 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%0D-C7=}w`U4*bwm*k)fDw? zp&zgz*#^y9JPO4`Wick2&{xo3*O<)?q?z7!;T^OfjgA4kelY=Mg4MwPR41yIwGcFe zhdWb;yOJ2l5y*^Y3xb7?Egli4;4r%A2=toW37V$VMF@yxTY6f$9=)bghtC$ck(k38 zZlY`sZxzgiuz_gq;a*hPO~8~o8=5H&2)>y=&8AD5JE9mRY$XPuR2C)bKs#FBi@buR zNq}xaiw}$BmNv56W;yENx+}QT46*f?8~`~lLlR!In1S_<>gws)?EkM{JgAj!P-^i` zM=jp&zX6dxw|`?AcOPxr#0!wpSMua?`s$uEjx^p-sNQg18W#)AWW8d#zbB0|qUWXi zirzu5knZbA?yUj7tVT~Tt3Ux|2SKvFV|$N@c)7Y9Jvn|p8{QMER0^F!nVvxJn62$ z-`>j|wI#xs{ zUZ&a5MU@m2m7f7X2VD6m&_0ymHZ?c6`0p&qH6fcmxC;=QW!%m&Tb@Gkk;tuF+@nt1 z8q(X4D>)T~MsG$DUVx2f$N+cS^9ve$Xv=LvyXmP!4wYVkR!Dc?r3rkM6nh(P$wP|b}Vyn`B zKo;QAcx=~?2Xkq2JYX9(7wtiTw7Sxi&JE$KQCb@H;YRfh;K`#-d{i)mFt;Xg0uD7w zgB$54WILPbeIhF!k0?ltse5F*jvIS8(2wxEaOxK>xWx*Td>p}t5PW#RhXV=p*2)$w zul<&W+K+-CrNk{x){9$%r z9DH$3sXK8BV)fsu1Xd-mDuGoAtV&>20;>{OmB6Y5Rwb}1fmI2tN?=t2|9?v0KLJP* B8m9mN diff --git a/Tools/nant/contrib/NAnt.Contrib.Tasks.dll b/Tools/nant/contrib/NAnt.Contrib.Tasks.dll index aa84cc8f506835a7541d252cab6ff0712862b75e..a4ccd72ecbca3d44f9a6e9a7c5e372f6b66d951c 100644 GIT binary patch literal 1236992 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%0D68@Q?u!y?2XZ(x>S>~1b(n6i552(VQB*JG@8&% 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

UXd3cDQ|hBu^!(3^ca{{8SiG;GnnB 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∋)drnqf6Ln4E?Y>HL+s4)n#ODENa2`rR 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ν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�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 diff --git a/Tools/nant/contrib/NAnt.Contrib.Tasks.xml b/Tools/nant/contrib/NAnt.Contrib.Tasks.xml index c877adb..0cfc5e6 100644 --- a/Tools/nant/contrib/NAnt.Contrib.Tasks.xml +++ b/Tools/nant/contrib/NAnt.Contrib.Tasks.xml @@ -4,10 +4,80 @@ NAnt.Contrib.Tasks + +

+ Provides a set of functions that deals with Arrays. + + + + + Initializes a new instance of the + class. + + + Project. + + + Properties. + + + + + Sorts the items in an array. + + + The containing all the array items to sort. + + + The used to separate the items in + + + + The is invalid because it + is empty or . + + + + + Reverse the items in an array. + + + The containing all the array items to reverse. + + + The used to separate the items in + + + + The is invalid because it + is empty or . + + + + + Converts a variable to + an based on a value separator. + + + The value of in an + format. + + + The to parse to an . + + + The used to separate the items in + + + + The is invalid because it + is empty or . + + - - Groups a set of functions for dealing with files. - + + Groups a set of functions for dealing with files. +
@@ -43,9 +113,9 @@ - - Provides methods for interrogating Filesets. - + + Provides methods for interrogating Filesets. + @@ -115,10 +185,10 @@ - - Allows information on Windows Installer databases and products to be - retrieved. - + + Allows information on Windows Installer databases and products to be + retrieved. + @@ -154,32 +224,32 @@ - - Returns a value indicating whether a product with the specified - product code is installed. - - The product code of the product to check. - - if a product with the specified product - code is installed; otherwise, . - - - - Retrieves the product code of a given installer database, and - fails the build if the product is not installed. - - - - Please install Office first. - ]]> - - + + Returns a value indicating whether a product with the specified + product code is installed. + + The product code of the product to check. + + if a product with the specified product + code is installed; otherwise, . + + + + Retrieves the product code of a given installer database, and + fails the build if the product is not installed. + + + + Please install Office first. + ]]> + + - - Allow information on a Windows service to be retrieved. - + + Allow information on a Windows service to be retrieved. + @@ -311,43 +381,43 @@ - - Gets the friendly name of the specified service. - - The short name that identifies the service to the system. - The computer on which the service resides. - - The friendly name of the service, which can be used to identify the service. - + + Gets the friendly name of the specified service. + + The short name that identifies the service to the system. + The computer on which the service resides. + + The friendly name of the service, which can be used to identify the service. + - - Gets the name that identifies the specified service - - The short name that identifies the service to the system. - The computer on which the service resides. - - The name that identifies the service. - + + Gets the name that identifies the specified service + + The short name that identifies the service to the system. + The computer on which the service resides. + + The name that identifies the service. + - - The name of the management SQL database. - + + The name of the management SQL database. + - - The name of the SQL Server where the management database is - located. - + + The name of the SQL Server where the management database is + located. + - - Deploys an assembly to a given BizTalk configuration database. - - - Deployment will fail if the assembly is already deployed. - + + Deploys an assembly to a given BizTalk configuration database. + + + Deployment will fail if the assembly is already deployed. + @@ -362,32 +432,32 @@ - - The path to the BizTalk assembly to deploy. - + + The path to the BizTalk assembly to deploy. + - - Determines whether to install the assembly in the Global Assembly - Cache. The default is . - + + Determines whether to install the assembly in the Global Assembly + Cache. The default is . + - - The path to an assembly binding information file to import bindings - from. - + + The path to an assembly binding information file to import bindings + from. + - - The path to the HTML log file to generate. - + + The path to the HTML log file to generate. + - - Exports bindings for a BizTalk assembly to an assembly binding - information file. - + + Exports bindings for a BizTalk assembly to an assembly binding + information file. + @@ -400,88 +470,88 @@ - - The path to the BizTalk assembly for which to export bindings. - + + The path to the BizTalk assembly for which to export bindings. + - - The path to an assembly binding information file in which the - bindings will be saved. - + + The path to an assembly binding information file in which the + bindings will be saved. + - - The path to the HTML log file to generate. - + + The path to the HTML log file to generate. + - - Allows BizTalk (in-process) host instances to be controlled. - - - - Starts the "BizTalkServerApplication" host instance - on server "SV-ARD-EAI". - - - - ]]> - - - - - Stops all "BizTalkServerApplication" host instances. - - - - ]]> - - + + Allows BizTalk (in-process) host instances to be controlled. + + + + Starts the "BizTalkServerApplication" host instance + on server "SV-ARD-EAI". + + + + ]]> + + + + + Stops all "BizTalkServerApplication" host instances. + + + + ]]> + + - - The name of the host on which the perform the action. - + + The name of the host on which the perform the action. + - - The name of the BizTalk server on which to perform the action. - If not specified, the action will be performed on all instances. - + + The name of the BizTalk server on which to perform the action. + If not specified, the action will be performed on all instances. + - - The action that should be performed on the host. - + + The action that should be performed on the host. + - - Defines the actions that can be performed on a host instance. - + + Defines the actions that can be performed on a host instance. + - - Starts the host instance. - + + Starts the host instance. + - - Stops the host instance. - + + Stops the host instance. + - - Stops and restarts the host instance. - + + Stops and restarts the host instance. + - - Imports bindings from a given assembly binding information file into - the specified BizTalk configuration database. - + + Imports bindings from a given assembly binding information file into + the specified BizTalk configuration database. + @@ -494,40 +564,40 @@ - - The path to the assembly binding information file containing the - bindings to import. - + + The path to the assembly binding information file containing the + bindings to import. + - - The path to the HTML log file to generate. - + + The path to the HTML log file to generate. + - - Performs a set of actions on a given orchestration. - + + Performs a set of actions on a given orchestration. + - - The name of the BizTalk server on which to perform the action. - + + The name of the BizTalk server on which to perform the action. + - - The name of the orchestration to perform an action on. - + + The name of the orchestration to perform an action on. + - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the project. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the project. + @@ -541,34 +611,34 @@ - - Starts the orchestration. - - - If the orchestration is not yet enlisted, then this will be done - first. - + + Starts the orchestration. + + + If the orchestration is not yet enlisted, then this will be done + first. + - - Specifies whether receive locations associated with this - orchestration should be automatically enabled. The default is - . - + + Specifies whether receive locations associated with this + orchestration should be automatically enabled. The default is + . + - - Specifies whether service instances of this orchestration that - were manually suspended previously should be automatically - resumed. The default is . - + + Specifies whether service instances of this orchestration that + were manually suspended previously should be automatically + resumed. The default is . + - - Specifies whether send ports and send port groups imported by - this orchestration should be automatically started. The default - is . - + + Specifies whether send ports and send port groups imported by + this orchestration should be automatically started. The default + is . + @@ -592,107 +662,107 @@ - - Specifies whether receive locations associated with this - orchestration should be automatically disabled. The default - is . - + + Specifies whether receive locations associated with this + orchestration should be automatically disabled. The default + is . + - - Specifies whether instances of this orchestration should be - automatically suspended. The default is . - + + Specifies whether instances of this orchestration should be + automatically suspended. The default is . + - - Enlists the orchestration by creating its activation subscription. - + + Enlists the orchestration by creating its activation subscription. + - - Specifies the BizTalk host on which to enlist the orchestration. - + + Specifies the BizTalk host on which to enlist the orchestration. + - - Unenlists the orchestration by removing its activation subscription. - + + Unenlists the orchestration by removing its activation subscription. + - - Specifies whether instances of this orchestration type should - be automatically terminated. The default is . - + + Specifies whether instances of this orchestration type should + be automatically terminated. The default is . + - - Allows BizTalk receive locations to be controlled. - - - - Enables the "HttpReceive" receive location on server - "SV-ARD-EAI". - - - - ]]> - - - - - Disables the "HttpReceive" receive location on server - "SV-ARD-EAI". - - - - ]]> - - + + Allows BizTalk receive locations to be controlled. + + + + Enables the "HttpReceive" receive location on server + "SV-ARD-EAI". + + + + ]]> + + + + + Disables the "HttpReceive" receive location on server + "SV-ARD-EAI". + + + + ]]> + + - - The name of the receive location on which the perform the action. - + + The name of the receive location on which the perform the action. + - - The name of the BizTalk server on which to perform the action. - + + The name of the BizTalk server on which to perform the action. + - - The action that should be performed on the receive location. - + + The action that should be performed on the receive location. + - - Defines the actions that can be performed on a BizTalk receive - location. - + + Defines the actions that can be performed on a BizTalk receive + location. + - - Enables the receive location. - + + Enables the receive location. + - - Disables the receive location. - + + Disables the receive location. + - - Allows stopping, starting and resetting of BizTalk in-process host - instances on the specified server. - + + Allows stopping, starting and resetting of BizTalk in-process host + instances on the specified server. + - - The name of the BizTalk server on which to perform the action. - + + The name of the BizTalk server on which to perform the action. + @@ -701,103 +771,103 @@ - - Defines the possible actions that can be performed on the BizTalk - in-process host instances. - + + Defines the possible actions that can be performed on the BizTalk + in-process host instances. + - - Stops all in-process host instances. - + + Stops all in-process host instances. + - - Starts all in-process host instances. - + + Starts all in-process host instances. + - - Stops and restarts all in-process host instances. - + + Stops and restarts all in-process host instances. + - - Allows BizTalk send ports to be controlled. - - - - Starts the "UmeHttpSendPort" send port on server - "SV-ARD-EAI". - - - - ]]> - - - - - Unenlists the "UmeHttpSendPort" send port on server - "SV-ARD-EAI". - - - - ]]> - - + + Allows BizTalk send ports to be controlled. + + + + Starts the "UmeHttpSendPort" send port on server + "SV-ARD-EAI". + + + + ]]> + + + + + Unenlists the "UmeHttpSendPort" send port on server + "SV-ARD-EAI". + + + + ]]> + + - - The name of the send port on which the perform the action. - + + The name of the send port on which the perform the action. + - - The name of the BizTalk server on which to perform the action. - + + The name of the BizTalk server on which to perform the action. + - - The action that should be performed on the send port. - + + The action that should be performed on the send port. + - - Defines the actions that can be performed on a BizTalk send port. - + + Defines the actions that can be performed on a BizTalk send port. + - - Starts the send port. - + + Starts the send port. + - - Stops the send port. - + + Stops the send port. + - - Stops and restarts the send port. - + + Stops and restarts the send port. + - - Enlists the send port. - + + Enlists the send port. + - - Unenlists the send port. - + + Unenlists the send port. + - - Removes all bindings for a given assembly from a BizTalk configuration - database. - + + Removes all bindings for a given assembly from a BizTalk configuration + database. + @@ -810,31 +880,31 @@ - - The path to the BizTalk assembly for which to remove all bindings. - + + The path to the BizTalk assembly for which to remove all bindings. + - - The name of the BizTalk server on which to perform the operation. - + + The name of the BizTalk server on which to perform the operation. + - - The assembly qualified name of the receive pipeline to set when - unbinding a receive pipeline. - + + The assembly qualified name of the receive pipeline to set when + unbinding a receive pipeline. + - - The assembly qualified name of the SEND pipeline to set when - unbinding a send pipeline. - + + The assembly qualified name of the SEND pipeline to set when + unbinding a send pipeline. + - - Removes a given assembly from a BizTalk configuration database. - + + Removes a given assembly from a BizTalk configuration database. + @@ -847,62 +917,62 @@ - - The path to the BizTalk assembly to remove. - + + The path to the BizTalk assembly to remove. + - - Determines whether to remove the assembly from the Global Assembly - Cache. The default is . - + + Determines whether to remove the assembly from the Global Assembly + Cache. The default is . + - - The path to the HTML log file to generate. - + + The path to the HTML log file to generate. + - - Base class for all the ClearCase tasks. - + + Base class for all the ClearCase tasks. + - - Base Constructor. - + + Base Constructor. + - - Execute the perforce command assembled by subclasses. - + + Execute the perforce command assembled by subclasses. + - - Derived classes should override this to provide command-specific - commandline arguments. - + + Derived classes should override this to provide command-specific + commandline arguments. + - - Overrides the base class. - + + Overrides the base class. + - - Displays a ClearCase config spec. - + + Displays a ClearCase config spec. + - - The view tag identifying the ClearCase view that will have its - config spec displayed. - + + The view tag identifying the ClearCase view that will have its + config spec displayed. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -932,10 +1002,10 @@ - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + @@ -950,33 +1020,33 @@ - - if warning messages should be suppressed. - The default is . - + + if warning messages should be suppressed. + The default is . + - - If , the modification time will be preserved. - Default is . - + + If , the modification time will be preserved. + Default is . + - - to keep a view-private copy of the file with - a .keep extension. Default is . - + + to keep a view-private copy of the file with + a .keep extension. Default is . + - - If , files may be checked in even if identical - to the original. Default is . - + + If , files may be checked in even if identical + to the original. Default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1008,44 +1078,44 @@ - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + - - to check the element out as reserved. - Default is . - + + to check the element out as reserved. + Default is . + - - Creates a writable file under a different filename. - + + Creates a writable file under a different filename. + - - If , checks out the file but does not create - an editable file containing its data. Default is . - + + If , checks out the file but does not create + an editable file containing its data. Default is . + - - Specify a branch to check out the file to. - + + Specify a branch to check out the file to. + - - If , checkouts of elements with a version - other than main latest will be allowed. Default is . - + + If , checkouts of elements with a version + other than main latest will be allowed. Default is . + - - if warning messages should be suppressed. - The default is . - + + if warning messages should be suppressed. + The default is . + @@ -1060,15 +1130,15 @@ - - If , the modification time will be preserved. - Default is . - + + If , the modification time will be preserved. + Default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1092,10 +1162,10 @@ - - If an existing lock can be replaced. - Default is . - + + If an existing lock can be replaced. + Default is . + @@ -1124,49 +1194,49 @@ - - Specifies the object pathname to be locked. - + + Specifies the object pathname to be locked. + - - Specifies the object(s) to be locked. - + + Specifies the object(s) to be locked. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Creates elements in a ClearCase VOB. - - - - This task uses the cleartool mkelem command to create ClearCase elements. - - - - - Performs a ClearCase mkelem on the file c:/views/viewdir/afile with element type text_file. - It checks in the file after creation and adds Some comment text as a comment. - - - - ]]> - - + + Creates elements in a ClearCase VOB. + + + + This task uses the cleartool mkelem command to create ClearCase elements. + + + + + Performs a ClearCase mkelem on the file c:/views/viewdir/afile with element type text_file. + It checks in the file after creation and adds Some comment text as a comment. + + + + ]]> + + - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + @@ -1181,50 +1251,50 @@ - - If , warning will be suppressed. - The default is . - + + If , warning will be suppressed. + The default is . + - - Perform a checkout after element creation. - Default is . - + + Perform a checkout after element creation. + Default is . + - - Checkin element after creation. - Default is . - + + Checkin element after creation. + Default is . + - - If , the modification time will be preserved. - Default is . - + + If , the modification time will be preserved. + Default is . + - - Assign mastership of the main branch to the current site. - Default is . - + + Assign mastership of the main branch to the current site. + Default is . + - - Element type to use during element creation. - + + Element type to use during element creation. + - - Create elements from the view-private parent directories. - Default is . - + + Create elements from the view-private parent directories. + Default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1255,38 +1325,38 @@ - - Name of the label type - + + Name of the label type + - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + - - If , allow the replacement of a - label of the same type on the same branch. - The default is . - + + If , allow the replacement of a + label of the same type on the same branch. + The default is . + - - If , process each subdirectory recursively under the viewpath. - Default is . - + + If , process each subdirectory recursively under the viewpath. + Default is . + - - Identify a specific version to attach the label to. - + + Identify a specific version to attach the label to. + - - Path to the ClearCase view file or directory that the command will operate on. - + + Path to the ClearCase view file or directory that the command will operate on. + @@ -1301,14 +1371,14 @@ - - For any VOB symbolic links encountered, labels the corresponding target. - + + For any VOB symbolic links encountered, labels the corresponding target. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1336,46 +1406,46 @@ - - Name of the label type to create. - + + Name of the label type to create. + - - Name of the VOB. Must be a valid path to somewhere on a VOB. - + + Name of the VOB. Must be a valid path to somewhere on a VOB. + - - If , allow an existing label definition to be replaced. - The default is . - + + If , allow an existing label definition to be replaced. + The default is . + - - Creates a label type that is global to the VOB or to VOB's that use this VOB. - Either global or ordinary can be specified, not both. - The default is . - + + Creates a label type that is global to the VOB or to VOB's that use this VOB. + Either global or ordinary can be specified, not both. + The default is . + - - Creates a label type that can be used only in the current VOB. - Either global or ordinary can be specified, not both. - Although by default, if global is also or not specified ordinary is the default behaviour. - + + Creates a label type that can be used only in the current VOB. + Either global or ordinary can be specified, not both. + Although by default, if global is also or not specified ordinary is the default behaviour. + - - If the label type is allowed to be used once per branch in a given element's version tree. - The default is . - + + If the label type is allowed to be used once per branch in a given element's version tree. + The default is . + - - Sets the way mastership is checked by ClearCase. See ClearCase documentation for details. - The default is . - + + Sets the way mastership is checked by ClearCase. See ClearCase documentation for details. + The default is . + @@ -1390,9 +1460,9 @@ - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1421,14 +1491,14 @@ - - The kind of type to remove. - + + The kind of type to remove. + - - The name of the object to remove. - + + The name of the object to remove. + @@ -1439,10 +1509,10 @@ - - Removes all instances of a type and the type object itself. - The default is . - + + Removes all instances of a type and the type object itself. + The default is . + @@ -1457,9 +1527,9 @@ - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1486,21 +1556,21 @@ - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + - - If , a view-private copy of the file with a - .keep extension will be kept. Default is . - + + If , a view-private copy of the file with a + .keep extension will be kept. Default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1536,76 +1606,76 @@ - - Specifies the object pathname to be unlocked. - + + Specifies the object pathname to be unlocked. + - - Specifies the object(s) to be unlocked. - + + Specifies the object(s) to be unlocked. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Updates a ClearCase view. - - - - This task uses the cleartool update command to update a ClearCase view. - - - - - Performs a ClearCase update on the snapshot view directory c:/views/viewdir. - A graphical dialog will be displayed. - The output will be logged to log.log and it will overwrite any hijacked files. - The modified time will be set to the current time. - - - - ]]> - - + + Updates a ClearCase view. + + + + This task uses the cleartool update command to update a ClearCase view. + + + + + Performs a ClearCase update on the snapshot view directory c:/views/viewdir. + A graphical dialog will be displayed. + The output will be logged to log.log and it will overwrite any hijacked files. + The modified time will be set to the current time. + + + + ]]> + + - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + - - Displays a graphical dialog during the update. - The default is . - + + Displays a graphical dialog during the update. + The default is . + - - Specifies a log file for ClearCase to write to. - + + Specifies a log file for ClearCase to write to. + - - If , hijacked files will be overwritten. - The default is . - + + If , hijacked files will be overwritten. + The default is . + - - If , hijacked files will be renamed with a .keep extension. - The default is . - + + If , hijacked files will be renamed with a .keep extension. + The default is . + @@ -1622,64 +1692,64 @@ - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Searches files for a regular-expression and produces an XML report of - the matches. - - - - Extract all TODO:, UNDONE: or HACK:- - comment-tags from C# source files and write them to a file - out.xml. (A xslt-stylesheet could then transform it to - a nice html-page for your project-homepage, but that is beyond - the scope of this example.) - - - Path, File and LineNumber are automatically - generated elements. - - - - - - - - ]]> - - - The resulting XML file for a comment-tag - 'TODO: [md, 14-02-2004] comment this method' - will look like - - - - - - TODO - comment this method - C:\MyProjects\MyPath - MyFile.cs - 146 - md - 14-02-2004 - - ... - - ]]> - - + + Searches files for a regular-expression and produces an XML report of + the matches. + + + + Extract all TODO:, UNDONE: or HACK:- + comment-tags from C# source files and write them to a file + out.xml. (A xslt-stylesheet could then transform it to + a nice html-page for your project-homepage, but that is beyond + the scope of this example.) + + + Path, File and LineNumber are automatically + generated elements. + + + + + + + + ]]> + + + The resulting XML file for a comment-tag + 'TODO: [md, 14-02-2004] comment this method' + will look like + + + + + + TODO + comment this method + C:\MyProjects\MyPath + MyFile.cs + 146 + md + 14-02-2004 + + ... + + ]]> + + - - Performs the regex-search. - + + Performs the regex-search. + @@ -1696,19 +1766,19 @@ The collection of matches to write. - - Specifies the name of the output file. - + + Specifies the name of the output file. + - - Specifies the regular-expression to search for. - + + Specifies the regular-expression to search for. + - - The set of files in which the expression is searched. - + + The set of files in which the expression is searched. + @@ -1718,9 +1788,9 @@ - - The string to count in - + + The string to count in + @@ -1739,14 +1809,14 @@ for which lines are counted. - - Counts the line-numbers until the position - is reached. - - Index into the string given during construction - - The number of lines. - + + Counts the line-numbers until the position + is reached. + + Index into the string given during construction + + The number of lines. + @@ -1765,10 +1835,10 @@ - - Encapsulation of a match of a regular-expression with the - associated named capture-groups. - + + Encapsulation of a match of a regular-expression with the + associated named capture-groups. + @@ -1783,9 +1853,9 @@ The to write to. - - Gets or sets the value for a capture group. - + + Gets or sets the value for a capture group. + @@ -1806,14 +1876,14 @@ Collection of instances to add. - - Gets the th match stored in this collection. - + + Gets the th match stored in this collection. + - - Encapsulation of a search pattern. - + + Encapsulation of a search pattern. + @@ -1838,146 +1908,146 @@ - - Extracts the matches of this pattern from . - - The name of the file associated with . - The source string - - A collection of found matches. - + + Extracts the matches of this pattern from . + + The name of the file associated with . + The source string + + A collection of found matches. + - - The base abstract class for all MKS Tasks. - - - Provides the core attributes, and functionality for opening an item - in a MKS database. - + + The base abstract class for all MKS Tasks. + + + Provides the core attributes, and functionality for opening an item + in a MKS database. + - - Opens the MKS database and sets the reference to the specified - item and version. - + + Opens the MKS database and sets the reference to the specified + item and version. + - - The password to use to login to the MKS database. - + + The password to use to login to the MKS database. + - - The name of the user needed to access the MKS database. - + + The name of the user needed to access the MKS database. + - - The name of the host MKS server to connect to - + + The name of the host MKS server to connect to + - - The port number on which the host server is accepting requests - + + The port number on which the host server is accepting requests + - - Checkpoints a project in an MKS Source Integrity database. - - - Checkpoint a project in an MKS database. - - ]]> - + + Checkpoints a project in an MKS Source Integrity database. + + + Checkpoint a project in an MKS database. + + ]]> + - - The label to apply to the checkpoint. - + + The label to apply to the checkpoint. + - - The project to checkpoint. - + + The project to checkpoint. + - - Apply label to all members. The default is . - + + Apply label to all members. The default is . + - - The description of the checkpoint. - + + The description of the checkpoint. + - - Retrieves an item or project from MKS Source Integrity. - - - Synchronise sandbox with MKS project. - - ]]> - + + Retrieves an item or project from MKS Source Integrity. + + + Synchronise sandbox with MKS project. + + ]]> + - - The path to the local working directory. - + + The path to the local working directory. + - - The project to get from MKS. - + + The project to get from MKS. + - - Generates an XML file containing the differences between the sandbox and - the project in the MKS database. - - - Get changes to a project in an MKS database. - - ]]> - + + Generates an XML file containing the differences between the sandbox and + the project in the MKS database. + + + Get changes to a project in an MKS database. + + ]]> + - - The project to retrieve the changes for. - + + The project to retrieve the changes for. + - - The file where the output will be stored in XML format. - + + The file where the output will be stored in XML format. + @@ -1985,436 +2055,436 @@ - - Determines if the supplied version string is valid. A valid version string should look like: - 1 - 1.1 - 1.1.1 - 1.1.1.1 - - The version string to verify. - + + Determines if the supplied version string is valid. A valid version string should look like: + 1 + 1.1 + 1.1.1 + 1.1.1.1 + + The version string to verify. + - - Sets the sequence number of files to match their - storage order in the cabinet file, after some - files have had their filenames changed to go in - their own component. - - The MSI database. - The last file's sequence number. + + Sets the sequence number of files to match their + storage order in the cabinet file, after some + files have had their filenames changed to go in + their own component. + + The MSI database. + The last file's sequence number. - - Cleans the output directory after a build. - - The path to the cabinet file. - The path to temporary files. + + Cleans the output directory after a build. + + The path to the cabinet file. + The path to temporary files. - - Loads records for the Properties table. - - The MSI database. + + Loads records for the Properties table. + + The MSI database. - - Loads records for the Directories table. - - The MSI database. + + Loads records for the Directories table. + + The MSI database. - - Adds a directory record to the directories table. - - The MSI database. - The MSI database view. - The parent directory. - This directory's Schema object. - The tree depth of this directory. + + Adds a directory record to the directories table. + + The MSI database. + The MSI database view. + The parent directory. + This directory's Schema object. + The tree depth of this directory. - - Retrieves the relative path of a file based on - the component it belongs to and its entry in - the MSI directory table. - - The MSI database. - The Name of the Folder - The Parent of the Folder - The Relative Filesystem Path of the Folder - The Path to the Folder from previous calls. - The MSI database view. + + Retrieves the relative path of a file based on + the component it belongs to and its entry in + the MSI directory table. + + The MSI database. + The Name of the Folder + The Parent of the Folder + The Relative Filesystem Path of the Folder + The Path to the Folder from previous calls. + The MSI database view. - - If the specified path is longer than 40 characters, 37 are returned plus ... - - A shortened path - + + If the specified path is longer than 40 characters, 37 are returned plus ... + + A shortened path + - - Retrieves a DOS 8.3 filename for a file. - - The file to shorten. - The new shortened file. + + Retrieves a DOS 8.3 filename for a file. + + The file to shorten. + The new shortened file. - - Retrieves a DOS 8.3 filename for a directory. - - The path to shorten. - The new shortened path. - + + Retrieves a DOS 8.3 filename for a directory. + + The path to shorten. + The new shortened path. + - - Retrieves a DOS 8.3 filename for a complete directory. - - The path to shorten. - The new shortened path. + + Retrieves a DOS 8.3 filename for a complete directory. + + The path to shorten. + The new shortened path. - - Recursively expands properties of all attributes of - a nodelist and their children. - - The nodes to recurse. + + Recursively expands properties of all attributes of + a nodelist and their children. + + The nodes to recurse. - - Converts the Byte array in a public key - token of an assembly to a string MSI expects. - - The array of bytes. - The string containing the array. + + Converts the Byte array in a public key + token of an assembly to a string MSI expects. + + The array of bytes. + The string containing the array. - - Loads TypeLibs for the TypeLib table. - - The MSI database. + + Loads TypeLibs for the TypeLib table. + + The MSI database. - - Loads environment variables for the Environment table. - - The MSI database. + + Loads environment variables for the Environment table. + + The MSI database. - - Loads records for the Registry table. - - The MSI database. + + Loads records for the Registry table. + + The MSI database. - - Loads records for the RegLocator table - - The MSI database. + + Loads records for the RegLocator table + + The MSI database. - - Loads records for the CompLocator table - - The MSI database. + + Loads records for the CompLocator table + + The MSI database. - - Loads records for the IniLocator table - - The MSI database. + + Loads records for the IniLocator table + + The MSI database. - - Loads records for the DrLocator table - - The MSI database. + + Loads records for the DrLocator table + + The MSI database. - - Loads records for the RegLocator table - - The MSI database. + + Loads records for the RegLocator table + + The MSI database. - - Gets the name of the registry root id by it's name. - - Name of the registry root - + + Gets the name of the registry root id by it's name. + + Name of the registry root + - - Loads records for the AppSearch table - - The MSI database. + + Loads records for the AppSearch table + + The MSI database. - - Loads records for the Icon table. - - The MSI database. + + Loads records for the Icon table. + + The MSI database. - - Loads records for the Shortcut table. - - The MSI database. + + Loads records for the Shortcut table. + + The MSI database. - - Adds custom table(s) to the msi database - - The MSI database. + + Adds custom table(s) to the msi database + + The MSI database. - - Adds table data to the msi database table structure - - The MSI database. - The current table name - Xml node representing the current table - List of column objects for the current table (Containing: column name, id, type). + + Adds table data to the msi database table structure + + The MSI database. + The current table name + Xml node representing the current table + List of column objects for the current table (Containing: column name, id, type). - - Loads records for the Binary table. This table stores items - such as bitmaps, animations, and icons. The binary table is - also used to store data for custom actions. - - The MSI database. + + Loads records for the Binary table. This table stores items + such as bitmaps, animations, and icons. The binary table is + also used to store data for custom actions. + + The MSI database. - - Loads records for the Dialog table. - - The MSI database. + + Loads records for the Dialog table. + + The MSI database. - - Loads records for the Control table. - - The MSI database. + + Loads records for the Control table. + + The MSI database. - - Loads records for the ControlCondtion table. - - The MSI database. + + Loads records for the ControlCondtion table. + + The MSI database. - - Loads records for the ControlEvent table. - - The MSI database. + + Loads records for the ControlEvent table. + + The MSI database. - - Loads records for the CustomAction table - - The MSI database. + + Loads records for the CustomAction table + + The MSI database. - - Loads records for the ActionText table. Allows users to specify descriptions/templates for actions. - - The MSI database. + + Loads records for the ActionText table. Allows users to specify descriptions/templates for actions. + + The MSI database. - - Loads records for the _AppMappings table. - - The MSI database. + + Loads records for the _AppMappings table. + + The MSI database. - - Loads records for the _UrlToDir table. - "Load the url properties to convert - url properties to a properties object" ?? - - The MSI database. + + Loads records for the _UrlToDir table. + "Load the url properties to convert + url properties to a properties object" ?? + + The MSI database. - - Loads records for the _VDirToUrl table. - Used for converting a vdir to an url - - The MSI database. + + Loads records for the _VDirToUrl table. + Used for converting a vdir to an url + + The MSI database. - - Loads records for the _AppRootCreate table. - Used for making a virtual directory a virtual application - - The MSI database. + + Loads records for the _AppRootCreate table. + Used for making a virtual directory a virtual application + + The MSI database. - - Loads records for the _IISProperties table. - - The MSI database. + + Loads records for the _IISProperties table. + + The MSI database. - - Enumerates the registry to see if an assembly has been registered - for COM interop, and if so adds these registry keys to the Registry - table, ProgIds to the ProgId table, classes to the Classes table, - and a TypeLib to the TypeLib table. - - The MSI database. - The Assembly filename. - The Assembly to check. - The name of the containing component. - The name of the containing component's assembly GUID. - View containing the Class table. - View containing the ProgId table. + + Enumerates the registry to see if an assembly has been registered + for COM interop, and if so adds these registry keys to the Registry + table, ProgIds to the ProgId table, classes to the Classes table, + and a TypeLib to the TypeLib table. + + The MSI database. + The Assembly filename. + The Assembly to check. + The name of the containing component. + The name of the containing component's assembly GUID. + View containing the Class table. + View containing the ProgId table. - - Loads properties for the Summary Information Stream. - - The MSI database. + + Loads properties for the Summary Information Stream. + + The MSI database. - - Creates a .cab file with all source files included. - - The MSI database. + + Creates a .cab file with all source files included. + + The MSI database. - - Loads records for the sequence tables. - - The MSI database. + + Loads records for the sequence tables. + + The MSI database. - - Adds a file record to the Files table. - - The MSI database. - The MSI database view. - The Component's XML Element. - The MSI database view. - The directory of this file's component. - The name of this file's component. - The installation sequence number of this file. - View containing the MsiAssembly table. - View containing the MsiAssemblyName table. - View containing the Components table. - View containing the FeatureComponents table. - View containing the Class table. - View containing the ProgId table. - View containing the SelfReg table. - ModuleComponent table. + + Adds a file record to the Files table. + + The MSI database. + The MSI database view. + The Component's XML Element. + The MSI database view. + The directory of this file's component. + The name of this file's component. + The installation sequence number of this file. + View containing the MsiAssembly table. + View containing the MsiAssemblyName table. + View containing the Components table. + View containing the FeatureComponents table. + View containing the Class table. + View containing the ProgId table. + View containing the SelfReg table. + ModuleComponent table. - - Loads records for the Components table. - - The MSI database. - The sequence number of the last file in the .cab + + Loads records for the Components table. + + The MSI database. + The sequence number of the last file in the .cab - - Executes the Task. - - None. + + Executes the Task. + + None. - - .NET wrapper for a Windows Installer database - + + .NET wrapper for a Windows Installer database + - - Drops empty tables. - + + Drops empty tables. + - - Drops the empty tables. - - Determines if this is a merge module or not - If it is a merge module, the FeatureComponents table should not be dropped. + + Drops the empty tables. + + Determines if this is a merge module or not + If it is a merge module, the FeatureComponents table should not be dropped. - - Checks to see if the specified table is empty. - - Name of the table to check existance. - True if empy and False if full. + + Checks to see if the specified table is empty. + + Name of the table to check existance. + True if empy and False if full. - - Checks to see if the specified table exists in the database - already. - - Name of the table to check existance. - True if successful. + + Checks to see if the specified table exists in the database + already. + + Name of the table to check existance. + True if successful. - - Helper class used to avoid errors when instantiating - WindowsInstaller.Installer. - + + Helper class used to avoid errors when instantiating + WindowsInstaller.Installer. + - - Use to read and manipulate existing records. - + + Use to read and manipulate existing records. + - - Creates a new reader for the entries in the view - - Database view to read entries from. Must be Execute()'ed already. + + Creates a new reader for the entries in the view + + Database view to read entries from. Must be Execute()'ed already. - - Moves to the next record - - False iff no more records + + Moves to the next record + + False iff no more records - - Deletes the current record. Needs no Commit(). - + + Deletes the current record. Needs no Commit(). + - - Set the value of a field in the current record. Remember to Commit() - - Zero-based index of the field to set - New value + + Set the value of a field in the current record. Remember to Commit() + + Zero-based index of the field to set + New value - - Get the string value of a field in the current record. - - Zero-based index of the field to get + + Get the string value of a field in the current record. + + Zero-based index of the field to get - - Commits changes to the current record. - + + Commits changes to the current record. + - - A simple class for a single search clause. - TODO: more comparison types, use of the Composite pattern, etc. - + + A simple class for a single search clause. + TODO: more comparison types, use of the Composite pattern, etc. + - - Represents a single table in a Windows Installer archive - + + Represents a single table in a Windows Installer archive + - - Base class for msi/msm installer tasks - + + Base class for msi/msm installer tasks + @@ -2423,23 +2493,23 @@ - - Initializes the task and verifies parameters. - + + Initializes the task and verifies parameters. + - - Occurs when a validation error is raised. - - The object that sent the event. - Validation arguments passed in. + + Occurs when a validation error is raised. + + The object that sent the event. + Validation arguments passed in. - - Recursively expands properties of all attributes of - a nodelist and their children. - - The nodes to recurse. + + Recursively expands properties of all attributes of + a nodelist and their children. + + The nodes to recurse. @@ -2449,3171 +2519,145 @@ The object from the Schema wrapper after is called. - - The name of the file that will be generated when the task completes - execution (eg. MyInstall.msi or MyMergeModule.msm). - + + The name of the file that will be generated when the task completes + execution (eg. MyInstall.msi or MyMergeModule.msm). + - - A directory relative to the NAnt script in which the msi task resides - from which to retrieve files that will be installed by the msi - database. All files that will be included in your installation need - to be located directly within or in subdirectories of this directory. - + + A directory relative to the NAnt script in which the msi task resides + from which to retrieve files that will be installed by the msi + database. All files that will be included in your installation need + to be located directly within or in subdirectories of this directory. + - - A installer file to use as the starting database in which all files - and entries will be made, and then copied to the filename specified - by the output parameter. Install templates are included with the - install tasks, you only need to supply this value if you want to - override the default template. - + + A installer file to use as the starting database in which all files + and entries will be made, and then copied to the filename specified + by the output parameter. Install templates are included with the + install tasks, you only need to supply this value if you want to + override the default template. + - - A .mst file to use as the starting database containing strings - displayed to the user when errors occur during installation. - A .mst template is included with the msi task, you only need to - supply this value if you want to override the default error - template and cannot perform something through the features of the - msi task. - + + A .mst file to use as the starting database containing strings + displayed to the user when errors occur during installation. + A .mst template is included with the msi task, you only need to + supply this value if you want to override the default error + template and cannot perform something through the features of the + msi task. + - - Causes the generated msi database file to contain debug messages for - errors created by inconsistencies in creation of the database. This - makes the file slightly larger and should be avoided when generating - a production release of your software. - + + Causes the generated msi database file to contain debug messages for + errors created by inconsistencies in creation of the database. This + makes the file slightly larger and should be avoided when generating + a production release of your software. + - - - Sets various properties in the SummaryInformation stream - (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_information_stream.asp) - - - All of the sub-elements are optional. - -

Nested Elements:

-

<title>

-
    - Briefly describes the type of installer package. Phrases such as "Installation Database" or - "Transform" or "Patch" may be used for this property. -
    Default value: Value of the ProductName property, if defined. -
-

</title>

-

<subject>

-
    - A short description of the product to be installed. This value is typically set from the installer - property ProductName -
    Default value: Value of the ProductName property, if defined. -
-

</subject>

-

<author>

-
    - The manufacturer of the installation database. This value is typically set from the installer - property Manufacturer. -
    Default value: Value of the Manufacturer property, if defined. -
-

</author>

-

<keywords>

-
    - Used by file browsers to hold keywords that permit the database file to be found in a keyword search. - The set of keywords typically includes "Installer" as well as product-specific keywords, and may be - localized. -
    Default value: Value of the Keywords property, if defined. -
-

</keywords>

-

<comments>

-
    - A general description/purpose of the installer database. -
    Default value: Value of the Comments property, if defined. -
-

</comments>

-

<template>

-
    - - Indicates the platform and language versions that are supported by the database. The Template Summary - Property of a patch package is a semicolon-delimited list of the product codes that can accept the - patch. - - - See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/template_summary_property.asp for more information. - -
-

</template>

-

<revisionnumber>

-
    - Contains the package code (GUID) for the installer package. The package code is a unique identifier - of the installer package. Note: Default behavior - a new GUID is generated every time -
-

</revisionnumber>

-

<creatingapplication>

-
    - The name of the application used to author the database. Note: Default value is NAnt. -
-

</creatingapplication>

-

Examples

- - Define specific summary information. - - <summaryinformation> - <title>Installation Database</title> - <subject>${install.productname}</subject> - <author>${install.manufacturer}</author> - <keywords>MSI, database, NAnt, Installer</keywords> - <comments>This installer database contains the logic and data required to install NAnt</comments> - <template>;1033</template> - <creatingapplication>NAnt - http://nant.sf.net </creatingapplication> - </summaryinformation> - - -
+ + + Sets various properties in the SummaryInformation stream + (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_information_stream.asp) + + + All of the sub-elements are optional. + +

Nested Elements:

+

<title>

+
    + Briefly describes the type of installer package. Phrases such as "Installation Database" or + "Transform" or "Patch" may be used for this property. +
    Default value: Value of the ProductName property, if defined. +
+

</title>

+

<subject>

+
    + A short description of the product to be installed. This value is typically set from the installer + property ProductName +
    Default value: Value of the ProductName property, if defined. +
+

</subject>

+

<author>

+
    + The manufacturer of the installation database. This value is typically set from the installer + property Manufacturer. +
    Default value: Value of the Manufacturer property, if defined. +
+

</author>

+

<keywords>

+
    + Used by file browsers to hold keywords that permit the database file to be found in a keyword search. + The set of keywords typically includes "Installer" as well as product-specific keywords, and may be + localized. +
    Default value: Value of the Keywords property, if defined. +
+

</keywords>

+

<comments>

+
    + A general description/purpose of the installer database. +
    Default value: Value of the Comments property, if defined. +
+

</comments>

+

<template>

+
    + + Indicates the platform and language versions that are supported by the database. The Template Summary + Property of a patch package is a semicolon-delimited list of the product codes that can accept the + patch. + + + See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/template_summary_property.asp for more information. + +
+

</template>

+

<revisionnumber>

+
    + Contains the package code (GUID) for the installer package. The package code is a unique identifier + of the installer package. Note: Default behavior - a new GUID is generated every time +
+

</revisionnumber>

+

<creatingapplication>

+
    + The name of the application used to author the database. Note: Default value is NAnt. +
+

</creatingapplication>

+

Examples

+ + Define specific summary information. + + <summaryinformation> + <title>Installation Database</title> + <subject>${install.productname}</subject> + <author>${install.manufacturer}</author> + <keywords>MSI, database, NAnt, Installer</keywords> + <comments>This installer database contains the logic and data required to install NAnt</comments> + <template>;1033</template> + <creatingapplication>NAnt - http://nant.sf.net </creatingapplication> + </summaryinformation> + + +
- - - Name/value pairs which will be set in the PROPERTY table of the - installer database. - - - The properties element contains within it one to any number of property elements.
- Public property names cannot contain lowercase letters.
- Private property names must contain some lowercase letters.
- Property names prefixed with % represent system and user environment variables. These are - never entered into the Property - table. The permanent settings of environment variables can only be modified using the Environment Table. - More information is available here. -
-

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the property. - True - - - value - string - The value of the property. This value can contain references to other, predefined properties to build a compound property. - True - - -

Examples

- - Define the required properties. - - <properties> - <property name="ProductName" value="My Product" /> - <property name="ProductVersion" value="1.0.0" /> - <property name="Manufacturer" value="ACME Inc." /> - <property name="ProductCode" value="{29D8F096-3371-4cba-87E1-A8C6511F7B4C}" /> - <property name="UpgradeCode" value="{69E66919-0DE1-4280-B4C1-94049F76BA1A}" /> - </properties> - - -
-
- - - - Contains within it one to any number of app, registry, ini, or dirfile elements. - These elements are used to search for an existing filesystem directory, file, or - Windows Registry setting. A property in the installer database is - then set with the value obtained from the search. - -

<app>

- - More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/complocator_table.asp - - - - Attribute - Type - Description - Required - - - componentid - string - The component ID of the component whose key path is to be used for the search. - True - - - type - msi:MSILocatorTypeDirFile - Valid input: file or directory - True - - - setproperty - string - A name used to refer to the property within the Msi database. Set at install time. - True - - -

</app>

-

<registry>

- - More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/reglocator_table.asp - - - - Attribute - Type - Description - Required - - - type - msi:MSILocatorTypeDirFileReg64 - Valid input: registry, file, directory, 64bit - True - - - path - string - Depending on the type specified: - - Path is a directory. - Path is a registry key. - - - True - - - root - msi:MSIRegistryKeyRoot - Valid input: - - dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. - machine represents HKEY_LOCAL_MACHINE - classes represents HKEY_CLASSES_ROOT - user represents HKEY_CURRENT_USER - users represents HKEY_USERS - - - True - - -
    -

    Nested Elements:

    -

    <value>

    -

    Parameters

    - - - Attribute - Type - Description - Required - - - name - string - Depending on the type specified: - - Key path is a file name. - Key path is a registry value. - - - False - - - setproperty - string - A name used to refer to the property within the Msi database. Set at install time. - True - - -

    </value>

    -
-

</registry>

-

<ini>

- - More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/inilocator_table.asp - - - - Attribute - Type - Description - Required - - - filename - string - The .ini file name. (The .ini file must be present in the default Microsoft Windows directory.) - - True - - - section - string - Section name within the .ini file. - - True - - - key - string - Key value within the section. - - True - - - field - msi:nonNegativeInt - The field in the .ini line. If Field is Null or 0, then the entire line is read. - This must be a non-negative number. - - False - - - type - msi:MSILocatorTypeDirFileRaw - Valid input: file ,directory, or raw - True - - - setproperty - string - A name used to refer to the property within the Msi database. Set at install time. - True - - -

</ini>

-

<dirfile>

- - More information on these attributes can be found at: - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/drlocator_table.asp - and - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/signature_table.asp - - - - Attribute - Type - Description - Required - - - parent - string - An identifier to RegLocator, IniLocator, or CompLocator tables. - If it does not expand to a full path, then all the fixed drives of the user's system are searched by using the Path. -
In order to determine what the key is for a table, prefix the property name assigned - to that locator with SIG_ -
- False -
- - path - string - the path on the user's system. This is a either a full path or a relative subpath - below the directory specified in the Parent column. - - False - - - depth - msi:nonNegativeInt - The depth below the path that the installer searches for the file or directory. - - False - - - setproperty - string - A name used to refer to the property within the Msi database. Set at install time. - True - -
-
    -

    Nested Elements:

    -

    <file>

    -

    Parameters

    - - - Attribute - Type - Description - Required - - - name - string - The name of the file. - True - - - minversion - string - The minimum version of the file, with a language comparison. If this field is - specified, then the file must have a version that is at least equal to MinVersion. - If the file has an equal version to the MinVersion field value but the language - specified in the Languages column differs, the file does not satisfy the signature - filter criteria. - False - - - maxversion - string - The maximum version of the file. If this field is specified, then the file - must have a version that is at most equal to MaxVersion. - False - - - minsize - msi:nonNegativeInt - The minimum size of the file. If this field is specified, then the file - under inspection must have a size that is at least equal to MinSize. This must - be a non-negative number. - False - - - maxsize - msi:nonNegativeInt - The maximum size of the file. If this field is specified, then the file - under inspection must have a size that is at most equal to MaxSize. This must - be a non-negative number. - False - - - mindate - msi:nonNegativeInt - The minimum modification date and time of the file. If this field is - specified, then the file under inspection must have a modification date and time - that is at least equal to MinDate. This must be a non-negative number. - False - - - maxdate - msi:nonNegativeInt - The maximum creation date of the file. If this field is specified, then the - file under inspection must have a creation date that is at most equal to MaxDate. - This must be a non-negative number. - False - - - languages - string - The languages supported by the file. - False - - -

    </file>

    -
-

</dirfile>

-

Examples

- - Get the path of the web directory and the version of IIS. Create new properties in the Msi file with those values. - - <search> - <registry type="registry" path="Software\Microsoft\InetStp" root="machine" > - <value name="PathWWWRoot" setproperty="IISWWWROOT" /> - </registry> - <registry type="registry" path="SYSTEM\CurrentControlSet\Services\W3SVC\Parameters" root="machine" > - <value name="MajorVersion" setproperty="IISVERSION" /> - </registry> - </search> - - - - Shows two ways to get the default key value for the specified key. Create new properties in the Msi file with those values. - - <search> - <registry type="registry" path="Software\Microsoft\MessengerService" root="machine" > - <value setproperty="MSGSRVNAME" /> - <value name="" setproperty="MSGSRVNAME2" /> - </registry> - </search> - - -
-
- - - - Contains within it one to any number of launchcondition elements. - Launch conditions are conditions that all must be satisfied for the - installation to begin. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to identify the launch condition. - True - - - condition - string - Expression that must evaluate to True for installation to begin. - True - - -

Nested Elements:

-

<description>

-
    - Localizable text to display when the condition fails and the installation must be terminated. -
-

</description>

-

Examples

- - Create a check to make sure that IIS 5.x is installed. - - <launchconditions> - <launchcondition name="CheckIIS" condition="(IISVERSION = &quot;#5&quot;)" > - <description> - This setup requires Internet information Server 5.x. Please install Internet Information Server and run this setup again. - </description> - </launchcondition> - </launchconditions> - - -
-
- - - - Creates custom tables not directly managed by default features of - the installer task. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A unique name used to identify the table. - True - - -

Nested Elements:

-

<columns>

-
    -

    <column>

    -
      - Defines the columns making up the table -

      Parameters

      - - - Attribute - Type - Description - Required - - - name - string - A unique name used to define the column. - True - - - nullable - bool - When set to true, allows the column to accept null values; false does not allow null values. - True - - - category - msi:MSITableColumnCategoryType - Valid input: - - Text - UpperCase - LowerCase - Integer - DoubleInteger - Time/Date - Identifier - Property - Filename - WildCardFilename - Path - Paths - AnyPath - DefaultDir - RegPath - Formatted - Template - Condition - GUID - Version - Language - Binary - Cabinet - Shortcut - - More information here: http://msdn.microsoft.com/library/en-us/msi/setup/column_data_types.asp - - False - - - type - string - Overrides the category specification. An example of valid input would be: S255 - False - - - key - bool - When set to true, the column is used to form the primary key for the table; false specifies that the column is not used to form the primary key. - False - - - minvalue - int - This field applies to columns having numeric value. The field contains the minimum permissible value. This can be the minimum value for an integer or the minimum value for a date or version string. - False - - - maxvalue - int - This field applies to columns having numeric value. The field is the maximum permissible value. This may be the maximum value for an integer or the maximum value for a date or version string. - False - - - keytable - string - This field applies to columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. This can be a list of tables separated by semicolons. - False - - - keycolumn - int - This field applies to table columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. The permissible range of the KeyColumn field is 1-32. - False - - - set - string - This is a list of permissible values for this field separated by semicolons. This field is usually used for enums. - False - - - description - string - A description of the data that is stored in the column. - False - - -
    -

    </column>

    -
-

</columns>

-

<rows>

-
    -

    <row>

    -
      - Defines the data for a row in the table -

      <columns>

      -
        -

        <column>

        -
          - Defines data for a specific cell in the row -

          Parameters

          - - - Attribute - Type - Description - Required - - - name - string - Name of the column to populate. - True - - - value - string - Value to populate the cell with. - True - - -
        -

        </column>

        -
      -

      </columns>

      -
    -

    </row>

    -
-

</rows>

-

Examples

- - - Build the IniFile table. Since the WriteIniValues and RemoveIniValues actions exist in the template, they will use this table. - - - <tables> - <table name="IniFile"> - <columns> - <column name="IniFile" nullable="false" category="Identifier" key="true" description="The key for this table." /> - <column name="FileName" nullable="false" category="Text" description="The localizable name of the .ini file in which to write the information. " /> - <column name="DirProperty" nullable="true" category="Identifier" description="Name of a property having a value that resolves to the full path of the folder containing the .ini file. " /> - <column name="Section" nullable="false" category="Formatted" description="The localizable .ini file section." /> - <column name="Key" nullable="false" category="Formatted" description="The localizable .ini file key within the section" /> - <column name="Value" nullable="false" category="Formatted" description="The localizable value to be written. " /> - <column name="Action" nullable="false" category="Integer" description="The type of modification to be made. " /> - <column name="Component_" nullable="false" category="Identifier" description="External key into the first column of the Component table referencing the component that controls the installation of the .ini value. " /> - </columns> - <rows> - <row> - <columns> - <column name="IniFile" value="MyInternetShortcut" /> - <column name="FileName" value="MyInternetAddr.url" /> - <column name="DirProperty" value="D__MYDIR" /> - <column name="Section" value="InternetShortcut" /> - <column name="Key" value="URL" /> - <column name="Value" value="[TARGETURL]" /> - <column name="Action" value="0" /> - <column name="Component_" value="C__Documentation" /> - </columns> - </row> - </rows> - </table> - </tables> - - -
-
- - - - Specifies the directory layout for the product. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the directory. - True - - - foldername - string - The directory's name (localizable)under the parent directory. - True - - - root - string - A reference to the directory's parent directory. This can be a property name or one of the predefined directories included with the default template: - - AdminToolsFolder - AppDataFolder - CommonAppDataFolder - CommonFiles64Folder - CommonFilesFolder - DesktopFolder - FavoritesFolder - FontsFolder - LocalAppDataFolder - MyPicturesFolder - PersonalFolder - ProgramFilesFolder - ProgramMenuFolder - ProgramFiles64Folder - SendToFolder - StartMenuFolder - StartupFolder - System16Folder - System64Folder - SystemFolder - TARGETDIR - TempFolder - TemplateFolder - WindowsFolder - WindowsVolume - - - True - - -

Nested Elements:

-

<directory>

-
    - Sub directories. Note, this element can contain nested <directory/> sub elements. -

    Parameters

    - - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the directory. - True - - - foldername - string - The directory's name (localizable)under the parent directory. - True - - -
-

</directory>

-

Examples

- - Define a sample directory structure. - - <directories> - <directory name="D__ACME" foldername="ACME" root="TARGETDIR" > - <directory name="D__ACME_MyProduct" foldername="My Product" /> - </directory> - </directories> - - -
-
- -
- - Used to modify the environment variables of the target computer at - runtime. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - The localizable name of the environment variable. The key values are written or removed depending upon - which of the characters in the following table are prefixed to the name. There is no effect in the ordering of - the symbols used in a prefix. - - - Prefix - Description - - - = - Create the environment variable if it does not exist, and then set it during installation. If the environment variable exists, set it during the installation. - - - + - Create the environment variable if it does not exist, then set it during installation. This has no effect on the value of the environment variable if it already exists. - - - - - Remove the environment variable when the component is removed. This symbol can be combined with any prefix. - - - ! - Remove the environment variable during an installation. The installer only removes an environment variable during an installation if the name and value of the variable match the entries in the Name and Value fields of the Environment table. If you want to remove an environment variable, regardless of its value, use the '!' syntax, and leave the Value field empty. - - - * - This prefix is used with Microsoft® Windows® NT/Windows® 2000 to indicate that the name refers to a system environment variable. If no asterisk is present, the installer writes the variable to the user's environment. Microsoft Windows 95/98 ignores the asterisk and add the environment variable to autoexec.bat. This symbol can be combined with any prefix. A package that is used for per-machine installations should write environment variables to the machine's environment by including * in the Name column. For more information, see http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp - - - =- - The environment variable is set on install and removed on uninstall. This is the usual behavior. - - - !- - Removes an environment variable during an install or uninstall. - - - More information can be found here: http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp - - True - - - append - string - Localizable value that is to be set as a
formatted string - True - - - component - string - Refrence to a component. Allows the variabled to be modified when the component is un/installed. - True - - -

Examples

- - Append the installation path to the user PATH variable. - - <environment> - <variable name="PATH" append="'[TARGETDIR]'" component="C__MainFiles" /> - </environment> - - -
- - - - - Groups sets of files into named sets, these can be used to install - and perform operations on a set of files as one entity. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the component. - True - - - id - string - A string GUID unique to this component, version, and language.
Note that the letters of these GUIDs must be - uppercase. Utilities such as GUIDGEN can generate GUIDs containing lowercase letters. The lowercase letters must be - changed to uppercase to make these valid component code GUIDs. -
- True -
- - attr - int - This column contains a bit flag that specifies options for remote execution. Add the indicated bit to the total value in the column to include an option. - - - Value - Description - - - 0 - Component cannot be run from source.
- Set this bit for all components belonging to a feature to prevent the feature from being run-from-network or - run-from-source. Note that if a feature has no components, the feature always shows run-from-source and - run-from-my-computer as valid options. -
-
- - 1 - Component can only be run from source.
- Set this bit for all components belonging to a feature to prevent the feature from being run-from-my-computer. - Note that if a feature has no components, the feature always shows run-from-source and run-from-my-computer as - valid options. -
-
- - 2 - Component can run locally or from source. - - - 4 - If this bit is set, the value in the key element is used as a key into the Registry table.
- If the Value field of the corresponding record in the Registry table is null, the Name field in that record must - not contain "+", "-", or "*". For more information, see the description of the Name field in Registry table.
- Setting this bit is recommended for registry entries written to the HKCU hive. This ensures the installer writes - the necessary HKCU registry entries when there are multiple users on the same machine. -
-
- - 16 - If this bit is set, the installer does not remove the component during an uninstall. The installer registers an extra system client for the component in the Windows Installer registry settings. - - - - 32 - If this bit is set, the value in the KeyPath column is a key into the ODBCDataSource table. - - - 64 - If this bit is set, the installer reevaluates the value of the statement in the Condition column - upon a reinstall. If the value was previously False and has changed to True, the installer installs the component. - If the value was previously True and has changed to False, the installer removes the component even if the component - has other products as clients.
This bit should only be set for transitive components. See Using Transitive - Components. -
-
- - 128 - If this bit is set, the installer does not install or reinstall the component if a key path file or - a key path registry entry for the component already exists. The application does register itself as a client of - the component.
- Use this flag only for components that are being registered by the Registry table. -
-
- - 256 - Set this bit to mark this as a 64-bit component. This attribute facilitates the installation of - packages that include both 32-bit and 64-bit components. If this bit is not set, the component is registered - as a 32-bit component. - - -
-
- True -
- - directory - string - Refrence to a directory. Defines the directory location for where the files assigned to the component are to be placed. - True - - - feature - string - Refrence to a feature. Maps a feature to the component. Used to determine if the component is to be installed or not. - True - - - condition - string - A conditional statement that can control whether a component is installed. If the condition is null or evaluates to - true, then the component is enabled. If the condition evaluates to False, then the component is disabled and is not - installed. - False - - - fileattr - int - Integer containing bit flags representing file attributes.
- The following table shows the definition of the bit field. - - - Value - Description - - - 1 - Read-Only - - - 2 - Hidden - - - 4 - System - - - 512 - The file is vital for the proper operation of the component to which it belongs - - - 1024 - The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. - - - 4096 - This bit must only be added by a patch and if the file is being added by the patch. - - - 8192 - The file's source type is uncompressed. If set, ignore the Word Count Summary Property. - If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression - state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed - and msidbFileAttributesCompressed. - - - 16384 - The file's source type is compressed. If set, ignore the Word Count Summary Property. - If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of - the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and - msidbFileAttributesCompressed. - - -
- False -
- - checkinterop - bool - Used to determine if file(s) in the fileset are interop file(s). If true, extra information will be added in the install - package to register each interop file. If false, the file(s) will not be not be checked and the extra registration information - will not be added to the msi. - False - - - installassembliestogac - bool - Used to determine if assemblies should be installed to the Global Assembly Cache. - If true, all assemblies in the fileset will be added to the GAC. If false, the assemblies will be installed - to the specified directory (as a normal file would). Note: If an assembly is specified to be installed into the GAC, it will not - also be installed to the directory specified. - False - - - keepsubdirs - bool - Used to determine if directories in the fileset should be built. - If true, all subdirectories of the fileset basedir will be built. If false the directories structure will be - flattened. The default is false. - False - -
-

Nested Elements:

-

<keyfile>

-
    - This value points to a file or folder belonging to the component that the installer uses to detect the component. Two components cannot share the same key path value. -

    Parameters

    - - - Attribute - Type - Description - Required - - - file - string - Name of the key (file) to use. Also, this could be an id of a registry key value. - True - - -
-

</keyfile>

-

<fileset>

-
    - Specifies the files to include with the component -
-

</fileset>

-

<forceid>

-
    - Used to force specific attributes on a per file basis -

    Parameters

    - - - Attribute - Type - Description - Required - - - file - string - Name of the file, in the fileset, to override. - True - - - id - string - Unique GUID to assign to the file. - True - - - attr - int - Integer containing bit flags representing file attributes.
    - The following table shows the definition of the bit field. - - - Value - Description - - - 1 - Read-Only - - - 2 - Hidden - - - 4 - System - - - 512 - The file is vital for the proper operation of the component to which it belongs - - - 1024 - The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. - - - 4096 - This bit must only be added by a patch and if the file is being added by the patch. - - - 8192 - The file's source type is uncompressed. If set, ignore the Word Count Summary Property. - If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression - state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed - and msidbFileAttributesCompressed. - - - 16384 - The file's source type is compressed. If set, ignore the Word Count Summary Property. - If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of - the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and - msidbFileAttributesCompressed. - - -
    - False -
    - - version - string - This field is the version string for a versioned file. This field is blank for non-versioned files. - False - - - language - string - A list of decimal language IDs separated by commas. - False - - - checkinterop - bool - Used to determine if file is an interop file. If true, extra information will be added in the install - package to register the interop file. If false, the file will not be not be checked and the extra registration information - will not be added to the msi. - False - - - installtogac - bool - If true, and if the file is an assembly, it will be installed to the GAC. If false, the file - will be installed to the directory specified by the component. Note: If an assembly is specified to - be installed into the GAC, it will not also be installed to the directory specified. - False - -
    -
-

</forceid>

-

Examples

- - Define a sample component structure. - - <components> - <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" > - <key file="default.aspx" /> - <fileset basedir="${install.dir}"> - <include name="*.*" /> - </fileset> - </component> - </components> - - - - Install files to TARGETDIR and assemblies to the GAC (Global Assembly Cache). Do not install MyOtherAssembly.dll to the GAC, but rather install it with the other files (to TARGETDIR) - - <components> - <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" installassembliestogac="true" > - <key file="MyAssemblyName.xml" /> - <fileset basedir="${install.dir}"> - <include name="*.*" /> - </fileset> - <forceid file="MyOtherAssembly.dll" id="_4EB7CCB23D394958988ED817DA00B9D1" installtogac="false" /> - </component> - </components> - - - - Assign a registry entry to a specific component. - - <components> - <component name="C__RegistryEntry" id="{06C654AA-273D-4E39-885C-3E5225D9F336}" attr="4" directory="TARGETDIR" feature="F__DefaultFeature" > - <key file="R__822EC365A8754FACBF6C713BFE4E57F0" /> - </component> - </components> - . - . - . - <registry> - <key path="SOFTWARE\MyCompany\MyProduct\" root="machine" component="C__RegistryEntry"> - <value id="R__822EC365A8754FACBF6C713BFE4E57F0" name="MyKeyName" value="MyKeyValue" /> - </key> - </registry> - - -
-
- - - - Creates custom dialogs that can gather information not handled by - the default installer template. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the dialog. - True - - - hcenter - int - Horizontal position of the dialog box. The range is 0 to 100, with 0 at the left edge of the screen and 100 at the right edge. - True - - - vcenter - int - Vertical position of the dialog box. The range is 0 to 100, with 0 at the top edge of the screen and 100 at the bottom edge. - True - - - width - int - Width of the rectangular boundary of the dialog box. This number must be non-negative. - True - - - height - int - Height of the rectangular boundary of the dialog box. This number must be non-negative. - True - - - attr - int - A 32-bit word that specifies the attribute flags to be applied to this dialog box. This number must be non-negative. - - - Value - Description - - - 1 - Visible - - - 2 - Modal - - - 4 - Minimize - - - 8 - SysModal - - - 16 - KeepModeless - - - 32 - TrackDiskSpace - - - 64 - UseCustomPalette - - - 128 - RTLRO - - - 256 - RightAligned - - - 512 - LeftScroll - - - 896 - BiDi - - - 65536 - Error - - - More information here: http://msdn.microsoft.com/library/en-us/msi/setup/dialog_style_bits.asp - - True - - - title - string - A localizable text string specifying the title to be displayed in the title bar of the dialog box. - True - - - firstcontrol - string - An external key to the second column of the Control table. Combining this field with the Dialog field identifies a - unique control in the Control table. This defines the control that takes the focus when the dialog box is created. This - column is ignored in an Error dialog box.
- Because static text cannot take the focus, a Text control that describes an Edit, PathEdit, ListView, ComboBox or - VolumeSelectCombo control must be made the first control in the dialog box to ensure compatibility with screen readers. -
- True -
- - defaultcontrol - string - An external key to the second column of the Control table. Combining this field with the Dialog field results in - a primary key into the Control table that defines the default control. Hitting the Return key is equivalent to clicking - on the default control. If this column is left blank, then there is no default control. This column is ignored in the - Error dialog box. - - True - - - cancelcontrol - string - An external key to the second column of the Control table. Combining this field with the Dialog field results in - a primary key of the Control table that defines the cancel control. Hitting the ESC key or clicking the Close button in - the dialog box is equivalent to clicking on the cancel control. This column is ignored in an Error dialog box.
- The cancel control is hidden during rollback or the removal of backed up files. The protected UI handler hides the control - upon receiving a INSTALLMESSAGE_COMMONDATA message. -
- True -
-
-

Examples

- - Add a web folder dialog: - - <dialogs> - <dialog name="WebFolderDlg" hcenter="50" vcenter="50" width="370" height="270" attr="39" title="[ProductName] [Setup]" firstcontrol="Next" defaultcontrol="Next" cancelcontrol="Cancel" /> - </dialogs> - - -
-
- - - - Creates user interface controls displayed on custom dialogs. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Name of the control. This name must be unique within a dialog box but can be repeated on different dialog boxes. - True - - - dialog - string - Refrence to a dialog. Used to associate the control with the dialog. - True - - - type - string - The type of the control. - - - Control name - Description - - - Billboard - Displays billboards based on progress messages. - - - Bitmap - Displays a static picture of a bitmap. - - - CheckBox - A two-state check box. - - - ComboBox - A drop-down list with an edit field. - - - DirectoryCombo - Select all except the last segment of the path. - - - DirectoryList - Displays folders below the main part of path. - - - Edit - A regular edit field for any string or integer. - - - GroupBox - Displays a rectangle that groups other controls together. - - - Icon - Displays a static picture of an icon. - - - Line - Displays a horizontal line. - - - ListBox - A drop-down list without an edit field. - - - ListView - Displays a column of values with icons for selection. - - - MaskedEdit - An edit field with a mask in the text field. - - - PathEdit - Displays folder name or entire path in an edit field. - - - ProgressBar - Bar graph that changes length as it receives progress messages. - - - PushButton - Displays a basic push button. - - - RadioButtonGroup - A group of radio buttons. - - - ScrollableText - Displays a long string of text. - - - SelectionTree - Displays information from the Feature table and enables the user to change their selection state. - - - Text - Displays static text. - - - VolumeCostList - Displays costing information on different volumes. - - - VolumeSelectCombo - Selects volume from an alphabetical list. - - - More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/controls.asp - True - - - x - int - Horizontal coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. - True - - - y - int - Vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. - True - - - width - int - Width of the rectangular boundary of the control. This must be a non-negative number. - True - - - height - int - Height of the rectangular boundary of the control. This must be a non-negative number. - True - - - attr - int - A 32-bit word that specifies the bit flags to be applied to this control. This must be a non-negative number, and the allowed values depend upon the type of control.For a list of all control attributes, and the value to enter in this field, see Control Attributes. - True - - - property - string - The name of a defined property to be linked to this control. Radio button, list box, and combo box values are tied into a group by being linked to the same property. This column is required for active controls and is ignored by static controls. - False - - - text - string - A localizable string used to set the initial text contained in a control. The string can also contain embedded properties. - False - - - nextcontrol - string - The name of another control on the same dialog box. If the focus in the dialog box is on the control in the Control column, hitting the tab key moves the focus to the control listed here. Therefore this is used to specify the tab order of the controls on the dialog box. The links between the controls must form a closed cycle. Some controls, such as static text controls, can be left out of the cycle. In that case, this field may be left blank. - False - - - help - string - Optional, localizable text strings that are used with the Help button. The string is divided into two parts by a separator character (|). The first part of the string is used as ToolTip text. This text is used by screen readers for controls that contain a picture. The second part of the string is reserved for future use. The separator character is required even if only one of the two kinds of text is present. - False - - - remove - bool - If true, the control is removed. If false, the control is added. - False - - -

Examples

- - Remove the Browse button from the customize dialog and add controls for a web dialog - - <controls> - <!-- Remove the Browse button from customize dialog --> - <control dialog="CustomizeDlg" name="Browse" type="PushButton" - x="304" y="200" width="56" height="17" attr="3" remove="true" /> - <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" - x="25" y="85" width="175" height="95" attr="7" remove="true" /> - <!-- Re add the tree control with the proper next control --> - <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" - x="25" y="85" width="175" height="95" attr="7" - property="_BrowseProperty" text="Tree of selections" nextcontrol="Reset" /> - <!-- Adds the controls associated with the webfolder dialog --> - <control dialog="WebFolderDlg" name="BannerBitmap" type="Bitmap" - x="0" y="0" width="374" height="44" attr="1" - text="[BannerBitmap]" nextcontrol="VDirLabel" /> - <control dialog="WebFolderDlg" name="Title" type="Text" - x="15" y="6" width="200" height="15" attr="196611" - text="[DlgTitleFont]Virtual Directory Information" /> - <control dialog="WebFolderDlg" name="Description" type="Text" - x="25" y="23" width="280" height="15" attr="196611" - text="Please enter your virtual directory and port information." /> - <control dialog="WebFolderDlg" name="BannerLine" type="Line" - x="0" y="44" width="374" height="0" attr="1" /> - <control dialog="WebFolderDlg" name="VDirLabel" type="Text" - x="18" y="73" width="348" height="15" attr="3" - text="&Virtual directory:" - nextcontrol="Edit_VDir" /> - <control dialog="WebFolderDlg" name="Edit_VDir" type="Edit" - x="18" y="85" width="252" height="18" attr="7" - property="TARGETVDIR" - text="[TARGETVDIR]" - nextcontrol="PortLabel" /> - <control dialog="WebFolderDlg" name="PortLabel" type="Text" - x="18" y="110" width="348" height="15" attr="3" - text="&Port:" - nextcontrol="Edit_Port" /> - <control dialog="WebFolderDlg" name="Edit_Port" type="Edit" - x="18" y="122" width="48" height="18" attr="7" - property="TARGETPORT" - text="[TARGETPORT]" - nextcontrol="Back" /> - <control dialog="WebFolderDlg" name="BottomLine" type="Line" - x="0" y="234" width="374" height="0" attr="1" /> - <control dialog="WebFolderDlg" name="Back" type="PushButton" - x="180" y="243" width="56" height="17" attr="3" - text="[ButtonText_Back]" nextcontrol="Next" /> - <control dialog="WebFolderDlg" name="Next" type="PushButton" - x="236" y="243" width="56" height="17" attr="3" - text="[ButtonText_Next]" nextcontrol="Cancel" /> - <control dialog="WebFolderDlg" name="Cancel" type="PushButton" - x="304" y="243" width="56" height="17" attr="3" - text="[ButtonText_Cancel]" nextcontrol="BannerBitmap" /> - </controls> - - -
-
- - - - Used to validate and perform operations as the result of information - entered by the user into controls on custom dialogs. - -

Parameters

- - - Attribute - Type - Description - Required - - - dialog - string - Refrence to a dialog. Used to associate the control with the dialog. - True - - - control - string - Refrence to a control. Maps to a control for the specified dialog. - True - - - action - string - The action that is to be taken on the control. The possible actions are shown in the following table. - - - Value - Description - - - Default - Set control as the default. - - - Disable - Disable the control. - - - Enable - Enable the control. - - - Hide - Hide the control. - - - Show - Display the control. - - - - True - - - condition - string - A conditional statement that specifies under which conditions the action should be triggered. If this statement does not evaluate to TRUE, the action does not take place. If it is set to 1, the action is always applied. - True - - - remove - bool - If true, the control condition is removed. If false, the control condition is added. - False - - -

Examples

- - Remove the control condition for the Browse button from the customize dialog and add control conditions for a web dialog - - <controlconditions> - <!-- Remove control condition for Browse button on customizeDlg --> - <controlcondition dialog="CustomizeDlg" control="Browse" action="Hide" - condition="Installed" remove="true" /> - <!-- Add control conditions for the web folder dialog --> - <controlcondition dialog="WebFolderDlg" control="Back" action="Disable" - condition="ShowUserRegistrationDlg=""" /> - <controlcondition dialog="WebFolderDlg" control="Back" action="Enable" - condition="ShowUserRegistrationDlg<>""" /> - </controlconditions> - - -
-
- - - - Used to route the flow of the installation process as the result of - events raised by the user interacting with controls on dialogs. - -

Parameters

- - - Attribute - Type - Description - Required - - - dialog - string - Refrence to a dialog. Used to associate the control with the dialog. - True - - - control - string - Refrence to a control. Maps to a control for the specified dialog. - True - - - name - string - An identifier that specifies the type of event that should take place when the user interacts with the control - specified by Dialog_ and Control_. For a list of possible values see ControlEvent Overview.
- To set a property with a control, put [Property_Name] in this field and the new value in the argument field. Put { } - into the argument field to enter the null value. -
- True -
- - argument - string - A value used as a modifier when triggering a particular event. - True - - - condition - string - A conditional statement that determines whether the installer activates the event in the Event column. The installer - triggers the event if the conditional statement in the Condition field evaluates to True. Therefore put a 1 in this column - to ensure that the installer triggers the event. The installer does not trigger the event if the Condition field contains - a statement that evaluates to False. The installer does not trigger an event with a blank in the Condition field unless no - other events of the control evaluate to True. If none of the Condition fields for the control named in the Control_ field - evaluate to True, the installer triggers the one event having a blank Condition field, and if more than one Condition field - is blank it triggers the one event of these with the largest value in the Ordering field. - False - - - order - int - An integer used to order several events tied to the same control. This must be a non-negative number. - False - - - remove - bool - If true, the control condition is removed. If false, the control condition is added. - False - -
-

Examples

- - Remove the control events for the Browse button from the customize dialog and add events conditions for a web dialog - - - <controlevents> - <!-- Remove the old control events --> - <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" - argument="SetupTypeDlg" condition="ProductID" remove="true" /> - <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" - argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg <> 1" remove="true" /> - <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" - argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg = 1" remove="true" /> - <!-- Remove control events for Browse button on CustomizeDlg --> - <controlevent dialog="CustomizeDlg" control="Browse" name="SelectionBrowse" - argument="BrowseDlg" condition="1" remove="true" /> - <!-- Add new control events for the web dialog --> - <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" - argument="WebFolderDlg" condition="ProductID" /> - <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" - argument="WebFolderDlg" condition="ShowWebFolderDlg <> 1" /> - <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" - argument="WebFolderDlg" condition="ShowWebFolderDlg = 1" /> - <controlevent dialog="WebFolderDlg" control="Cancel" name="SpawnDialog" - argument="CancelDlg" order="0" /> - <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" - argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg<>1" - order="0" /> - <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" - argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg=1" - order="0" /> - <!-- Virtual Directory Control Events --> - <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" - argument="WEBCA_CreateURLs" condition="1" order="0" /> - <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" - argument="WEBCA_EvaluateURLsMB" condition="1" order="1" /> - <controlevent dialog="WebFolderDlg" control="Next" name="SetTargetPath" - argument="TARGETDIR" condition="1" order="2" /> - <controlevent dialog="WebFolderDlg" control="Next" name="NewDialog" - argument="SetupTypeDlg" condition="1" order="3" /> - </controlevents> - - -
-
- - - - Makes modifications to the Windows Registry of the target computer - at runtime. - -

Parameters

- - - Attribute - Type - Description - Required - - - component - string - Refrence to a component. The component that controls the installation of the registry value. - True - - - root - msi:MSIRegistryKeyRoot - Valid input: - - dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. - machine represents HKEY_LOCAL_MACHINE - classes represents HKEY_CLASSES_ROOT - user represents HKEY_CURRENT_USER - users represents HKEY_USERS - - - True - - - path - string - Registry key. - True - - -

Nested Elements:

-

<value>

-
    - Specifies the registry value to add to the target machine. - - - Attribute - Type - Description - Required - - - name - string - The registry value name (localizable). If this is Null, then the data entered into the Value column are - written to the default registry key.
    - If the Value column is Null, then the strings shown in the following table in the Name column have special - significance. - - - String - Description - - - + - The key is to be created, if absent, when the component is installed. - - - - - The key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. - - - * - The key is to be created, if absent, when the component is installed. Additionally, the key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. - - -
    - False -
    - - value - string - The localizable registry value. The field is Formatted. If the value is attached to one of the following prefixes (i.e. #%value) then the value is interpreted as described in the table. Note that each prefix begins with a number sign (#). If the value begins with two or more consecutive number signs (#), the first # is ignored and value is interpreted and stored as a string. - - - Prefix - Description - - - #x - The value is interpreted and stored as a hexadecimal value (REG_BINARY). - - - #% - The value is interpreted and stored as an expandable string (REG_EXPAND_SZ). - - - # - The value is interpreted and stored as an integer (REG_DWORD). - - - - If the value contains the sequence tilde [~], then the value is interpreted as a Null-delimited list of strings (REG_MULTI_SZ). For example, to specify a list containing the three strings a, b and c, use "a[~]b[~]c." - The sequence [~] within the value separates the individual strings and is interpreted and stored as a Null character. - If a [~] precedes the string list, the strings are to be appended to any existing registry value strings. If an appending string already occurs in the registry value, the original occurrence of the string is removed. - If a [~] follows the end of the string list, the strings are to be prepended to any existing registry value strings. If a prepending string already occurs in the registry value, the original occurrence of the string is removed. - If a [~] is at both the beginning and the end or at neither the beginning nor the end of the string list, the strings are to replace any existing registry value strings. - Otherwise, the value is interpreted and stored as a string (REG_SZ). - - - False - - - dword - string - A dword value to input, if the value attribute is null. This removes the requirement of adding "#" before the value. - False - - - id - string - Primary key used to identify a registry record. - False - -
    -
-

</value>

-

Examples

- - Add the a couple registry entries on the target machine. - - <registry> - <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > - <value name="ProductVersion" value="1.0.0" /> - <value name="ProductDir" value="[TARGETDIR]" /> - <value name="VirtualDir" value="[TARGETVDIR]" /> - </key> - </registry> - - - - Add a default key value to the specified registry key path - - <registry> - <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > - <value value="1.0.0" /> - </key> - </registry> - - - - Another way to add a default key value to the specified registry key path - - <registry> - <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > - <value name="" value="1.0.0" /> - </key> - </registry> - - - - Specify hexadecimal value (REG_BINARY) for the default key - - <registry> - <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > - <value> - 1a,81,0a,03,01,00,06,00,00,00,d3,15,fd,00,01,00,00,00,00,00,01, - 00,00,00,00,00,00,00,00,00,00,00,b0,90,ce,09,01,00,00,00,00,00,ff,ff,ff,00, - 00,00,00,00,00,00,00,00,6d,7a,0a,03,01,00,00,00,00,00,00,00,38,40,00,00,00, - 00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,01,00,00,00,00,0f,00,00,00, - f0,ff,ff,ff,54,69,6d,65,73,20,4e,65,77,20,52,6f,6d,61,6e,f4,6f,d4,08,02,00 - </value> - </key> - </registry> - - -
-
- - - - Stores icons to be used with shortcuts, file extensions, CLSIDs or - similar uses. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Name of the icon file. - True - - - value - string - The binary icon data in PE (.dll or .exe) or icon (.ico) format. - True - - -

Examples

- - Add a compiled help icon to the msi database; To be used with a shortcut. - - <icons> - <icon name="CHMICON" value="${resource.dir}\chm.ico" /> - </icons> - - -
-
- - - - Creates shortcuts on the target computer. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Unique name identifying the shortcut. - True - - - directory - string - Reference to a directory. The location of where the shortcut should be created. - True - - - filename - string - The localizable name of the shortcut to be created. - True - - - component - string - Reference to a component. The installer uses the installation state of this specified component to determine whether the shortcut is created or deleted. This component must have a valid key path for the shortcut to be installed. If the Target column contains the name of a feature, the file launched by the shortcut is the key file of the component listed in this column. - True - - - target - string - The shortcut target. The installer evaluates this field as a Formatted string. The field should contains a property identifier enclosed by square brackets ([ ]), that is expanded into the file or a folder pointed to by the shortcut. - True - - - arguments - string - The command-line arguments for the shortcut.
Note that the resolution of properties in the Arguments field is limited. A property formatted as [Property] in this field can only be resolved if the property already has the intended value when the component owning the shortcut is installed. For example, for the argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and the component that owns the shortcut. -
- False -
- - hotkey - string - The hotkey for the shortcut. The low-order byte contains the virtual-key code for the key, and the high-order byte contains modifier flags. This must be a non-negative number. Authors of installation packages are generally recommend not to set this option, because this can add duplicate hotkeys to a users desktop. In addition, the practice of assigning hotkeys to shortcuts can be problematic for users using hotkeys for accessibility. - False - - - icon - string - Reference to an icon. - False - - - iconindex - int - The icon index for the shortcut. This must be a non-negative number. - False - - - showcmd - int - The Show command for the application window.
The following values may be used. The values are as defined for the Windows API function ShowWindow. - - - Value - Description - - - 1 - SW_SHOWNORMAL - - - 3 - SW_SHOWMAXIMIZED - - - 7 - SW_SHOWMINNOACTIVE - - -
- False -
- - wkdir - string - The name of the property that has the path of the working directory for the shortcut. - False - -
-

Nested Elements:

-

<description>

-
    - The localizable description of the shortcut. -
-

</description>

-

Examples

- - Add a compiled help icon to the msi database; To be used with a shortcut. - - <shortcuts> - <shortcut name="HelpFiles" directory="D__PROGRAMMENU_ACME_MYPRODUCT" filename="Help File" component="C__MainFiles" target="[$C__MainFiles]\Help.chm" icon="CHMICON" iconindex="0" showcmd="3" > - <description>My Product help documentation</description> - </shortcut> - </shortcuts> - - -
-
- - - - Stores the binary data for items such as bitmaps, animations, and - icons. The binary table is also used to store data for custom - actions. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A unique key that identifies the particular binary data. If the binary data is for a control, the key appears in the Text column of the associated control in the Control table. This key must be unique among all controls requiring binary data. - True - - - value - string - The binary file to add. - True - - -

Examples

- - Add the custom action dll to create/modify virtual directories - - <binaries> - <binary name="MSVBDPCADLL" value="${resource.dir}\MSVBDPCA.DLL" /> - </binaries> - - -
-
- -
- - Used to configure executables that may be run during steps in the - installation process to do things outside the bounds of MSI - technology's feature set. This is the main spot you can extend MSI - technology to perform custom processes via compiled code. - -

Parameters

- - - Attribute - Type - Description - Required - - - action - string - Name of the action. The action normally appears in a sequence table unless it is called by another custom action. If the name matches any built-in action, then the custom action is never called. - True - - - type - string - A field of flag bits specifying the basic type of custom action and options. See Summary List of All Custom Action Types for a list of the basic types. See Custom Action Return Processing Options, Custom Action Execution Scheduling Options, Custom Action Hidden Target Option, and Custom Action In-Script Execution Options. - True - - - source - string - A property name or external key into another table. For a discussion of the possible custom action sources, see
Custom Action Sources and the Summary List of All Custom Action Types. For example, the Source column may contain an external key into the first column of one of the following tables containing the source of the custom action code.
- Directory table for calling existing executables.
- File table for calling executables and DLLs that have just been installed.
- Binary table for calling executables, DLLs, and data stored in the database.
- Property table for calling executables whose paths are held by a property. - - True - - - target - string - An execution parameter that depends on the basic type of custom action. See the Summary List of All Custom Action Types for a description of what should be entered in this field for each type of custom action. For example, this field may contain the following depending on the custom action. - - - Target - Custom Action - - - Entry point (required) - Calling a DLL. - - - Executable name with arguments (required) - Calling an existing executable. - - - Command line arguments (optional) - Calling an executable just installed. - - - Target file name (required) - Creating a file from custom data. - - - Null - Executing script code. - - - - True - - -

Examples

- - Add some custom actions related to the virtual directory dialog and custom action. - - <customactions> - <!-- Custom actions creating entry points into the custom action dll specified in the binary table --> - <customaction action="WEBCA_GatherWebFolderProperties" type="1" source="MSVBDPCADLL" target="GatherWebFolderProperties" /> - <customaction action="WEBCA_ApplyWebFolderProperties" type="1537" source="MSVBDPCADLL" target="ApplyWebFolderProperties" /> - <customaction action="WEBCA_RollbackApplyWebFolderProperties" type="1281" source="MSVBDPCADLL" target="RollbackApplyWebFolderProperties" /> - <customaction action="WEBCA_CreateURLs" type="1" source="MSVBDPCADLL" target="CreateURLs" /> - <customaction action="WEBCA_EvaluateURLs" type="1" source="MSVBDPCADLL" target="EvaluateURLs" /> - <customaction action="WEBCA_EvaluateURLsNoFail" type="1" source="MSVBDPCADLL" target="EvaluateURLsNoFail" /> - <customaction action="WEBCA_EvaluateURLsMB" type="1" source="MSVBDPCADLL" target="EvaluateURLsMB" /> - <customaction action="WEBCA_CreateAppRoots" type="1" source="MSVBDPCADLL" target="CreateAppRoots" /> - - <!-- Custom actions to set default control values in the webfolder dialog --> - <customaction action="WEBCA_TARGETVDIR" type="307" source="TARGETVDIR" target="Default VDir" /> - <customaction action="WEBCA_TARGETPORT" type="307" source="TARGETPORT" target="80" /> - </customactions> - - -
- - - - - Used to modify the sequence of tasks/events that execute during the - overall installation process. - -

Parameters

- - - Attribute - Type - Description - Required - - - type - msi:MSISequenceTable - Valid inputs: - - installexecute represents InstallExecuteSequence Table. - installui represents InstallUISequence Table - adminexecute represents AdminExecuteSequence Table - adminui represents AdminUISequence Table - advtexecute represents AdvtUISequence Table - - - True - - - action - string - Name of the action to execute. This is either a built-in action or a custom action. - True - - - value - int - Number that determines the sequence position in which this action is to be executed.
- A positive value represents the sequence position. A Null value indicates that the action is not executed. The following - negative values indicate that this action is to be executed if the installer returns the associated termination flag. No - more than one action may have a negative value entered in the Sequence field. - - - Value - Description - - - -1 - Successful completion. - - - -2 - User terminates install. - - - -3 - Fatal exit terminates. - - - -4 - Install is suspended. - - -
- True -
- - condition - string - This field contains a conditional expression. If the expression evaluates to False, then the action is skipped. If the expression syntax is invalid, then the sequence terminates, returning iesBadActionData. - False - -
-

Examples

- - Add the sequences to support virtual directories - - <sequences> - <sequence type="installexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> - <sequence type="installexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> - <sequence type="installexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_GatherWebFolderProperties" value="3701" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_ApplyWebFolderProperties" value="3701" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_RollbackApplyWebFolderProperties" value="3701" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_CreateAppRoots" value="3701" condition="NOT Installed" /> - <sequence type="installui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> - <sequence type="installui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> - <sequence type="installui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> - <sequence type="installui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> - <sequence type="adminexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> - <sequence type="adminexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> - <sequence type="adminexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> - <sequence type="adminexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> - <sequence type="adminui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> - <sequence type="adminui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> - <sequence type="adminui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> - <sequence type="adminui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> - </sequences> - - -
-
- - - - Creates text to be displayed in a progress dialog box and written - to the log for actions that take a long time to execute. The text - displayed consists of the action description and optionally formatted - data from the action. The entries in the ActionText table typically - refer to actions in sequence tables. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Unique name identifying the action. - True - - - template - string - A localized format template is used to format action data records for display during action execution. If no template is supplied, then the action data will not be displayed. - False - - -

Nested Elements:

-

<description>

-
    - Localized description displayed in the progress dialog box or written to the log when the action is executing. -
-

</description>

-

Examples

- - Add the related action text for the web folder actions. - - <actiontext> - <action name="WEBCA_GatherWebFolderProperties" > - <description>Gathering web folder properties</description> - </action> - <action name="WEBCA_ApplyWebFolderProperties" > - <description>Applying web folder properties</description> - </action> - <action name="WEBCA_RollbackApplyWebFolderProperties" > - <description>Removing web folder properties</description> - </action> - <action name="WEBCA_CreateURLs" > - <description>Creating URLs</description> - </action> - <action name="WEBCA_EvaluateURLs" > - <description>Evaluating URLs</description> - </action> - <action name="WEBCA_EvaluateURLsNoFail" > - <description>Evaluating URLs and do not fail if URL is invalid</description> - </action> - <action name="WEBCA_EvaluateURLsMB" > - <description>Evaluating URLs</description> - </action> - <action name="WEBCA_CreateAppRoots" > - <description>Creating application roots</description> - </action> - <action name="WEBCA_TARGETVDIR" > - <description>Set TARGETVDIR property to the specified virtual dir</description> - </action> - <action name="WEBCA_TARGETPORT" > - <description>Set TARGETPORT property to the specified virtual dir port</description> - </action> - </actiontext> - - -
-
- - - - Adds Verbs and a handler for the specified file type. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - directory - string - Refrence to a directory. The directory to add the specific verb/handler to IIS for the specified file type. - True - - - extension - string - File name extension to specifically handle - False - - - exepath - string - Path to the Internet Server API (ISAPI) or Common Gateway Interface (CGI) program to run to process a request. - False - - - verbs - string - Internet Information Services verbs that are allowed for the executable file. Only verbs entered in this field will be allowed. - False - - -

Examples

- - Add the aspx app mapping - - <appmappings> - <appmapping directory="D__ACME_MyProduct" extension=".aspx" exepath="[DOTNETFOLDER]aspnet_isapi.dll" verbs="GET,HEAD,POST,DEBUG" /> - </appmappings> - - -
-
- - - - Determines the local path equivalent for a url and stores this - information in a property. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - The name of the URLProperty to convert - True - - - property - string - The name of the property to store the directory information. - True - - -

Examples

- - Convert the TARGETURL property to a directory and store that information in TARGETDIR - - <urlproperties> - <urlproperty name="TARGETURL" property="TARGETDIR" /> - </urlproperties> - - -
-
- - - - Creates a URLProperty representing the virtual directory and port. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Property containing the virtual directory - True - - - portproperty - string - Property containing the network port number to use. - True - - - urlproperty - string - URLProperty to store the url in - True - - -

Examples

- - Convert the virtual directory and port to a url and store the value in a property. - - <vdirproperties> - <vdirproperty name="TARGETVDIR" portproperty="TARGETPORT" urlproperty="TARGETURL" /> - </vdirproperties> - - -
-
- - - - Create a Web application definition and marks it as running in-process - or out-of-process. If an application already exists at the specified - path, you can use this method to reconfigure the application from - in-process to out-of-process, or the reverse. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - component - string - Reference to a component. Determines when the approot will be created. - True - - - urlproperty - string - URLProperty with stored url - True - - - inprocflag - int - Specifies whether the application being created is to run in-process (0), out-of-process (1), or in a pooled process (2). If the application already exists and is running, changing the value of this flag will cause the application definition to be deleted and a new application created to run in the specified process space. - True - - -

Examples

- - Convert the virtual directory and port to a url and store the value in a property. - - <approots> - <approot component="C__MainFiles" urlproperty="TARGETURL" inprocflag="2" /> - </approots> - - -
-
- - - - Specifies directory security in IIS. Can also configure the default - documents supported by each directory. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - directory - string - Reference to a directory. This is the directory that gets modified with the specific attributes. - True - - - attr - int - Attributes to set for the directory. - - - Value - Flag Name - Description - - - 1 - AccessRead - The file or the contents of the folder may be read through Microsoft Internet Explorer. - - - 2 - AccessWrite - Users are allowed to upload files and their associated properties to the enabled directory on your server or to change content in a Write-enabled file. Write can be implemented only with a browser that supports the PUT feature of the HTTP 1.1 protocol standard. - - - 4 - AccessExecute - The file or the contents of the folder may be executed, regardless of file type. - - - 8 - AccessSSL - File access requires SSL file permission processing, with or without a client certificate. - - - 16 - AccessSource - Users are allowed to access source code if either Read or Write permissions are set. Source code includes scripts in Microsoft ® Active Server Pages (ASP) applications. - - - 32 - AccessSSLNegotiateCert - SSL file access processing requests a certificate from the client. A value of false indicates that access continues if the client does not have a certificate. Some versions of Internet Explorer will close the connection if the server requests a certificate and a certificate is not available (even if AccessSSLRequireCert is also set to true). - - - 64 - AccessSSLRequireCert - SSL file access processing requests a certificate from the client. If the client provides no certificate, the connection is closed. AccessSSLNegotiateCert must also be set to true when using AccessSSLRequireCert. - - - 128 - AccessSSLMapCert - SSL file permission processing maps a client certificate to a Microsoft Windows ® operating system user-account. The AccessSSLNegotiateCert property must also be set to true for the mapping to occur. - - - 256 - AccessSSL128 - File access requires SSL file permission processing with a minimum key size of 128 bits, with or without a client certificate. - - - 512 - AccessScript - The file or the contents of the folder may be executed if they are script files or static content. A value of false only allows static files, such as HTML files, to be served. - - - 1024 - AccessNoRemoteWrite - Remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. - - - 4096 - AccessNoRemoteRead - Remote requests to view files are denied; only requests from the same computer as the IIS server succeed if the AccessRead property is set to true. You cannot set AccessNoRemoteRead to false to enable remote requests, and set AccessRead to false to disable local requests. - - - 8192 - AccessNoRemoteExecute - Remote requests to execute applications are denied; only requests from the same computer as the IIS server succeed if the AccessExecute property is set to true. You cannot set AccessNoRemoteExecute to false to enable remote requests, and set AccessExecute to false to disable local requests. - - - 16384 - AccessNoRemoteScript - Requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. - - - 32768 - AccessNoPhysicalDir - Access to the physical path is not allowed. - - - - True - - - defaultdoc - string - Adds a filename to the Default Documents to process. Add multiple separated with a comma (Eg. "Default.aspx,Default.htm") - False - - -

Examples

- - Specify permissions for the directory structure. - - <iisproperties> - <iisproperty directory="TARGETDIR" attr="626" defaultdoc="Default.aspx" /> - <iisproperty directory="D__BIN" attr="112" /> - <iisproperty directory="D__SomeSubDir" attr="114" /> - </iisproperties> - - -
-
- - - Summary description for MsiTaskInfo. - - - - - Loads the banner image. - - The MSI database. - - - - Loads the background image. - - The MSI database. - - - - Loads the license file. - - The MSI database. - - - - Loads records for the Media table. - - The MSI database. - The sequence number of the last file in the .cab. - - - - Loads records for the Features table. - - The MSI database. - - - - Adds a feature record to the Features table. - - The MSI database Feature table. - The MSI database Condition table. - The name of this feature's parent. - The MSI database. - This Feature's Schema element. - The tree depth of this feature. - The tree order of this feature. - - - - Loads records for the LaunchCondition table - - The MSI database. - - - - Merges Merge Modules into the MSI Database. - - The MSI Database. - The path to temporary files. - - - - Creates a Windows Installer (also known as Microsoft Installer, or MSI) - setup database for installing software on the Windows Platform. - - - - Requires cabarc.exe in the path. This tool is part of the - Microsoft Cabinet SDK. - - - Requires mergemod.dll version 2.0 or greater. This dll is part of the - Microsoft Platform SDK. - - - See the Roadmap to Windows Installer Documentation - at Microsoft's MSDN website for more information. - - - - - - Initializes task and verifies parameters. - - - - - Executes the task. - - - - - An .rtf (rich text format) file containing the license agreement - for your software. The contents of this file will be displayed to - the user when setup runs and must be accepted to continue. - - - - - A .bmp (bitmap) file 495x60 pixels in size that will be displayed - as the banner (top) image of the installation user interface. - - - - - A .bmp (bitmap) file 495x315 pixels in size that will be displayed - as the background image of the installation user interface. - - - - - - Groups sets of components into named sets, these can be used to - layout the tree control that allows users to select and deselect - features of your software product when a custom installation is - selected at runtime. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the feature. - True - - - display - int - The number in this field specifies the order in which the feature is to be displayed in the user interface. - The value also determines if the feature is initially displayed expanded or collapsed.
- If the value is null or zero, the record is not displayed. If the value is odd, the feature node is expanded initially. - If the value is even, the feature node is collapsed initially. -
- True -
- - title - string - Short string of text identifying the feature. This string is listed as an item by the SelectionTree control of the Selection Dialog. - False - - - typical - bool - Determines if the feature should be included in a "typical" install. This is useful for when the user selects to just install the typical features. - False - - - directory - string - Refrence to a directory. Specify a corresponding directory to go with the feature. - False - - - attr - int - Any combination of the following: - - - Value - Description - - - 0 - Components of this feature that are not marked for installation from source are installed locally. - - - 1 - Components of this feature not marked for local installation are installed to run from the source CD-ROM or server. - - - 2 - Set this attribute and the state of the feature is the same as the state of the feature's parent. - - - 4 - Set this attribute and the feature state is Advertise. - - - 8 - Note that this bit works only with features that are listed by the ADVERTISE property.
Set this attribute to prevent the feature from being advertised.
-
- - 16 - Set this attribute and the user interface does not display an option to change the feature state to Absent. Setting this attribute forces the feature to the installation state, whether or not the feature is visible in the UI. - - - 32 - Set this attribute and advertising is disabled for the feature if the operating system shell does not support Windows Installer descriptors. - -
- More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/feature_table.asp -
- False -
-
-

Nested Elements:

-

<feature>

-
    - Nested feature elements are supported. -
-

</feature>

-

<description>

-
    - Longer string of text describing the feature. This localizable string is displayed by the Text control of the Selection Dialog. -
-

</description>

-

<conditions>

-
    -

    <condition>

    -
      - - - Attribute - Type - Description - Required - - - expression - string - If this conditional expression evaluates to TRUE, then the Level column in the Feature table is set to the - conditional install level.
      - The expression in the Condition column should not contain reference to the installed state of any feature or component. - This is because the expressions in the Condition column are evaluated before the installer evaluates the installed - states of features and components. Any expression in the Condition table that attempts to check the installed state - of a feature or component always evaluates to false.
      - For information on the syntax of conditional statements, see Conditional Statement Syntax. -
      - True -
      - - level - int - The installer sets the install level of this feature to the level specified in this column if the expression in - the Condition column evaluates to TRUE. Set this value to 0 to have the component not install if the condition is not met.
      - For any installation, there is a defined install level, which is an integral value from 1 to 32,767. The initial value - is determined by the InstallLevel property, which is set in the Property table.
      - A feature is installed only if the feature level value is less than or equal to the current install level. The user - interface can be authored such that once the installation is initialized, the installer allows the user to modify the - install level of any feature in the Feature table. For example, an author can define install level values that represent - specific installation options, such as Complete, Typical, or Minimum, and then create a dialog box that uses - SetInstallLevel ControlEvents to enable the user to select one of these states. Depending on the state the user selects, - the dialog box sets the install level property to the corresponding value. If the author assigns Typical a level of 100 - and the user selects Typical, only those features with a level of 100 or less are installed. In addition, the Custom - option could lead to another dialog box containing a Selection Tree control. The Selection Tree would then allow the user - to individually change whether each feature is installed.
      - True -
      -
      -
    -

    </condition>

    -
-

</conditions>

-

Examples

- - Define a sample features structure. - - <features> - <feature name="F__Default" title="My Product" display="1" typical="true" directory="TARGETDIR"> - <description>My Product from ACME, Inc. </description> - <feature name="F__MainFiles" display="0" typical="true" /> - </feature> - <feature name="F__Help" title="My Product Help Files" display="1" typical="false" directory="D__ACME_MyProduct_Help" /> - </features> - - -
-
- - Includes pre-packaged installation components (.msm files) as part - of the msi database. This feature allows reuse of installation - components that use MSI technology from other setup vendors or as - created by the . + Name/value pairs which will be set in the PROPERTY table of the + installer database. + + + The properties element contains within it one to any number of property elements.
+ Public property names cannot contain lowercase letters.
+ Private property names must contain some lowercase letters.
+ Property names prefixed with % represent system and user environment variables. These are + never entered into the Property + table. The permanent settings of environment variables can only be modified using the Environment Table. + More information is available here.

Parameters

@@ -5624,39 +2668,3068 @@ Required - feature + name string - Refrence to a feature. Used to associate the merge module with the feature (and the feature's directory) for when to install the components in the merge module. + A name used to refer to the property. + True + + + value + string + The value of the property. This value can contain references to other, predefined properties to build a compound property. True -

Nested Elements:

-

<modules>

-
    - Specifies the merge module(s) to include with the specified feature. -
-

</modules>

-

<configurationitems>

-
    -

    <configurationitem>

    -
      - Specifies the value for a configurable item -

      Parameters

      - - - Attribute - Type - Description - Required - - - module - string - Merge module filename to limit the configuration item to. If this is not set, the configuration item will be applied to all merge modules in the fileset. - True - - - name +

      Examples

      + + Define the required properties. + + <properties> + <property name="ProductName" value="My Product" /> + <property name="ProductVersion" value="1.0.0" /> + <property name="Manufacturer" value="ACME Inc." /> + <property name="ProductCode" value="{29D8F096-3371-4cba-87E1-A8C6511F7B4C}" /> + <property name="UpgradeCode" value="{69E66919-0DE1-4280-B4C1-94049F76BA1A}" /> + </properties> + + +
+
+ + + + Contains within it one to any number of app, registry, ini, or dirfile elements. + These elements are used to search for an existing filesystem directory, file, or + Windows Registry setting. A property in the installer database is + then set with the value obtained from the search. + +

<app>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/complocator_table.asp + + + + Attribute + Type + Description + Required + + + componentid + string + The component ID of the component whose key path is to be used for the search. + True + + + type + msi:MSILocatorTypeDirFile + Valid input: file or directory + True + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

</app>

+

<registry>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/reglocator_table.asp + + + + Attribute + Type + Description + Required + + + type + msi:MSILocatorTypeDirFileReg64 + Valid input: registry, file, directory, 64bit + True + + + path + string + Depending on the type specified: + + Path is a directory. + Path is a registry key. + + + True + + + root + msi:MSIRegistryKeyRoot + Valid input: + + dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. + machine represents HKEY_LOCAL_MACHINE + classes represents HKEY_CLASSES_ROOT + user represents HKEY_CURRENT_USER + users represents HKEY_USERS + + + True + + +
    +

    Nested Elements:

    +

    <value>

    +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + Depending on the type specified: + + Key path is a file name. + Key path is a registry value. + + + False + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

    </value>

    +
+

</registry>

+

<ini>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/inilocator_table.asp + + + + Attribute + Type + Description + Required + + + filename + string + The .ini file name. (The .ini file must be present in the default Microsoft Windows directory.) + + True + + + section + string + Section name within the .ini file. + + True + + + key + string + Key value within the section. + + True + + + field + msi:nonNegativeInt + The field in the .ini line. If Field is Null or 0, then the entire line is read. + This must be a non-negative number. + + False + + + type + msi:MSILocatorTypeDirFileRaw + Valid input: file ,directory, or raw + True + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

</ini>

+

<dirfile>

+ + More information on these attributes can be found at: + http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/drlocator_table.asp + and + http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/signature_table.asp + + + + Attribute + Type + Description + Required + + + parent + string + An identifier to RegLocator, IniLocator, or CompLocator tables. + If it does not expand to a full path, then all the fixed drives of the user's system are searched by using the Path. +
In order to determine what the key is for a table, prefix the property name assigned + to that locator with SIG_ +
+ False +
+ + path + string + the path on the user's system. This is a either a full path or a relative subpath + below the directory specified in the Parent column. + + False + + + depth + msi:nonNegativeInt + The depth below the path that the installer searches for the file or directory. + + False + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + +
+
    +

    Nested Elements:

    +

    <file>

    +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + The name of the file. + True + + + minversion + string + The minimum version of the file, with a language comparison. If this field is + specified, then the file must have a version that is at least equal to MinVersion. + If the file has an equal version to the MinVersion field value but the language + specified in the Languages column differs, the file does not satisfy the signature + filter criteria. + False + + + maxversion + string + The maximum version of the file. If this field is specified, then the file + must have a version that is at most equal to MaxVersion. + False + + + minsize + msi:nonNegativeInt + The minimum size of the file. If this field is specified, then the file + under inspection must have a size that is at least equal to MinSize. This must + be a non-negative number. + False + + + maxsize + msi:nonNegativeInt + The maximum size of the file. If this field is specified, then the file + under inspection must have a size that is at most equal to MaxSize. This must + be a non-negative number. + False + + + mindate + msi:nonNegativeInt + The minimum modification date and time of the file. If this field is + specified, then the file under inspection must have a modification date and time + that is at least equal to MinDate. This must be a non-negative number. + False + + + maxdate + msi:nonNegativeInt + The maximum creation date of the file. If this field is specified, then the + file under inspection must have a creation date that is at most equal to MaxDate. + This must be a non-negative number. + False + + + languages + string + The languages supported by the file. + False + + +

    </file>

    +
+

</dirfile>

+

Examples

+ + Get the path of the web directory and the version of IIS. Create new properties in the Msi file with those values. + + <search> + <registry type="registry" path="Software\Microsoft\InetStp" root="machine" > + <value name="PathWWWRoot" setproperty="IISWWWROOT" /> + </registry> + <registry type="registry" path="SYSTEM\CurrentControlSet\Services\W3SVC\Parameters" root="machine" > + <value name="MajorVersion" setproperty="IISVERSION" /> + </registry> + </search> + + + + Shows two ways to get the default key value for the specified key. Create new properties in the Msi file with those values. + + <search> + <registry type="registry" path="Software\Microsoft\MessengerService" root="machine" > + <value setproperty="MSGSRVNAME" /> + <value name="" setproperty="MSGSRVNAME2" /> + </registry> + </search> + + +
+
+ + + + Contains within it one to any number of launchcondition elements. + Launch conditions are conditions that all must be satisfied for the + installation to begin. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to identify the launch condition. + True + + + condition + string + Expression that must evaluate to True for installation to begin. + True + + +

Nested Elements:

+

<description>

+
    + Localizable text to display when the condition fails and the installation must be terminated. +
+

</description>

+

Examples

+ + Create a check to make sure that IIS 5.x is installed. + + <launchconditions> + <launchcondition name="CheckIIS" condition="(IISVERSION = &quot;#5&quot;)" > + <description> + This setup requires Internet information Server 5.x. Please install Internet Information Server and run this setup again. + </description> + </launchcondition> + </launchconditions> + + +
+
+ + + + Creates custom tables not directly managed by default features of + the installer task. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A unique name used to identify the table. + True + + +

Nested Elements:

+

<columns>

+
    +

    <column>

    +
      + Defines the columns making up the table +

      Parameters

      + + + Attribute + Type + Description + Required + + + name + string + A unique name used to define the column. + True + + + nullable + bool + When set to true, allows the column to accept null values; false does not allow null values. + True + + + category + msi:MSITableColumnCategoryType + Valid input: + + Text + UpperCase + LowerCase + Integer + DoubleInteger + Time/Date + Identifier + Property + Filename + WildCardFilename + Path + Paths + AnyPath + DefaultDir + RegPath + Formatted + Template + Condition + GUID + Version + Language + Binary + Cabinet + Shortcut + + More information here: http://msdn.microsoft.com/library/en-us/msi/setup/column_data_types.asp + + False + + + type + string + Overrides the category specification. An example of valid input would be: S255 + False + + + key + bool + When set to true, the column is used to form the primary key for the table; false specifies that the column is not used to form the primary key. + False + + + minvalue + int + This field applies to columns having numeric value. The field contains the minimum permissible value. This can be the minimum value for an integer or the minimum value for a date or version string. + False + + + maxvalue + int + This field applies to columns having numeric value. The field is the maximum permissible value. This may be the maximum value for an integer or the maximum value for a date or version string. + False + + + keytable + string + This field applies to columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. This can be a list of tables separated by semicolons. + False + + + keycolumn + int + This field applies to table columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. The permissible range of the KeyColumn field is 1-32. + False + + + set + string + This is a list of permissible values for this field separated by semicolons. This field is usually used for enums. + False + + + description + string + A description of the data that is stored in the column. + False + + +
    +

    </column>

    +
+

</columns>

+

<rows>

+
    +

    <row>

    +
      + Defines the data for a row in the table +

      <columns>

      +
        +

        <column>

        +
          + Defines data for a specific cell in the row +

          Parameters

          + + + Attribute + Type + Description + Required + + + name + string + Name of the column to populate. + True + + + value + string + Value to populate the cell with. + True + + +
        +

        </column>

        +
      +

      </columns>

      +
    +

    </row>

    +
+

</rows>

+

Examples

+ + + Build the IniFile table. Since the WriteIniValues and RemoveIniValues actions exist in the template, they will use this table. + + + <tables> + <table name="IniFile"> + <columns> + <column name="IniFile" nullable="false" category="Identifier" key="true" description="The key for this table." /> + <column name="FileName" nullable="false" category="Text" description="The localizable name of the .ini file in which to write the information. " /> + <column name="DirProperty" nullable="true" category="Identifier" description="Name of a property having a value that resolves to the full path of the folder containing the .ini file. " /> + <column name="Section" nullable="false" category="Formatted" description="The localizable .ini file section." /> + <column name="Key" nullable="false" category="Formatted" description="The localizable .ini file key within the section" /> + <column name="Value" nullable="false" category="Formatted" description="The localizable value to be written. " /> + <column name="Action" nullable="false" category="Integer" description="The type of modification to be made. " /> + <column name="Component_" nullable="false" category="Identifier" description="External key into the first column of the Component table referencing the component that controls the installation of the .ini value. " /> + </columns> + <rows> + <row> + <columns> + <column name="IniFile" value="MyInternetShortcut" /> + <column name="FileName" value="MyInternetAddr.url" /> + <column name="DirProperty" value="D__MYDIR" /> + <column name="Section" value="InternetShortcut" /> + <column name="Key" value="URL" /> + <column name="Value" value="[TARGETURL]" /> + <column name="Action" value="0" /> + <column name="Component_" value="C__Documentation" /> + </columns> + </row> + </rows> + </table> + </tables> + + +
+
+ + + + Specifies the directory layout for the product. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the directory. + True + + + foldername + string + The directory's name (localizable)under the parent directory. + True + + + root + string + A reference to the directory's parent directory. This can be a property name or one of the predefined directories included with the default template: + + AdminToolsFolder + AppDataFolder + CommonAppDataFolder + CommonFiles64Folder + CommonFilesFolder + DesktopFolder + FavoritesFolder + FontsFolder + LocalAppDataFolder + MyPicturesFolder + PersonalFolder + ProgramFilesFolder + ProgramMenuFolder + ProgramFiles64Folder + SendToFolder + StartMenuFolder + StartupFolder + System16Folder + System64Folder + SystemFolder + TARGETDIR + TempFolder + TemplateFolder + WindowsFolder + WindowsVolume + + + True + + +

Nested Elements:

+

<directory>

+
    + Sub directories. Note, this element can contain nested <directory/> sub elements. +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the directory. + True + + + foldername + string + The directory's name (localizable)under the parent directory. + True + + +
+

</directory>

+

Examples

+ + Define a sample directory structure. + + <directories> + <directory name="D__ACME" foldername="ACME" root="TARGETDIR" > + <directory name="D__ACME_MyProduct" foldername="My Product" /> + </directory> + </directories> + + +
+
+ + + + Used to modify the environment variables of the target computer at + runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + The localizable name of the environment variable. The key values are written or removed depending upon + which of the characters in the following table are prefixed to the name. There is no effect in the ordering of + the symbols used in a prefix. + + + Prefix + Description + + + = + Create the environment variable if it does not exist, and then set it during installation. If the environment variable exists, set it during the installation. + + + + + Create the environment variable if it does not exist, then set it during installation. This has no effect on the value of the environment variable if it already exists. + + + - + Remove the environment variable when the component is removed. This symbol can be combined with any prefix. + + + ! + Remove the environment variable during an installation. The installer only removes an environment variable during an installation if the name and value of the variable match the entries in the Name and Value fields of the Environment table. If you want to remove an environment variable, regardless of its value, use the '!' syntax, and leave the Value field empty. + + + * + This prefix is used with Microsoft® Windows® NT/Windows® 2000 to indicate that the name refers to a system environment variable. If no asterisk is present, the installer writes the variable to the user's environment. Microsoft Windows 95/98 ignores the asterisk and add the environment variable to autoexec.bat. This symbol can be combined with any prefix. A package that is used for per-machine installations should write environment variables to the machine's environment by including * in the Name column. For more information, see http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp + + + =- + The environment variable is set on install and removed on uninstall. This is the usual behavior. + + + !- + Removes an environment variable during an install or uninstall. + + + More information can be found here: http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp + + True + + + append + string + Localizable value that is to be set as a formatted string + True + + + component + string + Refrence to a component. Allows the variabled to be modified when the component is un/installed. + True + + +

Examples

+ + Append the installation path to the user PATH variable. + + <environment> + <variable name="PATH" append="'[TARGETDIR]'" component="C__MainFiles" /> + </environment> + + +
+
+ + + + Groups sets of files into named sets, these can be used to install + and perform operations on a set of files as one entity. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the component. + True + + + id + string + A string GUID unique to this component, version, and language.
Note that the letters of these GUIDs must be + uppercase. Utilities such as GUIDGEN can generate GUIDs containing lowercase letters. The lowercase letters must be + changed to uppercase to make these valid component code GUIDs. +
+ True +
+ + attr + int + This column contains a bit flag that specifies options for remote execution. Add the indicated bit to the total value in the column to include an option. + + + Value + Description + + + 0 + Component cannot be run from source.
+ Set this bit for all components belonging to a feature to prevent the feature from being run-from-network or + run-from-source. Note that if a feature has no components, the feature always shows run-from-source and + run-from-my-computer as valid options. +
+
+ + 1 + Component can only be run from source.
+ Set this bit for all components belonging to a feature to prevent the feature from being run-from-my-computer. + Note that if a feature has no components, the feature always shows run-from-source and run-from-my-computer as + valid options. +
+
+ + 2 + Component can run locally or from source. + + + 4 + If this bit is set, the value in the key element is used as a key into the Registry table.
+ If the Value field of the corresponding record in the Registry table is null, the Name field in that record must + not contain "+", "-", or "*". For more information, see the description of the Name field in Registry table.
+ Setting this bit is recommended for registry entries written to the HKCU hive. This ensures the installer writes + the necessary HKCU registry entries when there are multiple users on the same machine. +
+
+ + 16 + If this bit is set, the installer does not remove the component during an uninstall. The installer registers an extra system client for the component in the Windows Installer registry settings. + + + + 32 + If this bit is set, the value in the KeyPath column is a key into the ODBCDataSource table. + + + 64 + If this bit is set, the installer reevaluates the value of the statement in the Condition column + upon a reinstall. If the value was previously False and has changed to True, the installer installs the component. + If the value was previously True and has changed to False, the installer removes the component even if the component + has other products as clients.
This bit should only be set for transitive components. See Using Transitive + Components. +
+
+ + 128 + If this bit is set, the installer does not install or reinstall the component if a key path file or + a key path registry entry for the component already exists. The application does register itself as a client of + the component.
+ Use this flag only for components that are being registered by the Registry table. +
+
+ + 256 + Set this bit to mark this as a 64-bit component. This attribute facilitates the installation of + packages that include both 32-bit and 64-bit components. If this bit is not set, the component is registered + as a 32-bit component. + + +
+
+ True +
+ + directory + string + Refrence to a directory. Defines the directory location for where the files assigned to the component are to be placed. + True + + + feature + string + Refrence to a feature. Maps a feature to the component. Used to determine if the component is to be installed or not. + True + + + condition + string + A conditional statement that can control whether a component is installed. If the condition is null or evaluates to + true, then the component is enabled. If the condition evaluates to False, then the component is disabled and is not + installed. + False + + + fileattr + int + Integer containing bit flags representing file attributes.
+ The following table shows the definition of the bit field. + + + Value + Description + + + 1 + Read-Only + + + 2 + Hidden + + + 4 + System + + + 512 + The file is vital for the proper operation of the component to which it belongs + + + 1024 + The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. + + + 4096 + This bit must only be added by a patch and if the file is being added by the patch. + + + 8192 + The file's source type is uncompressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression + state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed + and msidbFileAttributesCompressed. + + + 16384 + The file's source type is compressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of + the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and + msidbFileAttributesCompressed. + + +
+ False +
+ + checkinterop + bool + Used to determine if file(s) in the fileset are interop file(s). If true, extra information will be added in the install + package to register each interop file. If false, the file(s) will not be not be checked and the extra registration information + will not be added to the msi. + False + + + installassembliestogac + bool + Used to determine if assemblies should be installed to the Global Assembly Cache. + If true, all assemblies in the fileset will be added to the GAC. If false, the assemblies will be installed + to the specified directory (as a normal file would). Note: If an assembly is specified to be installed into the GAC, it will not + also be installed to the directory specified. + False + + + keepsubdirs + bool + Used to determine if directories in the fileset should be built. + If true, all subdirectories of the fileset basedir will be built. If false the directories structure will be + flattened. The default is false. + False + +
+

Nested Elements:

+

<keyfile>

+
    + This value points to a file or folder belonging to the component that the installer uses to detect the component. Two components cannot share the same key path value. +

    Parameters

    + + + Attribute + Type + Description + Required + + + file + string + Name of the key (file) to use. Also, this could be an id of a registry key value. + True + + +
+

</keyfile>

+

<fileset>

+
    + Specifies the files to include with the component +
+

</fileset>

+

<forceid>

+
    + Used to force specific attributes on a per file basis +

    Parameters

    + + + Attribute + Type + Description + Required + + + file + string + Name of the file, in the fileset, to override. + True + + + id + string + Unique GUID to assign to the file. + True + + + attr + int + Integer containing bit flags representing file attributes.
    + The following table shows the definition of the bit field. + + + Value + Description + + + 1 + Read-Only + + + 2 + Hidden + + + 4 + System + + + 512 + The file is vital for the proper operation of the component to which it belongs + + + 1024 + The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. + + + 4096 + This bit must only be added by a patch and if the file is being added by the patch. + + + 8192 + The file's source type is uncompressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression + state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed + and msidbFileAttributesCompressed. + + + 16384 + The file's source type is compressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of + the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and + msidbFileAttributesCompressed. + + +
    + False +
    + + version + string + This field is the version string for a versioned file. This field is blank for non-versioned files. + False + + + language + string + A list of decimal language IDs separated by commas. + False + + + checkinterop + bool + Used to determine if file is an interop file. If true, extra information will be added in the install + package to register the interop file. If false, the file will not be not be checked and the extra registration information + will not be added to the msi. + False + + + installtogac + bool + If true, and if the file is an assembly, it will be installed to the GAC. If false, the file + will be installed to the directory specified by the component. Note: If an assembly is specified to + be installed into the GAC, it will not also be installed to the directory specified. + False + +
    +
+

</forceid>

+

Examples

+ + Define a sample component structure. + + <components> + <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" > + <key file="default.aspx" /> + <fileset basedir="${install.dir}"> + <include name="*.*" /> + </fileset> + </component> + </components> + + + + Install files to TARGETDIR and assemblies to the GAC (Global Assembly Cache). Do not install MyOtherAssembly.dll to the GAC, but rather install it with the other files (to TARGETDIR) + + <components> + <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" installassembliestogac="true" > + <key file="MyAssemblyName.xml" /> + <fileset basedir="${install.dir}"> + <include name="*.*" /> + </fileset> + <forceid file="MyOtherAssembly.dll" id="_4EB7CCB23D394958988ED817DA00B9D1" installtogac="false" /> + </component> + </components> + + + + Assign a registry entry to a specific component. + + <components> + <component name="C__RegistryEntry" id="{06C654AA-273D-4E39-885C-3E5225D9F336}" attr="4" directory="TARGETDIR" feature="F__DefaultFeature" > + <key file="R__822EC365A8754FACBF6C713BFE4E57F0" /> + </component> + </components> + . + . + . + <registry> + <key path="SOFTWARE\MyCompany\MyProduct\" root="machine" component="C__RegistryEntry"> + <value id="R__822EC365A8754FACBF6C713BFE4E57F0" name="MyKeyName" value="MyKeyValue" /> + </key> + </registry> + + +
+
+ + + + Creates custom dialogs that can gather information not handled by + the default installer template. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the dialog. + True + + + hcenter + int + Horizontal position of the dialog box. The range is 0 to 100, with 0 at the left edge of the screen and 100 at the right edge. + True + + + vcenter + int + Vertical position of the dialog box. The range is 0 to 100, with 0 at the top edge of the screen and 100 at the bottom edge. + True + + + width + int + Width of the rectangular boundary of the dialog box. This number must be non-negative. + True + + + height + int + Height of the rectangular boundary of the dialog box. This number must be non-negative. + True + + + attr + int + A 32-bit word that specifies the attribute flags to be applied to this dialog box. This number must be non-negative. + + + Value + Description + + + 1 + Visible + + + 2 + Modal + + + 4 + Minimize + + + 8 + SysModal + + + 16 + KeepModeless + + + 32 + TrackDiskSpace + + + 64 + UseCustomPalette + + + 128 + RTLRO + + + 256 + RightAligned + + + 512 + LeftScroll + + + 896 + BiDi + + + 65536 + Error + + + More information here: http://msdn.microsoft.com/library/en-us/msi/setup/dialog_style_bits.asp + + True + + + title + string + A localizable text string specifying the title to be displayed in the title bar of the dialog box. + True + + + firstcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field identifies a + unique control in the Control table. This defines the control that takes the focus when the dialog box is created. This + column is ignored in an Error dialog box.
+ Because static text cannot take the focus, a Text control that describes an Edit, PathEdit, ListView, ComboBox or + VolumeSelectCombo control must be made the first control in the dialog box to ensure compatibility with screen readers. +
+ True +
+ + defaultcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field results in + a primary key into the Control table that defines the default control. Hitting the Return key is equivalent to clicking + on the default control. If this column is left blank, then there is no default control. This column is ignored in the + Error dialog box. + + True + + + cancelcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field results in + a primary key of the Control table that defines the cancel control. Hitting the ESC key or clicking the Close button in + the dialog box is equivalent to clicking on the cancel control. This column is ignored in an Error dialog box.
+ The cancel control is hidden during rollback or the removal of backed up files. The protected UI handler hides the control + upon receiving a INSTALLMESSAGE_COMMONDATA message. +
+ True +
+
+

Examples

+ + Add a web folder dialog: + + <dialogs> + <dialog name="WebFolderDlg" hcenter="50" vcenter="50" width="370" height="270" attr="39" title="[ProductName] [Setup]" firstcontrol="Next" defaultcontrol="Next" cancelcontrol="Cancel" /> + </dialogs> + + +
+
+ + + + Creates user interface controls displayed on custom dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the control. This name must be unique within a dialog box but can be repeated on different dialog boxes. + True + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + type + string + The type of the control. + + + Control name + Description + + + Billboard + Displays billboards based on progress messages. + + + Bitmap + Displays a static picture of a bitmap. + + + CheckBox + A two-state check box. + + + ComboBox + A drop-down list with an edit field. + + + DirectoryCombo + Select all except the last segment of the path. + + + DirectoryList + Displays folders below the main part of path. + + + Edit + A regular edit field for any string or integer. + + + GroupBox + Displays a rectangle that groups other controls together. + + + Icon + Displays a static picture of an icon. + + + Line + Displays a horizontal line. + + + ListBox + A drop-down list without an edit field. + + + ListView + Displays a column of values with icons for selection. + + + MaskedEdit + An edit field with a mask in the text field. + + + PathEdit + Displays folder name or entire path in an edit field. + + + ProgressBar + Bar graph that changes length as it receives progress messages. + + + PushButton + Displays a basic push button. + + + RadioButtonGroup + A group of radio buttons. + + + ScrollableText + Displays a long string of text. + + + SelectionTree + Displays information from the Feature table and enables the user to change their selection state. + + + Text + Displays static text. + + + VolumeCostList + Displays costing information on different volumes. + + + VolumeSelectCombo + Selects volume from an alphabetical list. + + + More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/controls.asp + True + + + x + int + Horizontal coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. + True + + + y + int + Vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. + True + + + width + int + Width of the rectangular boundary of the control. This must be a non-negative number. + True + + + height + int + Height of the rectangular boundary of the control. This must be a non-negative number. + True + + + attr + int + A 32-bit word that specifies the bit flags to be applied to this control. This must be a non-negative number, and the allowed values depend upon the type of control.For a list of all control attributes, and the value to enter in this field, see Control Attributes. + True + + + property + string + The name of a defined property to be linked to this control. Radio button, list box, and combo box values are tied into a group by being linked to the same property. This column is required for active controls and is ignored by static controls. + False + + + text + string + A localizable string used to set the initial text contained in a control. The string can also contain embedded properties. + False + + + nextcontrol + string + The name of another control on the same dialog box. If the focus in the dialog box is on the control in the Control column, hitting the tab key moves the focus to the control listed here. Therefore this is used to specify the tab order of the controls on the dialog box. The links between the controls must form a closed cycle. Some controls, such as static text controls, can be left out of the cycle. In that case, this field may be left blank. + False + + + help + string + Optional, localizable text strings that are used with the Help button. The string is divided into two parts by a separator character (|). The first part of the string is used as ToolTip text. This text is used by screen readers for controls that contain a picture. The second part of the string is reserved for future use. The separator character is required even if only one of the two kinds of text is present. + False + + + remove + bool + If true, the control is removed. If false, the control is added. + False + + +

Examples

+ + Remove the Browse button from the customize dialog and add controls for a web dialog + + <controls> + <!-- Remove the Browse button from customize dialog --> + <control dialog="CustomizeDlg" name="Browse" type="PushButton" + x="304" y="200" width="56" height="17" attr="3" remove="true" /> + <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" + x="25" y="85" width="175" height="95" attr="7" remove="true" /> + + <!-- Re add the tree control with the proper next control --> + <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" + x="25" y="85" width="175" height="95" attr="7" + property="_BrowseProperty" text="Tree of selections" nextcontrol="Reset" /> + + <!-- Adds the controls associated with the webfolder dialog --> + <control dialog="WebFolderDlg" name="BannerBitmap" type="Bitmap" + x="0" y="0" width="374" height="44" attr="1" + text="[BannerBitmap]" nextcontrol="VDirLabel" /> + <control dialog="WebFolderDlg" name="Title" type="Text" + x="15" y="6" width="200" height="15" attr="196611" + text="[DlgTitleFont]Virtual Directory Information" /> + <control dialog="WebFolderDlg" name="Description" type="Text" + x="25" y="23" width="280" height="15" attr="196611" + text="Please enter your virtual directory and port information." /> + <control dialog="WebFolderDlg" name="BannerLine" type="Line" + x="0" y="44" width="374" height="0" attr="1" /> + <control dialog="WebFolderDlg" name="VDirLabel" type="Text" + x="18" y="73" width="348" height="15" attr="3" + text="&Virtual directory:" + nextcontrol="Edit_VDir" /> + <control dialog="WebFolderDlg" name="Edit_VDir" type="Edit" + x="18" y="85" width="252" height="18" attr="7" + property="TARGETVDIR" + text="[TARGETVDIR]" + nextcontrol="PortLabel" /> + <control dialog="WebFolderDlg" name="PortLabel" type="Text" + x="18" y="110" width="348" height="15" attr="3" + text="&Port:" + nextcontrol="Edit_Port" /> + <control dialog="WebFolderDlg" name="Edit_Port" type="Edit" + x="18" y="122" width="48" height="18" attr="7" + property="TARGETPORT" + text="[TARGETPORT]" + nextcontrol="Back" /> + <control dialog="WebFolderDlg" name="BottomLine" type="Line" + x="0" y="234" width="374" height="0" attr="1" /> + <control dialog="WebFolderDlg" name="Back" type="PushButton" + x="180" y="243" width="56" height="17" attr="3" + text="[ButtonText_Back]" nextcontrol="Next" /> + <control dialog="WebFolderDlg" name="Next" type="PushButton" + x="236" y="243" width="56" height="17" attr="3" + text="[ButtonText_Next]" nextcontrol="Cancel" /> + <control dialog="WebFolderDlg" name="Cancel" type="PushButton" + x="304" y="243" width="56" height="17" attr="3" + text="[ButtonText_Cancel]" nextcontrol="BannerBitmap" /> + </controls> + + +
+
+ + + + Used to validate and perform operations as the result of information + entered by the user into controls on custom dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + control + string + Refrence to a control. Maps to a control for the specified dialog. + True + + + action + string + The action that is to be taken on the control. The possible actions are shown in the following table. + + + Value + Description + + + Default + Set control as the default. + + + Disable + Disable the control. + + + Enable + Enable the control. + + + Hide + Hide the control. + + + Show + Display the control. + + + + True + + + condition + string + A conditional statement that specifies under which conditions the action should be triggered. If this statement does not evaluate to TRUE, the action does not take place. If it is set to 1, the action is always applied. + True + + + remove + bool + If true, the control condition is removed. If false, the control condition is added. + False + + +

Examples

+ + Remove the control condition for the Browse button from the customize dialog and add control conditions for a web dialog + + <controlconditions> + <!-- Remove control condition for Browse button on customizeDlg --> + <controlcondition dialog="CustomizeDlg" control="Browse" action="Hide" + condition="Installed" remove="true" /> + <!-- Add control conditions for the web folder dialog --> + <controlcondition dialog="WebFolderDlg" control="Back" action="Disable" + condition="ShowUserRegistrationDlg=""" /> + <controlcondition dialog="WebFolderDlg" control="Back" action="Enable" + condition="ShowUserRegistrationDlg<>""" /> + </controlconditions> + + +
+
+ + + + Used to route the flow of the installation process as the result of + events raised by the user interacting with controls on dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + control + string + Refrence to a control. Maps to a control for the specified dialog. + True + + + name + string + An identifier that specifies the type of event that should take place when the user interacts with the control + specified by Dialog_ and Control_. For a list of possible values see ControlEvent Overview.
+ To set a property with a control, put [Property_Name] in this field and the new value in the argument field. Put { } + into the argument field to enter the null value. +
+ True +
+ + argument + string + A value used as a modifier when triggering a particular event. + True + + + condition + string + A conditional statement that determines whether the installer activates the event in the Event column. The installer + triggers the event if the conditional statement in the Condition field evaluates to True. Therefore put a 1 in this column + to ensure that the installer triggers the event. The installer does not trigger the event if the Condition field contains + a statement that evaluates to False. The installer does not trigger an event with a blank in the Condition field unless no + other events of the control evaluate to True. If none of the Condition fields for the control named in the Control_ field + evaluate to True, the installer triggers the one event having a blank Condition field, and if more than one Condition field + is blank it triggers the one event of these with the largest value in the Ordering field. + False + + + order + int + An integer used to order several events tied to the same control. This must be a non-negative number. + False + + + remove + bool + If true, the control condition is removed. If false, the control condition is added. + False + +
+

Examples

+ + Remove the control events for the Browse button from the customize dialog and add events conditions for a web dialog + + + <controlevents> + <!-- Remove the old control events --> + <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" + argument="SetupTypeDlg" condition="ProductID" remove="true" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg <> 1" remove="true" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg = 1" remove="true" /> + <!-- Remove control events for Browse button on CustomizeDlg --> + <controlevent dialog="CustomizeDlg" control="Browse" name="SelectionBrowse" + argument="BrowseDlg" condition="1" remove="true" /> + + <!-- Add new control events for the web dialog --> + <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" + argument="WebFolderDlg" condition="ProductID" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="WebFolderDlg" condition="ShowWebFolderDlg <> 1" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="WebFolderDlg" condition="ShowWebFolderDlg = 1" /> + <controlevent dialog="WebFolderDlg" control="Cancel" name="SpawnDialog" + argument="CancelDlg" order="0" /> + <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" + argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg<>1" + order="0" /> + <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" + argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg=1" + order="0" /> + <!-- Virtual Directory Control Events --> + <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" + argument="WEBCA_CreateURLs" condition="1" order="0" /> + <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" + argument="WEBCA_EvaluateURLsMB" condition="1" order="1" /> + <controlevent dialog="WebFolderDlg" control="Next" name="SetTargetPath" + argument="TARGETDIR" condition="1" order="2" /> + <controlevent dialog="WebFolderDlg" control="Next" name="NewDialog" + argument="SetupTypeDlg" condition="1" order="3" /> + </controlevents> + + +
+
+ + + + Makes modifications to the Windows Registry of the target computer + at runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + component + string + Refrence to a component. The component that controls the installation of the registry value. + True + + + root + msi:MSIRegistryKeyRoot + Valid input: + + dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. + machine represents HKEY_LOCAL_MACHINE + classes represents HKEY_CLASSES_ROOT + user represents HKEY_CURRENT_USER + users represents HKEY_USERS + + + True + + + path + string + Registry key. + True + + +

Nested Elements:

+

<value>

+
    + Specifies the registry value to add to the target machine. + + + Attribute + Type + Description + Required + + + name + string + The registry value name (localizable). If this is Null, then the data entered into the Value column are + written to the default registry key.
    + If the Value column is Null, then the strings shown in the following table in the Name column have special + significance. + + + String + Description + + + + + The key is to be created, if absent, when the component is installed. + + + - + The key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. + + + * + The key is to be created, if absent, when the component is installed. Additionally, the key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. + + +
    + False +
    + + value + string + The localizable registry value. The field is Formatted. If the value is attached to one of the following prefixes (i.e. #%value) then the value is interpreted as described in the table. Note that each prefix begins with a number sign (#). If the value begins with two or more consecutive number signs (#), the first # is ignored and value is interpreted and stored as a string. + + + Prefix + Description + + + #x + The value is interpreted and stored as a hexadecimal value (REG_BINARY). + + + #% + The value is interpreted and stored as an expandable string (REG_EXPAND_SZ). + + + # + The value is interpreted and stored as an integer (REG_DWORD). + + + + If the value contains the sequence tilde [~], then the value is interpreted as a Null-delimited list of strings (REG_MULTI_SZ). For example, to specify a list containing the three strings a, b and c, use "a[~]b[~]c." + The sequence [~] within the value separates the individual strings and is interpreted and stored as a Null character. + If a [~] precedes the string list, the strings are to be appended to any existing registry value strings. If an appending string already occurs in the registry value, the original occurrence of the string is removed. + If a [~] follows the end of the string list, the strings are to be prepended to any existing registry value strings. If a prepending string already occurs in the registry value, the original occurrence of the string is removed. + If a [~] is at both the beginning and the end or at neither the beginning nor the end of the string list, the strings are to replace any existing registry value strings. + Otherwise, the value is interpreted and stored as a string (REG_SZ). + + + False + + + dword + string + A dword value to input, if the value attribute is null. This removes the requirement of adding "#" before the value. + False + + + id + string + Primary key used to identify a registry record. + False + +
    +
+

</value>

+

Examples

+ + Add the a couple registry entries on the target machine. + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value name="ProductVersion" value="1.0.0" /> + <value name="ProductDir" value="[TARGETDIR]" /> + <value name="VirtualDir" value="[TARGETVDIR]" /> + </key> + </registry> + + + + Add a default key value to the specified registry key path + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value value="1.0.0" /> + </key> + </registry> + + + + Another way to add a default key value to the specified registry key path + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value name="" value="1.0.0" /> + </key> + </registry> + + + + Specify hexadecimal value (REG_BINARY) for the default key + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value> + 1a,81,0a,03,01,00,06,00,00,00,d3,15,fd,00,01,00,00,00,00,00,01, + 00,00,00,00,00,00,00,00,00,00,00,b0,90,ce,09,01,00,00,00,00,00,ff,ff,ff,00, + 00,00,00,00,00,00,00,00,6d,7a,0a,03,01,00,00,00,00,00,00,00,38,40,00,00,00, + 00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,01,00,00,00,00,0f,00,00,00, + f0,ff,ff,ff,54,69,6d,65,73,20,4e,65,77,20,52,6f,6d,61,6e,f4,6f,d4,08,02,00 + </value> + </key> + </registry> + + +
+
+ + + + Stores icons to be used with shortcuts, file extensions, CLSIDs or + similar uses. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the icon file. + True + + + value + string + The binary icon data in PE (.dll or .exe) or icon (.ico) format. + True + + +

Examples

+ + Add a compiled help icon to the msi database; To be used with a shortcut. + + <icons> + <icon name="CHMICON" value="${resource.dir}\chm.ico" /> + </icons> + + +
+
+ + + + Creates shortcuts on the target computer. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Unique name identifying the shortcut. + True + + + directory + string + Reference to a directory. The location of where the shortcut should be created. + True + + + filename + string + The localizable name of the shortcut to be created. + True + + + component + string + Reference to a component. The installer uses the installation state of this specified component to determine whether the shortcut is created or deleted. This component must have a valid key path for the shortcut to be installed. If the Target column contains the name of a feature, the file launched by the shortcut is the key file of the component listed in this column. + True + + + target + string + The shortcut target. The installer evaluates this field as a Formatted string. The field should contains a property identifier enclosed by square brackets ([ ]), that is expanded into the file or a folder pointed to by the shortcut. + True + + + arguments + string + The command-line arguments for the shortcut.
Note that the resolution of properties in the Arguments field is limited. A property formatted as [Property] in this field can only be resolved if the property already has the intended value when the component owning the shortcut is installed. For example, for the argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and the component that owns the shortcut. +
+ False +
+ + hotkey + string + The hotkey for the shortcut. The low-order byte contains the virtual-key code for the key, and the high-order byte contains modifier flags. This must be a non-negative number. Authors of installation packages are generally recommend not to set this option, because this can add duplicate hotkeys to a users desktop. In addition, the practice of assigning hotkeys to shortcuts can be problematic for users using hotkeys for accessibility. + False + + + icon + string + Reference to an icon. + False + + + iconindex + int + The icon index for the shortcut. This must be a non-negative number. + False + + + showcmd + int + The Show command for the application window.
The following values may be used. The values are as defined for the Windows API function ShowWindow. + + + Value + Description + + + 1 + SW_SHOWNORMAL + + + 3 + SW_SHOWMAXIMIZED + + + 7 + SW_SHOWMINNOACTIVE + + +
+ False +
+ + wkdir + string + The name of the property that has the path of the working directory for the shortcut. + False + +
+

Nested Elements:

+

<description>

+
    + The localizable description of the shortcut. +
+

</description>

+

Examples

+ + Add a compiled help icon to the msi database; To be used with a shortcut. + + <shortcuts> + <shortcut name="HelpFiles" directory="D__PROGRAMMENU_ACME_MYPRODUCT" filename="Help File" component="C__MainFiles" target="[$C__MainFiles]\Help.chm" icon="CHMICON" iconindex="0" showcmd="3" > + <description>My Product help documentation</description> + </shortcut> + </shortcuts> + + +
+
+ + + + Stores the binary data for items such as bitmaps, animations, and + icons. The binary table is also used to store data for custom + actions. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A unique key that identifies the particular binary data. If the binary data is for a control, the key appears in the Text column of the associated control in the Control table. This key must be unique among all controls requiring binary data. + True + + + value + string + The binary file to add. + True + + +

Examples

+ + Add the custom action dll to create/modify virtual directories + + <binaries> + <binary name="MSVBDPCADLL" value="${resource.dir}\MSVBDPCA.DLL" /> + </binaries> + + +
+
+ + + + Used to configure executables that may be run during steps in the + installation process to do things outside the bounds of MSI + technology's feature set. This is the main spot you can extend MSI + technology to perform custom processes via compiled code. + +

Parameters

+ + + Attribute + Type + Description + Required + + + action + string + Name of the action. The action normally appears in a sequence table unless it is called by another custom action. If the name matches any built-in action, then the custom action is never called. + True + + + type + string + A field of flag bits specifying the basic type of custom action and options. See Summary List of All Custom Action Types for a list of the basic types. See Custom Action Return Processing Options, Custom Action Execution Scheduling Options, Custom Action Hidden Target Option, and Custom Action In-Script Execution Options. + True + + + source + string + A property name or external key into another table. For a discussion of the possible custom action sources, see Custom Action Sources and the Summary List of All Custom Action Types. For example, the Source column may contain an external key into the first column of one of the following tables containing the source of the custom action code.
+ Directory table for calling existing executables.
+ File table for calling executables and DLLs that have just been installed.
+ Binary table for calling executables, DLLs, and data stored in the database.
+ Property table for calling executables whose paths are held by a property. +
+ True +
+ + target + string + An execution parameter that depends on the basic type of custom action. See the Summary List of All Custom Action Types for a description of what should be entered in this field for each type of custom action. For example, this field may contain the following depending on the custom action. + + + Target + Custom Action + + + Entry point (required) + Calling a DLL. + + + Executable name with arguments (required) + Calling an existing executable. + + + Command line arguments (optional) + Calling an executable just installed. + + + Target file name (required) + Creating a file from custom data. + + + Null + Executing script code. + + + + True + +
+

Examples

+ + Add some custom actions related to the virtual directory dialog and custom action. + + <customactions> + <!-- Custom actions creating entry points into the custom action dll specified in the binary table --> + <customaction action="WEBCA_GatherWebFolderProperties" type="1" source="MSVBDPCADLL" target="GatherWebFolderProperties" /> + <customaction action="WEBCA_ApplyWebFolderProperties" type="1537" source="MSVBDPCADLL" target="ApplyWebFolderProperties" /> + <customaction action="WEBCA_RollbackApplyWebFolderProperties" type="1281" source="MSVBDPCADLL" target="RollbackApplyWebFolderProperties" /> + <customaction action="WEBCA_CreateURLs" type="1" source="MSVBDPCADLL" target="CreateURLs" /> + <customaction action="WEBCA_EvaluateURLs" type="1" source="MSVBDPCADLL" target="EvaluateURLs" /> + <customaction action="WEBCA_EvaluateURLsNoFail" type="1" source="MSVBDPCADLL" target="EvaluateURLsNoFail" /> + <customaction action="WEBCA_EvaluateURLsMB" type="1" source="MSVBDPCADLL" target="EvaluateURLsMB" /> + <customaction action="WEBCA_CreateAppRoots" type="1" source="MSVBDPCADLL" target="CreateAppRoots" /> + + <!-- Custom actions to set default control values in the webfolder dialog --> + <customaction action="WEBCA_TARGETVDIR" type="307" source="TARGETVDIR" target="Default VDir" /> + <customaction action="WEBCA_TARGETPORT" type="307" source="TARGETPORT" target="80" /> + </customactions> + + +
+
+ + + + Used to modify the sequence of tasks/events that execute during the + overall installation process. + +

Parameters

+ + + Attribute + Type + Description + Required + + + type + msi:MSISequenceTable + Valid inputs: + + installexecute represents InstallExecuteSequence Table. + installui represents InstallUISequence Table + adminexecute represents AdminExecuteSequence Table + adminui represents AdminUISequence Table + advtexecute represents AdvtUISequence Table + + + True + + + action + string + Name of the action to execute. This is either a built-in action or a custom action. + True + + + value + int + Number that determines the sequence position in which this action is to be executed.
+ A positive value represents the sequence position. A Null value indicates that the action is not executed. The following + negative values indicate that this action is to be executed if the installer returns the associated termination flag. No + more than one action may have a negative value entered in the Sequence field. + + + Value + Description + + + -1 + Successful completion. + + + -2 + User terminates install. + + + -3 + Fatal exit terminates. + + + -4 + Install is suspended. + + +
+ True +
+ + condition + string + This field contains a conditional expression. If the expression evaluates to False, then the action is skipped. If the expression syntax is invalid, then the sequence terminates, returning iesBadActionData. + False + +
+

Examples

+ + Add the sequences to support virtual directories + + <sequences> + <sequence type="installexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="installexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="installexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_GatherWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_ApplyWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_RollbackApplyWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_CreateAppRoots" value="3701" condition="NOT Installed" /> + <sequence type="installui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="installui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="installui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="installui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> + <sequence type="adminexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="adminexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="adminexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="adminexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> + <sequence type="adminui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="adminui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="adminui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="adminui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> + </sequences> + + +
+
+ + + + Creates text to be displayed in a progress dialog box and written + to the log for actions that take a long time to execute. The text + displayed consists of the action description and optionally formatted + data from the action. The entries in the ActionText table typically + refer to actions in sequence tables. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Unique name identifying the action. + True + + + template + string + A localized format template is used to format action data records for display during action execution. If no template is supplied, then the action data will not be displayed. + False + + +

Nested Elements:

+

<description>

+
    + Localized description displayed in the progress dialog box or written to the log when the action is executing. +
+

</description>

+

Examples

+ + Add the related action text for the web folder actions. + + <actiontext> + <action name="WEBCA_GatherWebFolderProperties" > + <description>Gathering web folder properties</description> + </action> + <action name="WEBCA_ApplyWebFolderProperties" > + <description>Applying web folder properties</description> + </action> + <action name="WEBCA_RollbackApplyWebFolderProperties" > + <description>Removing web folder properties</description> + </action> + <action name="WEBCA_CreateURLs" > + <description>Creating URLs</description> + </action> + <action name="WEBCA_EvaluateURLs" > + <description>Evaluating URLs</description> + </action> + <action name="WEBCA_EvaluateURLsNoFail" > + <description>Evaluating URLs and do not fail if URL is invalid</description> + </action> + <action name="WEBCA_EvaluateURLsMB" > + <description>Evaluating URLs</description> + </action> + <action name="WEBCA_CreateAppRoots" > + <description>Creating application roots</description> + </action> + <action name="WEBCA_TARGETVDIR" > + <description>Set TARGETVDIR property to the specified virtual dir</description> + </action> + <action name="WEBCA_TARGETPORT" > + <description>Set TARGETPORT property to the specified virtual dir port</description> + </action> + </actiontext> + + +
+
+ + + + Adds Verbs and a handler for the specified file type. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + directory + string + Refrence to a directory. The directory to add the specific verb/handler to IIS for the specified file type. + True + + + extension + string + File name extension to specifically handle + False + + + exepath + string + Path to the Internet Server API (ISAPI) or Common Gateway Interface (CGI) program to run to process a request. + False + + + verbs + string + Internet Information Services verbs that are allowed for the executable file. Only verbs entered in this field will be allowed. + False + + +

Examples

+ + Add the aspx app mapping + + <appmappings> + <appmapping directory="D__ACME_MyProduct" extension=".aspx" exepath="[DOTNETFOLDER]aspnet_isapi.dll" verbs="GET,HEAD,POST,DEBUG" /> + </appmappings> + + +
+
+ + + + Determines the local path equivalent for a url and stores this + information in a property. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + The name of the URLProperty to convert + True + + + property + string + The name of the property to store the directory information. + True + + +

Examples

+ + Convert the TARGETURL property to a directory and store that information in TARGETDIR + + <urlproperties> + <urlproperty name="TARGETURL" property="TARGETDIR" /> + </urlproperties> + + +
+
+ + + + Creates a URLProperty representing the virtual directory and port. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Property containing the virtual directory + True + + + portproperty + string + Property containing the network port number to use. + True + + + urlproperty + string + URLProperty to store the url in + True + + +

Examples

+ + Convert the virtual directory and port to a url and store the value in a property. + + <vdirproperties> + <vdirproperty name="TARGETVDIR" portproperty="TARGETPORT" urlproperty="TARGETURL" /> + </vdirproperties> + + +
+
+ + + + Create a Web application definition and marks it as running in-process + or out-of-process. If an application already exists at the specified + path, you can use this method to reconfigure the application from + in-process to out-of-process, or the reverse. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + component + string + Reference to a component. Determines when the approot will be created. + True + + + urlproperty + string + URLProperty with stored url + True + + + inprocflag + int + Specifies whether the application being created is to run in-process (0), out-of-process (1), or in a pooled process (2). If the application already exists and is running, changing the value of this flag will cause the application definition to be deleted and a new application created to run in the specified process space. + True + + +

Examples

+ + Convert the virtual directory and port to a url and store the value in a property. + + <approots> + <approot component="C__MainFiles" urlproperty="TARGETURL" inprocflag="2" /> + </approots> + + +
+
+ + + + Specifies directory security in IIS. Can also configure the default + documents supported by each directory. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + directory + string + Reference to a directory. This is the directory that gets modified with the specific attributes. + True + + + attr + int + Attributes to set for the directory. + + + Value + Flag Name + Description + + + 1 + AccessRead + The file or the contents of the folder may be read through Microsoft Internet Explorer. + + + 2 + AccessWrite + Users are allowed to upload files and their associated properties to the enabled directory on your server or to change content in a Write-enabled file. Write can be implemented only with a browser that supports the PUT feature of the HTTP 1.1 protocol standard. + + + 4 + AccessExecute + The file or the contents of the folder may be executed, regardless of file type. + + + 8 + AccessSSL + File access requires SSL file permission processing, with or without a client certificate. + + + 16 + AccessSource + Users are allowed to access source code if either Read or Write permissions are set. Source code includes scripts in Microsoft ® Active Server Pages (ASP) applications. + + + 32 + AccessSSLNegotiateCert + SSL file access processing requests a certificate from the client. A value of false indicates that access continues if the client does not have a certificate. Some versions of Internet Explorer will close the connection if the server requests a certificate and a certificate is not available (even if AccessSSLRequireCert is also set to true). + + + 64 + AccessSSLRequireCert + SSL file access processing requests a certificate from the client. If the client provides no certificate, the connection is closed. AccessSSLNegotiateCert must also be set to true when using AccessSSLRequireCert. + + + 128 + AccessSSLMapCert + SSL file permission processing maps a client certificate to a Microsoft Windows ® operating system user-account. The AccessSSLNegotiateCert property must also be set to true for the mapping to occur. + + + 256 + AccessSSL128 + File access requires SSL file permission processing with a minimum key size of 128 bits, with or without a client certificate. + + + 512 + AccessScript + The file or the contents of the folder may be executed if they are script files or static content. A value of false only allows static files, such as HTML files, to be served. + + + 1024 + AccessNoRemoteWrite + Remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. + + + 4096 + AccessNoRemoteRead + Remote requests to view files are denied; only requests from the same computer as the IIS server succeed if the AccessRead property is set to true. You cannot set AccessNoRemoteRead to false to enable remote requests, and set AccessRead to false to disable local requests. + + + 8192 + AccessNoRemoteExecute + Remote requests to execute applications are denied; only requests from the same computer as the IIS server succeed if the AccessExecute property is set to true. You cannot set AccessNoRemoteExecute to false to enable remote requests, and set AccessExecute to false to disable local requests. + + + 16384 + AccessNoRemoteScript + Requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. + + + 32768 + AccessNoPhysicalDir + Access to the physical path is not allowed. + + + + True + + + defaultdoc + string + Adds a filename to the Default Documents to process. Add multiple separated with a comma (Eg. "Default.aspx,Default.htm") + False + + +

Examples

+ + Specify permissions for the directory structure. + + <iisproperties> + <iisproperty directory="TARGETDIR" attr="626" defaultdoc="Default.aspx" /> + <iisproperty directory="D__BIN" attr="112" /> + <iisproperty directory="D__SomeSubDir" attr="114" /> + </iisproperties> + + +
+
+ + + Summary description for MsiTaskInfo. + + + + + Loads the banner image. + + The MSI database. + + + + Loads the background image. + + The MSI database. + + + + Loads the license file. + + The MSI database. + + + + Loads records for the Media table. + + The MSI database. + The sequence number of the last file in the .cab. + + + + Loads records for the Features table. + + The MSI database. + + + + Adds a feature record to the Features table. + + The MSI database Feature table. + The MSI database Condition table. + The name of this feature's parent. + The MSI database. + This Feature's Schema element. + The tree depth of this feature. + The tree order of this feature. + + + + Loads records for the LaunchCondition table + + The MSI database. + + + + Merges Merge Modules into the MSI Database. + + The MSI Database. + The path to temporary files. + + + + Creates a Windows Installer (also known as Microsoft Installer, or MSI) + setup database for installing software on the Windows Platform. + + + + Requires cabarc.exe in the path. This tool is part of the + Microsoft Cabinet SDK. + + + Requires mergemod.dll version 2.0 or greater. This dll is part of the + Microsoft Platform SDK. + + + See the Roadmap to Windows Installer Documentation + at Microsoft's MSDN website for more information. + + + + + + Initializes task and verifies parameters. + + + + + Executes the task. + + + + + An .rtf (rich text format) file containing the license agreement + for your software. The contents of this file will be displayed to + the user when setup runs and must be accepted to continue. + + + + + A .bmp (bitmap) file 495x60 pixels in size that will be displayed + as the banner (top) image of the installation user interface. + + + + + A .bmp (bitmap) file 495x315 pixels in size that will be displayed + as the background image of the installation user interface. + + + + + + Groups sets of components into named sets, these can be used to + layout the tree control that allows users to select and deselect + features of your software product when a custom installation is + selected at runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the feature. + True + + + display + int + The number in this field specifies the order in which the feature is to be displayed in the user interface. + The value also determines if the feature is initially displayed expanded or collapsed.
+ If the value is null or zero, the record is not displayed. If the value is odd, the feature node is expanded initially. + If the value is even, the feature node is collapsed initially. +
+ True +
+ + title + string + Short string of text identifying the feature. This string is listed as an item by the SelectionTree control of the Selection Dialog. + False + + + typical + bool + Determines if the feature should be included in a "typical" install. This is useful for when the user selects to just install the typical features. + False + + + directory + string + Refrence to a directory. Specify a corresponding directory to go with the feature. + False + + + attr + int + Any combination of the following: + + + Value + Description + + + 0 + Components of this feature that are not marked for installation from source are installed locally. + + + 1 + Components of this feature not marked for local installation are installed to run from the source CD-ROM or server. + + + 2 + Set this attribute and the state of the feature is the same as the state of the feature's parent. + + + 4 + Set this attribute and the feature state is Advertise. + + + 8 + Note that this bit works only with features that are listed by the ADVERTISE property.
Set this attribute to prevent the feature from being advertised.
+
+ + 16 + Set this attribute and the user interface does not display an option to change the feature state to Absent. Setting this attribute forces the feature to the installation state, whether or not the feature is visible in the UI. + + + 32 + Set this attribute and advertising is disabled for the feature if the operating system shell does not support Windows Installer descriptors. + +
+ More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/feature_table.asp +
+ False +
+
+

Nested Elements:

+

<feature>

+
    + Nested feature elements are supported. +
+

</feature>

+

<description>

+
    + Longer string of text describing the feature. This localizable string is displayed by the Text control of the Selection Dialog. +
+

</description>

+

<conditions>

+
    +

    <condition>

    +
      + + + Attribute + Type + Description + Required + + + expression + string + If this conditional expression evaluates to TRUE, then the Level column in the Feature table is set to the + conditional install level.
      + The expression in the Condition column should not contain reference to the installed state of any feature or component. + This is because the expressions in the Condition column are evaluated before the installer evaluates the installed + states of features and components. Any expression in the Condition table that attempts to check the installed state + of a feature or component always evaluates to false.
      + For information on the syntax of conditional statements, see Conditional Statement Syntax. +
      + True +
      + + level + int + The installer sets the install level of this feature to the level specified in this column if the expression in + the Condition column evaluates to TRUE. Set this value to 0 to have the component not install if the condition is not met.
      + For any installation, there is a defined install level, which is an integral value from 1 to 32,767. The initial value + is determined by the InstallLevel property, which is set in the Property table.
      + A feature is installed only if the feature level value is less than or equal to the current install level. The user + interface can be authored such that once the installation is initialized, the installer allows the user to modify the + install level of any feature in the Feature table. For example, an author can define install level values that represent + specific installation options, such as Complete, Typical, or Minimum, and then create a dialog box that uses + SetInstallLevel ControlEvents to enable the user to select one of these states. Depending on the state the user selects, + the dialog box sets the install level property to the corresponding value. If the author assigns Typical a level of 100 + and the user selects Typical, only those features with a level of 100 or less are installed. In addition, the Custom + option could lead to another dialog box containing a Selection Tree control. The Selection Tree would then allow the user + to individually change whether each feature is installed.
      + True +
      +
      +
    +

    </condition>

    +
+

</conditions>

+

Examples

+ + Define a sample features structure. + + <features> + <feature name="F__Default" title="My Product" display="1" typical="true" directory="TARGETDIR"> + <description>My Product from ACME, Inc. </description> + <feature name="F__MainFiles" display="0" typical="true" /> + </feature> + <feature name="F__Help" title="My Product Help Files" display="1" typical="false" directory="D__ACME_MyProduct_Help" /> + </features> + + +
+
+ + + + Includes pre-packaged installation components (.msm files) as part + of the msi database. This feature allows reuse of installation + components that use MSI technology from other setup vendors or as + created by the . + +

Parameters

+ + + Attribute + Type + Description + Required + + + feature + string + Refrence to a feature. Used to associate the merge module with the feature (and the feature's directory) for when to install the components in the merge module. + True + + +

Nested Elements:

+

<modules>

+
    + Specifies the merge module(s) to include with the specified feature. +
+

</modules>

+

<configurationitems>

+
    +

    <configurationitem>

    +
      + Specifies the value for a configurable item +

      Parameters

      + + + Attribute + Type + Description + Required + + + module + string + Merge module filename to limit the configuration item to. If this is not set, the configuration item will be applied to all merge modules in the fileset. + True + + + name string Name of item for which data is to be set True @@ -5704,516 +5777,516 @@
- - Summary description for MsmTaskInfo. - + + Summary description for MsmTaskInfo. + - - Loads records for the ModuleSignature table. - - The MSM database. + + Loads records for the ModuleSignature table. + + The MSM database. - - Loads records for the ModuleDependency table. - - The MSM database. + + Loads records for the ModuleDependency table. + + The MSM database. - - Loads records for the ModuleExclusion table. - - The MSM database. + + Loads records for the ModuleExclusion table. + + The MSM database. - - Loads records for the ModuleInstallUISequence, ModuleInstallExecuteSequence, - ModuleAdminUISequence, ModuleAdminExecute, and ModuleAdvtExecuteSequence tables. - - The MSM database. + + Loads records for the ModuleInstallUISequence, ModuleInstallExecuteSequence, + ModuleAdminUISequence, ModuleAdminExecute, and ModuleAdvtExecuteSequence tables. + + The MSM database. - - Loads records for the ModuleIgnoreTable table. - - The MSM database. + + Loads records for the ModuleIgnoreTable table. + + The MSM database. - - Loads records for the ModuleSubstitution table. - - The MSM database. + + Loads records for the ModuleSubstitution table. + + The MSM database. - - Loads records for the ModuleConfiguration table. - - The MSM database. + + Loads records for the ModuleConfiguration table. + + The MSM database. - - Builds a Windows Installer Merge Module (MSM) database. - - - Requires cabarc.exe in the path. This tool is part of the - Microsoft Cabinet SDK. - + + Builds a Windows Installer Merge Module (MSM) database. + + + Requires cabarc.exe in the path. This tool is part of the + Microsoft Cabinet SDK. + - - Initializes task and verifies parameters. - + + Initializes task and verifies parameters. + - - Executes the task. - + + Executes the task. + - - Stores a unique identifier for a merge module. To be used as the merge module's ModuleSignature - + + Stores a unique identifier for a merge module. To be used as the merge module's ModuleSignature + - - Specifies the numeric language ID or IDs for a merge module. - + + Specifies the numeric language ID or IDs for a merge module. + - - Stores the version number of a merge module. - + + Stores the version number of a merge module. + - - - Lists other merge modules that are required for this merge module - to operate properly. - - - Contains any number of dependency elements. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - id - string - Identifier of the merge module required - True - - - language - string - Numeric language ID of the dependent merge module. Can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. If the field contains a group language ID, any merge module with having a language code in that group satisfies the dependency. If the RequiredLanguage is set to 0, any merge module filling the other requirements satisfies the dependency. - True - - - version - string - Version of the dependent merge module. If ommited, any version fills the dependency. - False - - -

Examples

- - Make sure that the NAnt merge module is included - - <moduledependencies> - <dependency id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" /> - </moduledependencies> - - -
+ + + Lists other merge modules that are required for this merge module + to operate properly. + + + Contains any number of dependency elements. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + id + string + Identifier of the merge module required + True + + + language + string + Numeric language ID of the dependent merge module. Can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. If the field contains a group language ID, any merge module with having a language code in that group satisfies the dependency. If the RequiredLanguage is set to 0, any merge module filling the other requirements satisfies the dependency. + True + + + version + string + Version of the dependent merge module. If ommited, any version fills the dependency. + False + + +

Examples

+ + Make sure that the NAnt merge module is included + + <moduledependencies> + <dependency id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" /> + </moduledependencies> + + +
- - - Lists other merge modules that are incompatible in the same - installer database. - - - Contains any number of exclusion elements. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - id - string - Identifier of the merge module required - True - - - language - string - Numeric language ID of the merge module in ExcludedID. The ExcludedLanguage column can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. The ExcludedLanguage column can accept negative language IDs. The meaning of the value in the ExcludedLanguage column is as follows. - - - ExcludedLanguage - Description - - - > 0 - Exclude the language IDs specified by ExcludedLanguage. - - - = 0 - Exclude no language IDs. - - - < 0 - Exclude all language IDs except those specified by ExcludedLanguage. - - - - True - - - minversion - string - Minimum version excluded from a range. If ommitted, all versions before maxversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. - False - - - maxversion - string - Maximum version excluded from a range. If ommitted, all versions after minversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. - False - - -

Examples

- - Exclude the all NAnt merge modules created before version 0.85.0 - - <moduleexclusions> - <exclusion id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" maxversion="0.85.0" /> - </moduleexclusions> - - -
+ + + Lists other merge modules that are incompatible in the same + installer database. + + + Contains any number of exclusion elements. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + id + string + Identifier of the merge module required + True + + + language + string + Numeric language ID of the merge module in ExcludedID. The ExcludedLanguage column can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. The ExcludedLanguage column can accept negative language IDs. The meaning of the value in the ExcludedLanguage column is as follows. + + + ExcludedLanguage + Description + + + > 0 + Exclude the language IDs specified by ExcludedLanguage. + + + = 0 + Exclude no language IDs. + + + < 0 + Exclude all language IDs except those specified by ExcludedLanguage. + + + + True + + + minversion + string + Minimum version excluded from a range. If ommitted, all versions before maxversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. + False + + + maxversion + string + Maximum version excluded from a range. If ommitted, all versions after minversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. + False + + +

Examples

+ + Exclude the all NAnt merge modules created before version 0.85.0 + + <moduleexclusions> + <exclusion id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" maxversion="0.85.0" /> + </moduleexclusions> + + +
- - - Used to modify the sequence of tasks/events that execute during the - overall installation process. - -

Parameters

- - - Attribute - Type - Description - Required - - - type - msi:MSISequenceTable - Valid inputs: - - installexecute represents ModuleInstallExecuteSequence Table. - installui represents ModuleInstallUISequence Table - adminexecute represents ModuleAdminExecuteSequence Table - adminui represents ModuleAdminUISequence Table - advtexecute represents ModuleAdvtUISequence Table - - - True - - - action - string - Action to insert into sequence. Refers to one of the installer standard actions, or an entry in the merge module's CustomAction table or Dialog table.
If a standard action is used in the Action column of a merge module sequence table, the BaseAction and After attributes must be ommitted.
- True -
- - sequence - int - The sequence number of a standard action. If a custom action or dialog is entered into the Action column of this row, this attribute must be ommitted
When using standard actions in merge module sequence tables, the value in the Sequence column should be the recommended action sequence number. If the sequence number in the merge module differs from that for the same action in the .msi file sequence table, the merge tool uses the sequence number from the .msi file. See the suggested sequences in Using a Sequence Table for the recommended sequence numbers of standard actions.
- False -
- - baseaction - string - Can contain a standard action, a custom action specified in the merge module's custom action table, or a dialog specified in the module's dialog table. Is a key into the Action column of this table. It cannot be a foreign key into another merge table or table in the .msi file. This means that every standard action, custom action, or dialog listed in the BaseAction column must also be listed in the Action column of another record in this table. - False - - - after - bool - Boolean for whether Action comes before or after BaseAction - - - Value - Description - - - True - Action to come after BaseAction - - - False - Action to come before BaseAction - - - - False - - - condition - string - A conditional statement that indicates if the action is be executed. - False - -
-
+ + + Used to modify the sequence of tasks/events that execute during the + overall installation process. + +

Parameters

+ + + Attribute + Type + Description + Required + + + type + msi:MSISequenceTable + Valid inputs: + + installexecute represents ModuleInstallExecuteSequence Table. + installui represents ModuleInstallUISequence Table + adminexecute represents ModuleAdminExecuteSequence Table + adminui represents ModuleAdminUISequence Table + advtexecute represents ModuleAdvtUISequence Table + + + True + + + action + string + Action to insert into sequence. Refers to one of the installer standard actions, or an entry in the merge module's CustomAction table or Dialog table.
If a standard action is used in the Action column of a merge module sequence table, the BaseAction and After attributes must be ommitted.
+ True +
+ + sequence + int + The sequence number of a standard action. If a custom action or dialog is entered into the Action column of this row, this attribute must be ommitted
When using standard actions in merge module sequence tables, the value in the Sequence column should be the recommended action sequence number. If the sequence number in the merge module differs from that for the same action in the .msi file sequence table, the merge tool uses the sequence number from the .msi file. See the suggested sequences in Using a Sequence Table for the recommended sequence numbers of standard actions.
+ False +
+ + baseaction + string + Can contain a standard action, a custom action specified in the merge module's custom action table, or a dialog specified in the module's dialog table. Is a key into the Action column of this table. It cannot be a foreign key into another merge table or table in the .msi file. This means that every standard action, custom action, or dialog listed in the BaseAction column must also be listed in the Action column of another record in this table. + False + + + after + bool + Boolean for whether Action comes before or after BaseAction + + + Value + Description + + + True + Action to come after BaseAction + + + False + Action to come before BaseAction + + + + False + + + condition + string + A conditional statement that indicates if the action is be executed. + False + +
+
- - - If a table in the merge module is listed in the ModuleIgnoreTable - table, it is not merged into the .msi file. If the table already - exists in the .msi file, it is not modified by the merge. The tables - in the ModuleIgnoreTable can therefore contain data that is unneeded - after the merge. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - table - string - Name of the table in the merge module that is not to be merged into the .msi file. - True - - -

Examples

- - Ensure the module is compatible for users who have versions of Mergemod.dll earlier than 2.0 - - <moduleignoretables> - <table name="ModuleConfiguration" /> - <table name="ModuleSubstitution" /> - <table name="_ModuleConfigurationGroup" /> - </moduleignoretables> - - -
+ + + If a table in the merge module is listed in the ModuleIgnoreTable + table, it is not merged into the .msi file. If the table already + exists in the .msi file, it is not modified by the merge. The tables + in the ModuleIgnoreTable can therefore contain data that is unneeded + after the merge. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + table + string + Name of the table in the merge module that is not to be merged into the .msi file. + True + + +

Examples

+ + Ensure the module is compatible for users who have versions of Mergemod.dll earlier than 2.0 + + <moduleignoretables> + <table name="ModuleConfiguration" /> + <table name="ModuleSubstitution" /> + <table name="_ModuleConfigurationGroup" /> + </moduleignoretables> + + +
- - - The ModuleSubstitution table specifies the configurable fields of a - module database and provides a template for the configuration of each - field. The user or merge tool may query this table to determine what - configuration operations are to take place. This table is not merged - into the target database. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - table - string - Name of the table being modified in the module database. - True - - - row - string - Specifies the primary keys of the target row in the table named in the Table column. Multiple primary keys are separated by semicolons. Target rows are selected for modification before any changes are made to the target table. If one record in the ModuleSubstitution table changes the primary key field of a target row, other records in the ModuleSubstitution table are applied based on the original primary key data, not the resulting of primary key substitutions. The order of row substitution is undefined.
Values in this column are always in CMSM special format. A literal semicolon (';') or equal sign ('=') can be added by prefixing the character with a backslash. '\'. A null value for a key is signified by a null, a leading semicolon, two consecutive semicolons, or a trailing semicolon, depending on whether the null value is a sole, first, middle, or final key column value.
- True -
- - column - string - Specifies the target column in the row named in the Row column. If multiple rows in the ModuleSubstitution table change different columns of the same target row, all the column substitutions are performed before the modified row is inserted into the database. The order of column substitution is undefined. - True - - - value - string - Contains a string that provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column. When a substitution string of the form [=ItemA] is encountered, the string, including the bracket characters, is replaced by the value for the configurable "ItemA." The configurable item "ItemA" is specified in the Name column of the ModuleConfiguration table and its value is provided by the merge tool. If the merge tool declines to provide a value for any item in a replacement string, the default value specified in the DefaultValue column of the ModuleConfiguration Table is substituted. If a string references an item not in the ModuleConfiguration table, the merge fails. - - - This column uses CMSM special format. A literal semicolon (';') or equals sign ('=') can be added to the table by prefixing the character with a backslash. '\'. - - - The Value field may contain multiple substitution strings. For example, the configuration of items "Food1" and "Food2" in the string: "[=Food1] is good, but [=Food2] is better because [=Food2] is more nutritious." - - - Replacement strings must not be nested. The template "[=AB[=CDE]]" is invalid. - - - If the Value field evaluates to null, and the target field is not nullable, the merge fails and an error object of type msmErrorBadNullSubstitution is created and added to the error list. For details, see the error types described in get_Type Function. - - - If the Value field evaluates to the null GUID: {00000000-0000-0000-0000-000000000000}, the null GUID is replaced by the name of the feature before the row is merged into the module. For details, see Referencing Features in Merge Modules. - - - The template in the Value field is evaluated before being inserted into the target field. Substitution into a row is done before replacing any features. - - - If the Value column evaluates to a string of only integer characters (with an optional + or -), the string is converted into an integer before being substituted into an target field of the Integer Format Type. If the template evaluates to a string that does not consist only of integer characters (and an optional + or -) the result cannot be substituted into an integer target field. Attempting to insert a non-integer into an integer field causes the merge to fail and adds a msmErrorBadSubstitutionType error object to the error list. - - - If the target column specified in the Table and Column fields is a Text Format Type, and evaluation of the Value field results in an Integer Format Type, a decimal representation of the number is inserted into the target text field. - - - If the target field is an Integer Format Type, and the Value field consists of a non-delimited list of items in Bitfield Format, the value in the target field is combined using the bitwise AND operator with the inverse of the bitwise OR of all of the mask values from the items, then combined using the bitwise OR operator with each of the integer or bitfield items when masked by their corresponding mask values. Essentially, this explicitly sets the bits from the properties to the provided values but leaves all other bits in the cell alone. - - - If the Value field evaluates to a Key Format Type, and is a key into a table that uses multiple primary keys, the item name may be followed by a semicolon and an integer value that indicates the 1-based index into the set of values that together make a primary key. If no integer is specified, the value 1 is used. For example, the Control table has two primary key columns, Dialog_ and Control. The value of an item "Item1" that is a key into the Control table will be of the form "DialogName;ControlName", where DialogName is the value in the Dialog_ table and ControlName is the value in the Control column. To substitute just ControlName, the substitution string [=Item1;2] should be used. - - - - False - -
-
+ + + The ModuleSubstitution table specifies the configurable fields of a + module database and provides a template for the configuration of each + field. The user or merge tool may query this table to determine what + configuration operations are to take place. This table is not merged + into the target database. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + table + string + Name of the table being modified in the module database. + True + + + row + string + Specifies the primary keys of the target row in the table named in the Table column. Multiple primary keys are separated by semicolons. Target rows are selected for modification before any changes are made to the target table. If one record in the ModuleSubstitution table changes the primary key field of a target row, other records in the ModuleSubstitution table are applied based on the original primary key data, not the resulting of primary key substitutions. The order of row substitution is undefined.
Values in this column are always in CMSM special format. A literal semicolon (';') or equal sign ('=') can be added by prefixing the character with a backslash. '\'. A null value for a key is signified by a null, a leading semicolon, two consecutive semicolons, or a trailing semicolon, depending on whether the null value is a sole, first, middle, or final key column value.
+ True +
+ + column + string + Specifies the target column in the row named in the Row column. If multiple rows in the ModuleSubstitution table change different columns of the same target row, all the column substitutions are performed before the modified row is inserted into the database. The order of column substitution is undefined. + True + + + value + string + Contains a string that provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column. When a substitution string of the form [=ItemA] is encountered, the string, including the bracket characters, is replaced by the value for the configurable "ItemA." The configurable item "ItemA" is specified in the Name column of the ModuleConfiguration table and its value is provided by the merge tool. If the merge tool declines to provide a value for any item in a replacement string, the default value specified in the DefaultValue column of the ModuleConfiguration Table is substituted. If a string references an item not in the ModuleConfiguration table, the merge fails. + + + This column uses CMSM special format. A literal semicolon (';') or equals sign ('=') can be added to the table by prefixing the character with a backslash. '\'. + + + The Value field may contain multiple substitution strings. For example, the configuration of items "Food1" and "Food2" in the string: "[=Food1] is good, but [=Food2] is better because [=Food2] is more nutritious." + + + Replacement strings must not be nested. The template "[=AB[=CDE]]" is invalid. + + + If the Value field evaluates to null, and the target field is not nullable, the merge fails and an error object of type msmErrorBadNullSubstitution is created and added to the error list. For details, see the error types described in get_Type Function. + + + If the Value field evaluates to the null GUID: {00000000-0000-0000-0000-000000000000}, the null GUID is replaced by the name of the feature before the row is merged into the module. For details, see Referencing Features in Merge Modules. + + + The template in the Value field is evaluated before being inserted into the target field. Substitution into a row is done before replacing any features. + + + If the Value column evaluates to a string of only integer characters (with an optional + or -), the string is converted into an integer before being substituted into an target field of the Integer Format Type. If the template evaluates to a string that does not consist only of integer characters (and an optional + or -) the result cannot be substituted into an integer target field. Attempting to insert a non-integer into an integer field causes the merge to fail and adds a msmErrorBadSubstitutionType error object to the error list. + + + If the target column specified in the Table and Column fields is a Text Format Type, and evaluation of the Value field results in an Integer Format Type, a decimal representation of the number is inserted into the target text field. + + + If the target field is an Integer Format Type, and the Value field consists of a non-delimited list of items in Bitfield Format, the value in the target field is combined using the bitwise AND operator with the inverse of the bitwise OR of all of the mask values from the items, then combined using the bitwise OR operator with each of the integer or bitfield items when masked by their corresponding mask values. Essentially, this explicitly sets the bits from the properties to the provided values but leaves all other bits in the cell alone. + + + If the Value field evaluates to a Key Format Type, and is a key into a table that uses multiple primary keys, the item name may be followed by a semicolon and an integer value that indicates the 1-based index into the set of values that together make a primary key. If no integer is specified, the value 1 is used. For example, the Control table has two primary key columns, Dialog_ and Control. The value of an item "Item1" that is a key into the Control table will be of the form "DialogName;ControlName", where DialogName is the value in the Dialog_ table and ControlName is the value in the Control column. To substitute just ControlName, the substitution string [=Item1;2] should be used. + + + + False + +
+
- - - Identifies the configurable attributes of the module. This table is - not merged into the database. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Name of the configurable item. This name is referenced in the formatting template in the Value column of the ModuleSubstitution table. - True - - - format - msi:MSMModuleConfigurationFormat - Specifies the format of the data being changed - - text - key - integer - bitfield - - - True - - - type - string - Specifies the type for the data being changed. This type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this depend on the value in the Format attribute. - False - - - contextdata - string - Specifies a semantic context for the requested data. The type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this column depend on the values in the Format and Type attributes. - False - - - defaultvalue - string - Specifies a default value for the item in this record if the merge tool declines to provide a value. This value must have the format, type, and context of the item. If this is a "Key" format item, the foreign key must be a valid key into the tables of the module. Null may be a valid value for this column depending on the item. For "Key" format items, this value is in CMSM special format. For all other types, the value is treated literally.
Module authors must ensure that the module is valid in its default state. This ensures that versions of Mergemod.dll earlier than version 2.0 can still use the module in its default state.
- False -
- - attr - int - Bit field containing attributes for this configurable item. Null is equivalent to 0. - - - Value - Description - - - 1 - This attribute only applies to records that list a foreign key to a module table in their DefaultValue field. - - - 2 - When this attribute is set, null is not a valid response for this item. This attribute has no effect for Integer Format Types or Bitfield Format Types. - - - - False - - - displayname - string - Provides a short description of this item that the authoring tool may use in the user interface. This column may not be localized. Set this column to null to have the module is request that the authoring tool not expose this property in the UI. - False - - - description - string - Provides a description of this item that the authoring tool may use in UI elements. This string may be localized by the module's language transform. - False - - - helplocation - string - Provides either the name of a help file (without the .chm extension) or a semicolon delimited list of help namespaces. This can be ommitted if no help is available. - False - - - helpkeyword - string - Provides a keyword into the help file or namespace from the HelpLocation column. The interpretation of this keyword depends on the HelpLocation attribute. - False - -
-
+ + + Identifies the configurable attributes of the module. This table is + not merged into the database. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the configurable item. This name is referenced in the formatting template in the Value column of the ModuleSubstitution table. + True + + + format + msi:MSMModuleConfigurationFormat + Specifies the format of the data being changed + + text + key + integer + bitfield + + + True + + + type + string + Specifies the type for the data being changed. This type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this depend on the value in the Format attribute. + False + + + contextdata + string + Specifies a semantic context for the requested data. The type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this column depend on the values in the Format and Type attributes. + False + + + defaultvalue + string + Specifies a default value for the item in this record if the merge tool declines to provide a value. This value must have the format, type, and context of the item. If this is a "Key" format item, the foreign key must be a valid key into the tables of the module. Null may be a valid value for this column depending on the item. For "Key" format items, this value is in CMSM special format. For all other types, the value is treated literally.
Module authors must ensure that the module is valid in its default state. This ensures that versions of Mergemod.dll earlier than version 2.0 can still use the module in its default state.
+ False +
+ + attr + int + Bit field containing attributes for this configurable item. Null is equivalent to 0. + + + Value + Description + + + 1 + This attribute only applies to records that list a foreign key to a module table in their DefaultValue field. + + + 2 + When this attribute is set, null is not a valid response for this item. This attribute has no effect for Integer Format Types or Bitfield Format Types. + + + + False + + + displayname + string + Provides a short description of this item that the authoring tool may use in the user interface. This column may not be localized. Set this column to null to have the module is request that the authoring tool not expose this property in the UI. + False + + + description + string + Provides a description of this item that the authoring tool may use in UI elements. This string may be localized by the module's language transform. + False + + + helplocation + string + Provides either the name of a help file (without the .chm extension) or a semicolon delimited list of help namespaces. This can be ommitted if no help is available. + False + + + helpkeyword + string + Provides a keyword into the help file or namespace from the HelpLocation column. The interpretation of this keyword depends on the HelpLocation attribute. + False + +
+
- - Maintains a forward reference to a .tlb file - in the same directory as an assembly .dll - that has been registered for COM interop. - + + Maintains a forward reference to a .tlb file + in the same directory as an assembly .dll + that has been registered for COM interop. + @@ -6226,106 +6299,106 @@ The name of the Assembly's component. - - Retrieves the name of the Assembly's component. - - The Assembly's component Name. + + Retrieves the name of the Assembly's component. + + The Assembly's component Name. - - Retrieves the typelibrary filename. - - The typelibrary filename. + + Retrieves the typelibrary filename. + + The typelibrary filename. - - Retrieves the typelibrary id. - - The typelibrary id. + + Retrieves the typelibrary id. + + The typelibrary id. - - Retrieves the name of the assembly. - - The name of the assembly. + + Retrieves the name of the assembly. + + The name of the assembly. - - Retrieves the feature containing the typelibrary's file. - - The feature containing the typelibrary's file. + + Retrieves the feature containing the typelibrary's file. + + The feature containing the typelibrary's file. - - A task that generates a summary HTML - from a set of NUnit xml report files. - - - - This task can generate a combined HTML report out of a set of NUnit - result files generated using the XML Result Formatter. - - - All the properties defined in the current project will be passed - down to the XSLT file as template parameters, so you can access - properties such as nant.project.name, nant.version, etc. - - - - - - - - - - ]]> - - + + A task that generates a summary HTML + from a set of NUnit xml report files. + + + + This task can generate a combined HTML report out of a set of NUnit + result files generated using the XML Result Formatter. + + + All the properties defined in the current project will be passed + down to the XSLT file as template parameters, so you can access + properties such as nant.project.name, nant.version, etc. + + + + + + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Load a stylesheet from the assemblies resource stream. - - File name of the file to extract. + + Load a stylesheet from the assemblies resource stream. + + File name of the file to extract. - - Load a stylesheet from the file system. - - The XSLT file to load. + + Load a stylesheet from the file system. + + The XSLT file to load. - - Initializes the XmlDocument instance - used to summarize the test results - - + + Initializes the XmlDocument instance + used to summarize the test results + + - - Builds an XsltArgumentList with all - the properties defined in the - current project as XSLT parameters. - - + + Builds an XsltArgumentList with all + the properties defined in the + current project as XSLT parameters. + + - - Run the transform and output to filename - - - + + Run the transform and output to filename + + + @@ -6334,30 +6407,30 @@ - - The output language. - + + The output language. + - - Open all description method. Default to "false". - + + Open all description method. Default to "false". + - - The directory where the files resulting from the transformation - should be written to. The default is the project's base directory. - + + The directory where the files resulting from the transformation + should be written to. The default is the project's base directory. + - - Set of XML files to use as input - + + Set of XML files to use as input + - - Set of summary XML files to use as input. - + + Set of summary XML files to use as input. + @@ -6366,43 +6439,43 @@ - - Custom XmlResolver used to load the - XSLT files out of this assembly resources. - + + Custom XmlResolver used to load the + XSLT files out of this assembly resources. + - - Loads the specified file from our internal resources if its there - - - - - + + Loads the specified file from our internal resources if its there + + + + + - - Open file(s) in a client workspace for addition to the depot. - - - - Add all cs files under the given directory into the "new" changelist - (will be created if it doesn't already exist). - - - - ]]> - - - - Add Test.txt into the default changelist. - - - ]]> - - + + Open file(s) in a client workspace for addition to the depot. + + + + Add all cs files under the given directory into the "new" changelist + (will be created if it doesn't already exist). + + + + ]]> + + + + Add Test.txt into the default changelist. + + + ]]> + + @@ -6421,76 +6494,76 @@ - - Execute the perforce command assembled by subclasses. - + + Execute the perforce command assembled by subclasses. + - - The p4 server and port to connect to. The default is "perforce:1666". - + + The p4 server and port to connect to. The default is "perforce:1666". + - - The p4 client spec to use. The default is the current client. - + + The p4 client spec to use. The default is the current client. + - - The p4 username. The default is the current user. - + + The p4 username. The default is the current user. + - - The client, branch or label view to operate upon. The default is - "//...". - + + The client, branch or label view to operate upon. The default is + "//...". + - - Prepends a descriptive field (for example, text:, info:, error:, exit:) - to each line of output produced by a Perforce command. This is most - often used when scripting. The default is . - + + Prepends a descriptive field (for example, text:, info:, error:, exit:) + to each line of output produced by a Perforce command. This is most + often used when scripting. The default is . + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Override the ExeName paramater for p4.exe - + + Override the ExeName paramater for p4.exe + - - Derived classes should override this to provide command-specific - commandline arguments. - + + Derived classes should override this to provide command-specific + commandline arguments. + - - Build the command string for this particular command. - - - The command string for this particular command. - + + Build the command string for this particular command. + + + The command string for this particular command. + - - File(s) to add. File name can contain wildcard characters. (Note: - this is not using p4 wildcard syntax, but the OS wildcards). - + + File(s) to add. File name can contain wildcard characters. (Note: + this is not using p4 wildcard syntax, but the OS wildcards). + - - Changelist that files will be added into. Changelist will be created - if not already present. - + + Changelist that files will be added into. Changelist will be created + if not already present. + @@ -6499,906 +6572,906 @@ - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Create or delete a changelist specification. - - - Create a new changelist called "mynewchange". - - - ]]> - - - - Delete the changelist called "mynewchange". - - - ]]> - - + + Create or delete a changelist specification. + + + Create a new changelist called "mynewchange". + + + ]]> + + + + Delete the changelist called "mynewchange". + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to create or delete. - + + Changelist to create or delete. + - - If causes passed in changelist to be - deleted. The default is . - + + If causes passed in changelist to be + deleted. The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Add/modify/delete a client spec in perforce. - - - - Add a client (modify if already present and have sufficient rights). - - - - ]]> - - - - Delete a client. - - - ]]> - - + + Add/modify/delete a client spec in perforce. + + + + Add a client (modify if already present and have sufficient rights). + + + + ]]> + + + + Delete a client. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Name of client to create/delete. - + + Name of client to create/delete. + - - Root path for client spec. - + + Root path for client spec. + - - Delete the named client. The default is . - + + Delete the named client. The default is . + - - Force a delete even if files are open. The default is - . - + + Force a delete even if files are open. The default is + . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Open file(s) in a client workspace for deletion from the depot. - - - - Mark all cs files under the give view for deletion and place them in - the "Deleting" changelist. - - - - ]]> - - + + Open file(s) in a client workspace for deletion from the depot. + + + + Mark all cs files under the give view for deletion and place them in + the "Deleting" changelist. + + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to place the marked for deletion item into. - + + Changelist to place the marked for deletion item into. + - - The client, branch or label view to operate upon. - + + The client, branch or label view to operate upon. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Opens file(s) in a client workspace for edit. - - - - Open all files in the ProjectX Test folder for edit, and place into - the default changelist. - - - - ]]> - - - - - Open all *.txt files in the ProjectX Test folder for edit, and place - into the "testing" changelist. - - - - ]]> - - + + Opens file(s) in a client workspace for edit. + + + + Open all files in the ProjectX Test folder for edit, and place into + the default changelist. + + + + ]]> + + + + + Open all *.txt files in the ProjectX Test folder for edit, and place + into the "testing" changelist. + + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to place the opened files into. - + + Changelist to place the opened files into. + - - File Type settings. - + + File Type settings. + - - The client, branch or label view to operate upon. - + + The client, branch or label view to operate upon. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Returns information from the "p4 info" command back into variables for - use within the build process. - - - Fill the variables using the task. - - - - ]]> - - + + Returns information from the "p4 info" command back into variables for + use within the build process. + + + Fill the variables using the task. + + + + ]]> + + - - The name of the property to store the p4 user name in. - + + The name of the property to store the p4 user name in. + - - The name of the property to store the p4 client name in. - + + The name of the property to store the p4 client name in. + - - The name of the property to store the p4 host name in. - + + The name of the property to store the p4 host name in. + - - The name of the property to store the p4 client root in. - + + The name of the property to store the p4 client root in. + - - Create or edit a label specification and its view. - - - Create a new label called "SDK_V1.2". - - - ]]> - - - - Delete the previously created label. - - - ]]> - - + + Create or edit a label specification and its view. + + + Create a new label called "SDK_V1.2". + + + ]]> + + + + Delete the previously created label. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Name of label to create/delete. - + + Name of label to create/delete. + - - Delete the named label. The default is . - + + Delete the named label. The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Synchronize a label with the contents of the current client workspace. - - - Apply a previously created label to the specified view. - - - ]]> - - + + Synchronize a label with the contents of the current client workspace. + + + Apply a previously created label to the specified view. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Name of the label to sync the specified or default view with. - + + Name of the label to sync the specified or default view with. + - - Delete the view defined in the label, or matching the input view - from the label. The default is . - + + Delete the view defined in the label, or matching the input view + from the label. The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Fetch a specific file from a Perforce depot without needing a clientspec - to map it. - - - - - - ]]> - - + + Fetch a specific file from a Perforce depot without needing a clientspec + to map it. + + + + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - The depot or local filename (including optional path) of the file - to fetch. - + + The depot or local filename (including optional path) of the file + to fetch. + - - The local filename to write the fetched file to. - + + The local filename to write the fetched file to. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Move opened files between changelists or change the files’ type. - - - This task has two different but related uses: - Moving opened files between changelists (default or named). - Changing the type of an opened file. - - - - Move the specified files matching the view into the "New" changelist. - - - - ]]> - - - - - Modify the specified files matching the view to the given file type. - The change won't affect the repository until submitted. - - - - ]]> - - + + Move opened files between changelists or change the files’ type. + + + This task has two different but related uses: + Moving opened files between changelists (default or named). + Changing the type of an opened file. + + + + Move the specified files matching the view into the "New" changelist. + + + + ]]> + + + + + Modify the specified files matching the view to the given file type. + The change won't affect the repository until submitted. + + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - The client, branch or label view to operate upon. - + + The client, branch or label view to operate upon. + - - Changelist to place the reopened files into. - + + Changelist to place the reopened files into. + - - File Type settings. - + + File Type settings. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Discard changes made to open files. - - - Revert all txt files in a given changelist. - - - ]]> - - - - - Revert all unchanged files opened in the given changelist. - - - - ]]> - - - - Revert all unchanged files opened in any changelist. - - - ]]> - - + + Discard changes made to open files. + + + Revert all txt files in a given changelist. + + + ]]> + + + + + Revert all unchanged files opened in the given changelist. + + + + ]]> + + + + Revert all unchanged files opened in any changelist. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to perform the revert action on. optional. - + + Changelist to perform the revert action on. optional. + - - Revert all unchanged or missing files from the changelist. default is false. optional. - + + Revert all unchanged or missing files from the changelist. default is false. optional. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Set registry variables that perforce uses. - - - Note: the environment variables that p4 uses will be set, but will not - be validated. - - - Modify any of the three variables (at least one required). - - - ]]> - - + + Set registry variables that perforce uses. + + + Note: the environment variables that p4 uses will be set, but will not + be validated. + + + Modify any of the three variables (at least one required). + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Send changes made to open files to the depot. - - - - Submit changelist "Temp", but first revert all unchanged files in the - changelist. - - - - ]]> - - - - Submit changelist, but leave the files open afterwards. - - - ]]> - - + + Send changes made to open files to the depot. + + + + Submit changelist "Temp", but first revert all unchanged files in the + changelist. + + + + ]]> + + + + Submit changelist, but leave the files open afterwards. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to submit. - + + Changelist to submit. + - - Keep the files open after submitting. The default is - . - + + Keep the files open after submitting. The default is + . + - - Revert all unchanged or missing files from the changelist. - The default is . - + + Revert all unchanged or missing files from the changelist. + The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Synchronize client space to a Perforce depot view. - - - - Sync to head using P4USER, P4PORT and P4CLIENT settings specified. - - - - ]]> - - - - Sync to head using default p4 environment variables. - - - ]]> - - - - Force a re-sync to head, refreshing all files. - - - ]]> - - - - Sync to a label. - - - ]]> - - + + Synchronize client space to a Perforce depot view. + + + + Sync to head using P4USER, P4PORT and P4CLIENT settings specified. + + + + ]]> + + + + Sync to head using default p4 environment variables. + + + ]]> + + + + Force a re-sync to head, refreshing all files. + + + ]]> + + + + Sync to a label. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - Label to sync client to; optional. - + Label to sync client to; optional. + - - Force a refresh of files. The default is . - + + Force a refresh of files. The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Static helper class for Perforce tasks. - + + Static helper class for Perforce tasks. + - - ask p4 for the user name - - + + ask p4 for the user name + + - - ask p4 for the client name - - + + ask p4 for the client name + + - - Get a changelist number based on on its name - - - - - - + + Get a changelist number based on on its name + + + + + + - - Get a changelist number based on on its name - - - - - + + Get a changelist number based on on its name + + + + + - - Create a new label - - - - + + Create a new label + + + + - - Create a new Client - - - - - + + Create a new Client + + + + + - - Create a new changelist - - - - Description of Changelist - + + Create a new changelist + + + + Description of Changelist + - - call the p4 process to - - - + + call the p4 process to + + + - - call the p4 process to - - - + + call the p4 process to + + + - - Execute a process and return its ourput - - - - - + + Execute a process and return its ourput + + + + + - - Execute a process and return its ourput - - - - - - + + Execute a process and return its ourput + + + + + + - - Execute a process by name - - - - - + + Execute a process by name + + + + + - - Adds files to a PVCS repository. - - - - This task uses the addfiles PCLI command to add files to a PVCS repository. - - - - - Adds File1.txt and File2.txt to the root level of the - project database specified by the project-database property. - - - - - - - - - ]]> - - - - - Adds File1.txt and File2.txt to the folder project - of the project database specified by the project-database - property. - - - - - - - - - ]]> - - - - - Adds another_file.txt and all files and folders at and below - C:\Data to the project database specified by the project-database - property. - - - - - - - - - ]]> - - - - - Adds all files at and below C:\Data\ to the project database specified by the project-database - property. Workfiles will be copied to the workfile location and will overwrite any existing files (as - dictated by the copymode attribute). The relevant revisions will be locked in PVCS. Added files - will be assigned the SYSTEST promotion group. - - - - - - - - ]]> - - + + Adds files to a PVCS repository. + + + + This task uses the addfiles PCLI command to add files to a PVCS repository. + + + + + Adds File1.txt and File2.txt to the root level of the + project database specified by the project-database property. + + + + + + + + + ]]> + + + + + Adds File1.txt and File2.txt to the folder project + of the project database specified by the project-database + property. + + + + + + + + + ]]> + + + + + Adds another_file.txt and all files and folders at and below + C:\Data to the project database specified by the project-database + property. + + + + + + + + + ]]> + + + + + Adds all files at and below C:\Data\ to the project database specified by the project-database + property. Workfiles will be copied to the workfile location and will overwrite any existing files (as + dictated by the copymode attribute). The relevant revisions will be locked in PVCS. Added files + will be assigned the SYSTEST promotion group. + + + + + + + + ]]> + + - - Base class for all PVCS project database tasks that operate against one or more entities. - + + Base class for all PVCS project database tasks that operate against one or more entities. + - - A base class for PVCS tasks that deal with project databases. - - - - This class can be used as a base class for PVCS tasks that operate against a project database. It provides - common attributes and functionality for such tasks. - - + + A base class for PVCS tasks that deal with project databases. + + + + This class can be used as a base class for PVCS tasks that operate against a project database. It provides + common attributes and functionality for such tasks. + + - - Base class functionality for all PVCS tasks. - + + Base class functionality for all PVCS tasks. + - - This is the PCLI process that is run by this task. - + + This is the PCLI process that is run by this task. + - - Starts the process that is wrapped by this PVCS task. - - - Provided only to seal the implementation of StartProcess(). - - The process that was started. + + Starts the process that is wrapped by this PVCS task. + + + Provided only to seal the implementation of StartProcess(). + + The process that was started. - - Executes the task. - - - Provided only to seal the implementation of ExecuteTask(). - + + Executes the task. + + + Provided only to seal the implementation of ExecuteTask(). + - - Prepares the process wrapped by this task for execution. - - The process to prepare for execution. + + Prepares the process wrapped by this task for execution. + + The process to prepare for execution. - - Allows tasks to add their task-specific arguments to the collection of arguments to be passed to the - PVCS command-line tool. - - The collection of arguments. + + Allows tasks to add their task-specific arguments to the collection of arguments to be passed to the + PVCS command-line tool. + + The collection of arguments. - - Constructs the program arguments that should be used when executing the wrapped PVCS process. - - A string containing the program arguments. + + Constructs the program arguments that should be used when executing the wrapped PVCS process. + + A string containing the program arguments. - - Gets or sets the location of the PVCS binary command-line tools. - - - - Generally, the PVCS command-line tools will be available on the current path. However, if this is not - the case then this property allows an exact location to be specified. If this property is not set, the - task will assume that the PVCS binaries are available on the current path. - - + + Gets or sets the location of the PVCS binary command-line tools. + + + + Generally, the PVCS command-line tools will be available on the current path. However, if this is not + the case then this property allows an exact location to be specified. If this property is not set, the + task will assume that the PVCS binaries are available on the current path. + + - - Gets or sets the process that is run as a result of running this task. - + + Gets or sets the process that is run as a result of running this task. + - - Gets the program arguments with which to run the wrapped PVCS process. - + + Gets the program arguments with which to run the wrapped PVCS process. + - - Gets the executable name for the command-line tool to run for the PVCS task. - + + Gets the executable name for the command-line tool to run for the PVCS task. + - - Gets the PCLI command name that corresponds to the operation the task performs. - - - - By default, this property will return the name of the task minus the starting "pvcs". Subclasses need - only override this property if there is a mismatch between the task name and the PCLI command name. - - + + Gets the PCLI command name that corresponds to the operation the task performs. + + + + By default, this property will return the name of the task minus the starting "pvcs". Subclasses need + only override this property if there is a mismatch between the task name and the PCLI command name. + + @@ -7428,86 +7501,86 @@ - - Gets or sets a value indicating whether the operation should include subprojects. - - - - This is equivalent to the -z command-line option. - - + + Gets or sets a value indicating whether the operation should include subprojects. + + + + This is equivalent to the -z command-line option. + + - - Gets a value indicating whether the specific task implementation supports the includesubprojects - task attribute. If not, an exception will be thrown if an attempt is made to set the attribute. - + + Gets a value indicating whether the specific task implementation supports the includesubprojects + task attribute. If not, an exception will be thrown if an attempt is made to set the attribute. + - - Gets or sets the password to use when connecting to the project database. - - - - This is equivalent to the password part of the -id command-line option. - - + + Gets or sets the password to use when connecting to the project database. + + + + This is equivalent to the password part of the -id command-line option. + + - - Gets or sets the user ID to use when connecting to the project database. - - - - This is equivalent to the user ID part of the -id command-line option. - - + + Gets or sets the user ID to use when connecting to the project database. + + + + This is equivalent to the user ID part of the -id command-line option. + + - - Gets or sets the workspace to use when connecting to the project database. - - - - This is equivalent to the -sp command-line option. - - + + Gets or sets the workspace to use when connecting to the project database. + + + + This is equivalent to the -sp command-line option. + + - - Gets or sets the project database to utilize during the operation. - - - - This is equivalent to the -pr command-line option. - - + + Gets or sets the project database to utilize during the operation. + + + + This is equivalent to the -pr command-line option. + + - - Gets or sets the project path to utilize during the operation. - - - - This is equivalent to the -pp command-line option. - - + + Gets or sets the project path to utilize during the operation. + + + + This is equivalent to the -pp command-line option. + + - - Constructs and initializes an instance of PVCSMultipleEntityTask. - + + Constructs and initializes an instance of PVCSMultipleEntityTask. + - - Gets or sets the entities involved in the operation. - + + Gets or sets the entities involved in the operation. + @@ -7534,89 +7607,89 @@ - - Constructs and initializes an instance of PVCSAddFilesTask. - + + Constructs and initializes an instance of PVCSAddFilesTask. + - - Gets or sets the archive description for versioned files. - - - - This is equivalent to the -t parameter to the pcli addfiles command. - - + + Gets or sets the archive description for versioned files. + + + + This is equivalent to the -t parameter to the pcli addfiles command. + + - - Gets or sets the copy mode for the operation. - + + Gets or sets the copy mode for the operation. + - - Gets or sets a value indicating whether workfiles will be deleted after adding them to PVCS. - - - - This is equivalent to the -d parameter to the pcli addfiles command. - - + + Gets or sets a value indicating whether workfiles will be deleted after adding them to PVCS. + + + + This is equivalent to the -d parameter to the pcli addfiles command. + + - - Gets or sets the description for versioned files. - - - - This is equivalent to the -m parameter to the pcli addfiles command. - - + + Gets or sets the description for versioned files. + + + + This is equivalent to the -m parameter to the pcli addfiles command. + + - - Gets or sets a value indicating whether versioned files should be locked after being added to PVCS. - - - - This is equivalent to the -l parameter to the pcli addfiles command. - - + + Gets or sets a value indicating whether versioned files should be locked after being added to PVCS. + + + + This is equivalent to the -l parameter to the pcli addfiles command. + + - - Gets or sets the promotion group to which added files will be assigned. Setting this attribute to an - empty string indicates the versioned files will not be assigned to any promotion group. - - - - This is equivalent to the -g parameter to the pcli addfiles command. - - + + Gets or sets the promotion group to which added files will be assigned. Setting this attribute to an + empty string indicates the versioned files will not be assigned to any promotion group. + + + + This is equivalent to the -g parameter to the pcli addfiles command. + + - - Gets or sets a value indicating whether workfiles shouldn't be added if they already exist in the PVCS - repository. - - - - This is equivalent to the -qw parameter to the pcli addfiles command. - - + + Gets or sets a value indicating whether workfiles shouldn't be added if they already exist in the PVCS + repository. + + + + This is equivalent to the -qw parameter to the pcli addfiles command. + + - - Gets or sets the version label to assign to the added versioned files. - - - - This is equivalent to the -v parameter to the pcli addfiles command. - - + + Gets or sets the version label to assign to the added versioned files. + + + + This is equivalent to the -v parameter to the pcli addfiles command. + + @@ -7624,52 +7697,52 @@ - - Indicates the default copy mode should be used. - + + Indicates the default copy mode should be used. + - - Indicates that workfiles should be copied to the project workfile location is it doesn't already exist. - + + Indicates that workfiles should be copied to the project workfile location is it doesn't already exist. + - - Indicates that workfiles should be copied to the project workfile location and overwrite any existing - workfile. - + + Indicates that workfiles should be copied to the project workfile location and overwrite any existing + workfile. + - - Adds a user to a PVCS project or project database. - - - - This task uses the adduser PCLI command to add the user to the PVCS project or database. - - - - - Adds a user with name kb and password *Muse* to the project database specified by the - project-database property. - - - - ]]> - - - - - Adds a user with name kb and password *Muse* to the project database specified by the - project-database property. The user's logon will expire on the 26th of October, 2005. - - - - ]]> - - + + Adds a user to a PVCS project or project database. + + + + This task uses the adduser PCLI command to add the user to the PVCS project or database. + + + + + Adds a user with name kb and password *Muse* to the project database specified by the + project-database property. + + + + ]]> + + + + + Adds a user with name kb and password *Muse* to the project database specified by the + project-database property. The user's logon will expire on the 26th of October, 2005. + + + + ]]> + + @@ -7681,71 +7754,71 @@ - - Constructs and initializes an instance of PVCSAddUserTask. - + + Constructs and initializes an instance of PVCSAddUserTask. + - - Gets or sets the expiration date for the new user. - - - - This is equivalent to the -e parameter to the pcli adduser command. - - + + Gets or sets the expiration date for the new user. + + + + This is equivalent to the -e parameter to the pcli adduser command. + + - - Gets or sets the password for the new user. - + + Gets or sets the password for the new user. + - - Gets or sets the user name for the new user. - + + Gets or sets the user name for the new user. + - - Assigns a promotion group to versioned files. - - - - This task uses the assigngroup PCLI command to assign the group to versioned files. - - - - - Assigns the SYSTEST promotion group to all entities with the DEV promotion group in the - folder project. - - - - ]]> - - - - - Assigns the SYSTEST promotion group to revision 1.2 of all entities. - - - - ]]> - - + + Assigns a promotion group to versioned files. + + + + This task uses the assigngroup PCLI command to assign the group to versioned files. + + + + + Assigns the SYSTEST promotion group to all entities with the DEV promotion group in the + folder project. + + + + ]]> + + + + + Assigns the SYSTEST promotion group to revision 1.2 of all entities. + + + + ]]> + + - - Base class for all PVCS project database tasks that operate against a single entity. - + + Base class for all PVCS project database tasks that operate against a single entity. + @@ -7754,9 +7827,9 @@ - - Gets or sets the entity involved in the operation. - + + Gets or sets the entity involved in the operation. + @@ -7771,85 +7844,85 @@ - - Constructs and initializes an instance of PVCSAssignGroupTask. - + + Constructs and initializes an instance of PVCSAssignGroupTask. + - - Gets or sets the promotion group to assign to the versioned files. - - - - This is equivalent to the -g parameter to the pcli assigngroup command. - - + + Gets or sets the promotion group to assign to the versioned files. + + + + This is equivalent to the -g parameter to the pcli assigngroup command. + + - - Gets or sets the promotion group for the versioned files to be assigned the promotion group. - - - - This is equivalent to the -r parameter to the pcli assigngroup command. - - + + Gets or sets the promotion group for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + - - Gets or sets the revision for the versioned files to be assigned the promotion group. - - - - This is equivalent to the -r parameter to the pcli assigngroup command. - - - If this property has not yet been set, it will return Double.MaxValue. - - + + Gets or sets the revision for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + + If this property has not yet been set, it will return Double.MaxValue. + + - - Gets or sets the version label for the versioned files to be assigned the promotion group. - - - - This is equivalent to the -r parameter to the pcli assigngroup command. - - + + Gets or sets the version label for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + - - Changes the promotion group for specified versioned files. - - - - This task uses the changegroup PCLI command to change the group for versioned files. - - - - - Changes the promotion group for file.txt from SYSTEST to DEV. - - - - ]]> - - - - - Changes the promotion group for all files from DEV to PROD. - - - - ]]> - - + + Changes the promotion group for specified versioned files. + + + + This task uses the changegroup PCLI command to change the group for versioned files. + + + + + Changes the promotion group for file.txt from SYSTEST to DEV. + + + + ]]> + + + + + Changes the promotion group for all files from DEV to PROD. + + + + ]]> + + @@ -7861,24 +7934,24 @@ - - Gets or sets the promotion group to change from. - - - - This is equivalent to the -gf parameter to the pcli changegroup command. - - + + Gets or sets the promotion group to change from. + + + + This is equivalent to the -gf parameter to the pcli changegroup command. + + - - Gets or sets the promotion group to change to. - - - - This is equivalent to the -gt parameter to the pcli changegroup command. - - + + Gets or sets the promotion group to change to. + + + + This is equivalent to the -gt parameter to the pcli changegroup command. + + @@ -7930,48 +8003,48 @@ The value for the command, or null if no value applies. - - Constructs an instance of PVCSCommandArgument with the specified information. - - The command string. - The value for the command, or null if no value applies. - The position for the command. + + Constructs an instance of PVCSCommandArgument with the specified information. + + The command string. + The value for the command, or null if no value applies. + The position for the command. - - Compares two PVCS command arguments based on their position. - - The PVCS command argument to compare to this. - - Less than zero if this instance is less than . - Zero if this instance is equal to . - Greater than zero if this instance is greater than . - + + Compares two PVCS command arguments based on their position. + + The PVCS command argument to compare to this. + + Less than zero if this instance is less than . + Zero if this instance is equal to . + Greater than zero if this instance is greater than . + - - Converts this command argument to its string representation. - - The string representation of this command argument. + + Converts this command argument to its string representation. + + The string representation of this command argument. - - Escapes a string command line argument. - - - - This method attempts to deal with the mess of keeping both PCLI and the shell happy with string - arguments. It's not perfect yet (try an argument with several backslashes before a double quote). It - would be nice to have a regex to handle this but I wouldn't even bother until this logic is spot on. - - - The string argument to escape. - The escaped string argument. + + Escapes a string command line argument. + + + + This method attempts to deal with the mess of keeping both PCLI and the shell happy with string + arguments. It's not perfect yet (try an argument with several backslashes before a double quote). It + would be nice to have a regex to handle this but I wouldn't even bother until this logic is spot on. + + + The string argument to escape. + The escaped string argument. - - Gets a string that contains the command to pass to PVCS. - + + Gets a string that contains the command to pass to PVCS. + @@ -7984,9 +8057,9 @@ - - Gets the position for the command. - + + Gets the position for the command. + @@ -7997,35 +8070,35 @@ - - Adds a new command argument to this collection with the specified information. - - The command string for the new command. + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. - - Adds a new command argument to this collection with the specified information. - - The command string for the new command. - - The command value for the new command, or null if no value applies. - + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. + + The command value for the new command, or null if no value applies. + - - Adds a new command argument to this collection with the specified information. - - The command string for the new command. - - The command value for the new command, or null if no value applies. - - The position for the new command. + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. + + The command value for the new command, or null if no value applies. + + The position for the new command. - - Adds all specified command arguments to this collection. - - The collection of command arguments to add. + + Adds all specified command arguments to this collection. + + The collection of command arguments to add. @@ -8081,15 +8154,15 @@ - - Arguments that should appear before the PCLI command argument. This is useful for arguments to PCLI - itself (as opposed to the PCLI command). - + + Arguments that should appear before the PCLI command argument. This is useful for arguments to PCLI + itself (as opposed to the PCLI command). + - - PCLI command arguments that should appear before other PCLI command arguments. - + + PCLI command arguments that should appear before other PCLI command arguments. + @@ -8098,30 +8171,30 @@ - - PCLI command arguments that should appear after other PCLI command arguments. - + + PCLI command arguments that should appear after other PCLI command arguments. + - - Creates a project in a PVCS repository. - - - - This task uses the createproject PCLI command to create the project in the PVCS repository. - - - - - Creates a project called Songs in the project database specified by the project-database - property. The workfile location for the project is set to C:\Work\Songs. - - - - ]]> - - + + Creates a project in a PVCS repository. + + + + This task uses the createproject PCLI command to create the project in the PVCS repository. + + + + + Creates a project called Songs in the project database specified by the project-database + property. The workfile location for the project is set to C:\Work\Songs. + + + + ]]> + + @@ -8130,49 +8203,49 @@ - - Gets or sets the workfile location for the created project. - - - - This is equivalent to the -w parameter to the pcli createproject command. - - + + Gets or sets the workfile location for the created project. + + + + This is equivalent to the -w parameter to the pcli createproject command. + + - - Removes a specified promotion group from versioned files. - - - - This task uses the deletegroup PCLI command to remove the promotion group from the versioned files. - - - - - Removes the DEV promotion group from App.ico in the project database specified by the - project-database property. - - - - ]]> - - - - - Removes the DEV promotion group all files in the project database specified by the - project-database property. - - - - ]]> - - + + Removes a specified promotion group from versioned files. + + + + This task uses the deletegroup PCLI command to remove the promotion group from the versioned files. + + + + + Removes the DEV promotion group from App.ico in the project database specified by the + project-database property. + + + + ]]> + + + + + Removes the DEV promotion group all files in the project database specified by the + project-database property. + + + + ]]> + + @@ -8181,55 +8254,55 @@ - - Gets or sets the promotion group to delete. - - - - This is equivalent to the -g parameter to the pcli deletegroup command. - - + + Gets or sets the promotion group to delete. + + + + This is equivalent to the -g parameter to the pcli deletegroup command. + + - - Removes a label from specified versioned files or projects. - - - - This task uses the deletelabel PCLI command to remove the version label from the versioned files. - - - - - Removes the label called My Label from the versioned file called App.ico from the project - database specified by the project-database property. - - - - - - - - ]]> - - - - - Removes the label called My Label from all files at and below both folder1 and folder2 - in the project database specified by the project-database property. - - - - - - - - - ]]> - - + + Removes a label from specified versioned files or projects. + + + + This task uses the deletelabel PCLI command to remove the version label from the versioned files. + + + + + Removes the label called My Label from the versioned file called App.ico from the project + database specified by the project-database property. + + + + + + + + ]]> + + + + + Removes the label called My Label from all files at and below both folder1 and folder2 + in the project database specified by the project-database property. + + + + + + + + + ]]> + + @@ -8238,85 +8311,85 @@ - - Gets or sets the version label to remove. - - - - This is equivalent to the -v parameter to the pcli deletelabel command. - - + + Gets or sets the version label to remove. + + + + This is equivalent to the -v parameter to the pcli deletelabel command. + + - - Deletes folder, projects, versioned items and workspaces in a PVCS repository. - - - - This task uses the delete PCLI command to delete the items. - - - - - Deletes the versioned file called App.ico from the project database specified by the - project-database property. - - - - - - - - ]]> - - - - - Deletes the files called file1.txt and file2.txt from the project called folder in the - project database specified by the project-database property. - - - - - - - - - ]]> - - + + Deletes folder, projects, versioned items and workspaces in a PVCS repository. + + + + This task uses the delete PCLI command to delete the items. + + + + + Deletes the versioned file called App.ico from the project database specified by the + project-database property. + + + + + + + + ]]> + + + + + Deletes the files called file1.txt and file2.txt from the project called folder in the + project database specified by the project-database property. + + + + + + + + + ]]> + + - - Deletes the specified users from the PVCS access control database. - - - - This task uses the deleteuser PCLI command to delete the users. - - - - - Deletes the users called kb, kv and tb from the project database specified by the - project-database property. - - - - - - - - - - ]]> - - + + Deletes the specified users from the PVCS access control database. + + + + This task uses the deleteuser PCLI command to delete the users. + + + + + Deletes the users called kb, kv and tb from the project database specified by the + project-database property. + + + + + + + + + + ]]> + + @@ -8325,59 +8398,59 @@ - - Gets files from a PVCS repository. - - - - This task uses the get PCLI command to get the versioned files from PVCS. - - - - - Gets the versioned file called App.ico from the project database specified by the - project-database property. - - - - - - - - ]]> - - - - - Gets the versioned file called App.ico from the project database specified by the - project-database property. The file is also locked. - - - - - - - - ]]> - - - - - Gets all revisions assigned the SYSTEST promotion group from the project database specified by the - project-database property. The workfiles are touched after the get operation. - - - - - - - - ]]> - - + + Gets files from a PVCS repository. + + + + This task uses the get PCLI command to get the versioned files from PVCS. + + + + + Gets the versioned file called App.ico from the project database specified by the + project-database property. + + + + + + + + ]]> + + + + + Gets the versioned file called App.ico from the project database specified by the + project-database property. The file is also locked. + + + + + + + + ]]> + + + + + Gets all revisions assigned the SYSTEST promotion group from the project database specified by the + project-database property. The workfiles are touched after the get operation. + + + + + + + + ]]> + + @@ -8413,170 +8486,170 @@ - - Constructs and initializes an instance of PVCSGetTask. - + + Constructs and initializes an instance of PVCSGetTask. + - - Gets or sets the base project path. - - - - This is equivalent to the -bp parameter to the pcli get command. - - + + Gets or sets the base project path. + + + + This is equivalent to the -bp parameter to the pcli get command. + + - - Gets or sets an alternative location for workfiles. - - - - This is equivalent to the -a parameter to the pcli get command. - - + + Gets or sets an alternative location for workfiles. + + + + This is equivalent to the -a parameter to the pcli get command. + + - - Gets or sets a value indicating whether revisions involved in the get operation should be locked. - - - - This is equivalent to the -l parameter to the pcli get command. - - + + Gets or sets a value indicating whether revisions involved in the get operation should be locked. + + + + This is equivalent to the -l parameter to the pcli get command. + + - - Gets or sets whether the workfiles should be made writable. - - - - This is equivalent to the -w parameter to the pcli get command. - - + + Gets or sets whether the workfiles should be made writable. + + + + This is equivalent to the -w parameter to the pcli get command. + + - - Gets or sets the maximum date and time of workfiles to retrieve. - - - - This is equivalent to the -d parameter to the pcli get command. - - - If this property has not yet been set, it will return DateTime.MaxValue. - - + + Gets or sets the maximum date and time of workfiles to retrieve. + + + + This is equivalent to the -d parameter to the pcli get command. + + + If this property has not yet been set, it will return DateTime.MaxValue. + + - - Gets or sets a value indicating whether the workfile location for files should be overridden. - - - - This is equivalent to the -o parameter to the pcli get command. - - + + Gets or sets a value indicating whether the workfile location for files should be overridden. + + + + This is equivalent to the -o parameter to the pcli get command. + + - - Gets or sets the promotion group to get. - - - - This is equivalent to the -g parameter to the pcli get command. - - + + Gets or sets the promotion group to get. + + + + This is equivalent to the -g parameter to the pcli get command. + + - - Gets or sets the revision to get against. - - - - This is equivalent to the -r parameter to the pcli get command. - - - If this property has not yet been set, it will return Double.MaxValue. - - + + Gets or sets the revision to get against. + + + + This is equivalent to the -r parameter to the pcli get command. + + + If this property has not yet been set, it will return Double.MaxValue. + + - - Gets or sets a value indicating whether workfiles should be touched after the get. - - - - This is equivalent to the -t parameter to the pcli get command. - - + + Gets or sets a value indicating whether workfiles should be touched after the get. + + + + This is equivalent to the -t parameter to the pcli get command. + + - - Gets or sets a value indicating whether workfiles should only be gotten if they are newer than the - current workfile. - - - - This is equivalent to the -u parameter to the pcli get command (without specifying a - date or time). - - + + Gets or sets a value indicating whether workfiles should only be gotten if they are newer than the + current workfile. + + + + This is equivalent to the -u parameter to the pcli get command (without specifying a + date or time). + + - - Gets or sets the version label to get against. - - - - This is equivalent to the -v parameter to the pcli get command. - - + + Gets or sets the version label to get against. + + + + This is equivalent to the -v parameter to the pcli get command. + + - - Assigns a version label to a revision of the specified versioned files. - - - - This task uses the label PCLI command to label the items. - - - - - Labels all files in the project database specified by the project-database property. The label - applied is Beta. - - - - - - - - ]]> - - - - - Labels revision 1.8 of App.ico as Dodgy in the project database specified by the - project-database property. - - - - - - - - ]]> - - + + Assigns a version label to a revision of the specified versioned files. + + + + This task uses the label PCLI command to label the items. + + + + + Labels all files in the project database specified by the project-database property. The label + applied is Beta. + + + + + + + + ]]> + + + + + Labels revision 1.8 of App.ico as Dodgy in the project database specified by the + project-database property. + + + + + + + + ]]> + + @@ -8588,84 +8661,84 @@ - - Constructs and initializes an instance of PVCSLabel. - + + Constructs and initializes an instance of PVCSLabel. + - - Gets or sets a value indicating whether the label should "float" to the newest revision. - - - - This is equivalent to the -f parameter to the pcli label command. - - + + Gets or sets a value indicating whether the label should "float" to the newest revision. + + + + This is equivalent to the -f parameter to the pcli label command. + + - - Gets or sets the revision to label. - - - - This is equivalent to the -r parameter to the pcli label command. - - - If this property has not yet been set, it will return Double.MaxValue. - - + + Gets or sets the revision to label. + + + + This is equivalent to the -r parameter to the pcli label command. + + + If this property has not yet been set, it will return Double.MaxValue. + + - - Gets or sets the version label to assign. - - - - This is equivalent to the -v parameter to the pcli label command. - - + + Gets or sets the version label to assign. + + + + This is equivalent to the -v parameter to the pcli label command. + + - - Locks a revision of the specified versioned files. - - - - This task uses the lock PCLI command to lock the versioned files. - - - - - Locks App.ico in the project database specified by the project-database property. - - - - - - - - ]]> - - - - - Locks all files at and below folder in the project database specified by the project-database - property. - - - - - - - - ]]> - - + + Locks a revision of the specified versioned files. + + + + This task uses the lock PCLI command to lock the versioned files. + + + + + Locks App.ico in the project database specified by the project-database property. + + + + + + + + ]]> + + + + + Locks all files at and below folder in the project database specified by the project-database + property. + + + + + + + + ]]> + + @@ -8686,111 +8759,111 @@ - - Constructs and initializes an instance of PVCSLock. - + + Constructs and initializes an instance of PVCSLock. + - - Gets or sets a value indicating whether locking files will take place if checking in those files would - result in a branch. - - - - This is equivalent to the -nb parameter to the pcli lock command. - - + + Gets or sets a value indicating whether locking files will take place if checking in those files would + result in a branch. + + + + This is equivalent to the -nb parameter to the pcli lock command. + + - - Gets or sets a value indicating whether already locked revisions will be locked. - - - - This is equivalent to the -nm parameter to the pcli lock command. - - + + Gets or sets a value indicating whether already locked revisions will be locked. + + + + This is equivalent to the -nm parameter to the pcli lock command. + + - - Gets or sets the promotion group to assign the locked revision. - - - - This is equivalent to the -g parameter to the pcli lock command. - - + + Gets or sets the promotion group to assign the locked revision. + + + + This is equivalent to the -g parameter to the pcli lock command. + + - - Gets or sets the revision to lock. - - - - This is equivalent to the -r parameter to the pcli lock command. - - - If this property has not yet been set, it will return Double.MaxValue. - - + + Gets or sets the revision to lock. + + + + This is equivalent to the -r parameter to the pcli lock command. + + + If this property has not yet been set, it will return Double.MaxValue. + + - - Gets or sets a value indicating whether revisions will be locked even if that will result in a branch - upon check in. - - - - This is equivalent to the -yb parameter to the pcli lock command. - - + + Gets or sets a value indicating whether revisions will be locked even if that will result in a branch + upon check in. + + + + This is equivalent to the -yb parameter to the pcli lock command. + + - - Gets or sets a value indicating whether revisions will be locked even if that will result in multiple - locks against the same revision. - - - - This is equivalent to the -ym parameter to the pcli lock command. - - + + Gets or sets a value indicating whether revisions will be locked even if that will result in multiple + locks against the same revision. + + + + This is equivalent to the -ym parameter to the pcli lock command. + + - - Promotes versioned files to the next promotion group. - - - - This task uses the promotegroup PCLI command to promote versioned files. - - - - - Promotes all files in the root of the project database specified by the project-database property. - The files are promoted from the DEV promotion group to the next. Promotion will not take place across - branches. - - - - ]]> - - - - - Promotes all files in the project database specified by the project-database property. The files are - promoted from the SYSTEST promotion group to the next. Promotion will take place across branches. - - - - ]]> - - + + Promotes versioned files to the next promotion group. + + + + This task uses the promotegroup PCLI command to promote versioned files. + + + + + Promotes all files in the root of the project database specified by the project-database property. + The files are promoted from the DEV promotion group to the next. Promotion will not take place across + branches. + + + + ]]> + + + + + Promotes all files in the project database specified by the project-database property. The files are + promoted from the SYSTEST promotion group to the next. Promotion will take place across branches. + + + + ]]> + + @@ -8802,83 +8875,83 @@ - - Gets or sets a value indicating whether the promotion may occur across branches. - - - - This is equivalent to the -nb and -yb parameters to the pcli promotegroup command. - - + + Gets or sets a value indicating whether the promotion may occur across branches. + + + + This is equivalent to the -nb and -yb parameters to the pcli promotegroup command. + + - - Gets or sets the promotion group to be promoted. - - - - This is equivalent to the -g parameter to the pcli promotegroup command. - - + + Gets or sets the promotion group to be promoted. + + + + This is equivalent to the -g parameter to the pcli promotegroup command. + + - - Puts files into a PVCS repository. - - - - This task uses the put PCLI command to put the files into PVCS. - - - - - Puts the file called App.ico into the project database specified by the project-database - property. The description for the change is Added more colour. - - - - - - - - ]]> - - - - - Puts all files into the project database specified by the project-database property. The description - for the changes is Major changes. Even if the workfiles have not been changed, they will result in a - new revision in PVCS. - - - - - - - - ]]> - - - - - Puts file.txt and all files in folder into the project database specified by the - project-database property. The description for the changes is Some changes. A new branch is - forcibly created via the forcebranch attribute. Leading and trailing whitespace is ignored when - determining whether the workfile has been altered. - - - - - - - - - ]]> - - + + Puts files into a PVCS repository. + + + + This task uses the put PCLI command to put the files into PVCS. + + + + + Puts the file called App.ico into the project database specified by the project-database + property. The description for the change is Added more colour. + + + + + + + + ]]> + + + + + Puts all files into the project database specified by the project-database property. The description + for the changes is Major changes. Even if the workfiles have not been changed, they will result in a + new revision in PVCS. + + + + + + + + ]]> + + + + + Puts file.txt and all files in folder into the project database specified by the + project-database property. The description for the changes is Some changes. A new branch is + forcibly created via the forcebranch attribute. Leading and trailing whitespace is ignored when + determining whether the workfile has been altered. + + + + + + + + + ]]> + + @@ -8926,42 +8999,42 @@ - - Constructs and initializes an instance of PVCSPut. - + + Constructs and initializes an instance of PVCSPut. + - - Gets or sets the base project path. - - - - This is equivalent to the -bp parameter to the pcli put command. - - + + Gets or sets the base project path. + + + + This is equivalent to the -bp parameter to the pcli put command. + + - - Gets or sets a value indicating whether unchanged workfiles should be checked in. - - - - This is equivalent to the -yf parameter to the pcli put command. - - + + Gets or sets a value indicating whether unchanged workfiles should be checked in. + + + + This is equivalent to the -yf parameter to the pcli put command. + + - - Gets or sets the description to be applied to the checked in revisions. - - - - This is equivalent to the -m parameter to the pcli put command. - - + + Gets or sets the description to be applied to the checked in revisions. + + + + This is equivalent to the -m parameter to the pcli put command. + + @@ -8975,78 +9048,78 @@ - - Gets or sets a value indicating whether a new branch will be created. - - - - This is equivalent to the -fb parameter to the pcli put command. - - + + Gets or sets a value indicating whether a new branch will be created. + + + + This is equivalent to the -fb parameter to the pcli put command. + + - - Gets or sets a value indicating whether leading and trailing spaces should be ignored when determining - whether the revision has changed. - - - - This is equivalent to the -b parameter to the pcli put command. - - + + Gets or sets a value indicating whether leading and trailing spaces should be ignored when determining + whether the revision has changed. + + + + This is equivalent to the -b parameter to the pcli put command. + + - - Gets or sets a value indicating whether the workfile should kept in its original state. - - - - This is equivalent to the -k parameter to the pcli put command. - - + + Gets or sets a value indicating whether the workfile should kept in its original state. + + + + This is equivalent to the -k parameter to the pcli put command. + + - - Gets or sets an alternative location for workfiles. - - - - This is equivalent to the -a parameter to the pcli put command. - - + + Gets or sets an alternative location for workfiles. + + + + This is equivalent to the -a parameter to the pcli put command. + + - - Gets or sets a value indicating the files should be locked after the put operation. - - - - This is equivalent to the -l parameter to the pcli put command. - - + + Gets or sets a value indicating the files should be locked after the put operation. + + + + This is equivalent to the -l parameter to the pcli put command. + + - - Gets or sets a value indicating whether the workfile location for files should be overridden. - - - - This is equivalent to the -o parameter to the pcli put command. - - + + Gets or sets a value indicating whether the workfile location for files should be overridden. + + + + This is equivalent to the -o parameter to the pcli put command. + + - - Gets or sets the promotion in use. If a promotion group is specified, this option identifies the - promotion group to which the revision is currently assigned. If no promotion group is specified (ie. - this property is set to an empty string), this option indicates that one is not identifying the - revision by promotion group. - - - - This is equivalent to the -g parameter to the pcli put command. - - + + Gets or sets the promotion in use. If a promotion group is specified, this option identifies the + promotion group to which the revision is currently assigned. If no promotion group is specified (ie. + this property is set to an empty string), this option indicates that one is not identifying the + revision by promotion group. + + + + This is equivalent to the -g parameter to the pcli put command. + + @@ -9060,75 +9133,75 @@ - - Gets or sets the revision number to use for the new revision. - - - - This is equivalent to the -r parameter to the pcli put command. - - + + Gets or sets the revision number to use for the new revision. + + + + This is equivalent to the -r parameter to the pcli put command. + + - - Gets or sets a value indicating whether the same description should be used for all versioned items. - This is true by default. - - - - This is equivalent to the -ym parameter to the pcli put command. - - + + Gets or sets a value indicating whether the same description should be used for all versioned items. + This is true by default. + + + + This is equivalent to the -ym parameter to the pcli put command. + + - - Gets or sets the version label to assign to the new revisions. - - - - This is equivalent to the -v parameter to the pcli put command. - - + + Gets or sets the version label to assign to the new revisions. + + + + This is equivalent to the -v parameter to the pcli put command. + + - - Renames a label in a PVCS repository. - - - - This task uses the renamelabel PCLI command to rename the label. - - - - - Renames the label on App.ico from Beater to Beta in the project database specified by - the project-database property. - - - - - - - - ]]> - - - - - Renames the label on all files from Alfa to Alpha in the project database specified by the - project-database property. - - - - - - - - ]]> - - + + Renames a label in a PVCS repository. + + + + This task uses the renamelabel PCLI command to rename the label. + + + + + Renames the label on App.ico from Beater to Beta in the project database specified by + the project-database property. + + + + + + + + ]]> + + + + + Renames the label on all files from Alfa to Alpha in the project database specified by the + project-database property. + + + + + + + + ]]> + + @@ -9140,63 +9213,63 @@ - - Gets or sets the existing label. - - - - This is equivalent to the -vf parameter to the pcli renamelabel command. - - + + Gets or sets the existing label. + + + + This is equivalent to the -vf parameter to the pcli renamelabel command. + + - - Gets or sets the new label. - - - - This is equivalent to the -vt parameter to the pcli renamelabel command. - - + + Gets or sets the new label. + + + + This is equivalent to the -vt parameter to the pcli renamelabel command. + + - - Unlocks revisions of versioned files in a PVCS repository. - - - - This task uses the unlock PCLI command to perform the unlock operation. - - - - - Unlocks App.ico in the project database specified by the project-database property. - - - - - - - - ]]> - - - - - Unlocks all files in the project specified by the project-database property. Locks by all users are - removed. - - - - - - - - ]]> - - + + Unlocks revisions of versioned files in a PVCS repository. + + + + This task uses the unlock PCLI command to perform the unlock operation. + + + + + Unlocks App.ico in the project database specified by the project-database property. + + + + + + + + ]]> + + + + + Unlocks all files in the project specified by the project-database property. Locks by all users are + removed. + + + + + + + + ]]> + + @@ -9208,32 +9281,32 @@ - - Constructs and initializes an instance of PVCSUnlock. - + + Constructs and initializes an instance of PVCSUnlock. + - - Gets or sets the revision number to use for the new revision. - - - - This is equivalent to the -r parameter to the pcli unlock command. - - + + Gets or sets the revision number to use for the new revision. + + + + This is equivalent to the -r parameter to the pcli unlock command. + + - - Gets or sets the unlock mode for the operation. - - - - This is equivalent to the -u parameter to the pcli unlock command. - - + + Gets or sets the unlock mode for the operation. + + + + This is equivalent to the -u parameter to the pcli unlock command. + + @@ -9247,51 +9320,51 @@ - - All locks held by the current user are removed. - + + All locks held by the current user are removed. + - - All locks held by a specified user are removed. - + + All locks held by a specified user are removed. + - - All locks held by all users are removed. - + + All locks held by all users are removed. + - - Used to add files to a Visual SourceSafe database. If the file is currently - in the SourceSafe database a message will be logged but files will continue to be added. - - - This version does not support recursive adds. Only adds in the root directory will be added to the - SourceSafe database. - - - - - - - - ]]> - + + Used to add files to a Visual SourceSafe database. If the file is currently + in the SourceSafe database a message will be logged but files will continue to be added. + + + This version does not support recursive adds. Only adds in the root directory will be added to the + SourceSafe database. + + + + + + + + ]]> + - - The base abstract class for all Visual Source Safe Tasks. - Provides the core attributes, and functionality for opening an item - in a Visual Source Safe database. - + + The base abstract class for all Visual Source Safe Tasks. + Provides the core attributes, and functionality for opening an item + in a Visual Source Safe database. + - - Opens the Source Safe database and sets the reference to the specified - item and version. - + + Opens the Source Safe database and sets the reference to the specified + item and version. + @@ -9305,20 +9378,20 @@ - - The path to the folder that contains "srcsafe.ini". - + + The path to the folder that contains "srcsafe.ini". + - - The Visual SourceSafe project or file path you wish the perform the - action on (starting with "$/"). - + + The Visual SourceSafe project or file path you wish the perform the + action on (starting with "$/"). + - - The password to use to login to the SourceSafe database. - + + The password to use to login to the SourceSafe database. + @@ -9337,220 +9410,220 @@ - - A version of the path to reference. Accepts multiple forms, - including the label, version number, or date of the version. - If omitted, the latest version is used. - + + A version of the path to reference. Accepts multiple forms, + including the label, version number, or date of the version. + If omitted, the latest version is used. + - - Main task execution method - + + Main task execution method + - - Create project hierarchy in vss - - - + + Create project hierarchy in vss + + + - - Places a comment on all files added into the SourceSafe repository. - + + Places a comment on all files added into the SourceSafe repository. + - - List of files that should be added to SourceSafe. - + + List of files that should be added to SourceSafe. + - - Defines how the local timestamp of files retrieved from a SourceSafe - database should be set. - + + Defines how the local timestamp of files retrieved from a SourceSafe + database should be set. + - - The timestamp of the local file is set to the current date and time. - + + The timestamp of the local file is set to the current date and time. + - - The timestamp of the local file is set to the file's last - modification date and time. - + + The timestamp of the local file is set to the file's last + modification date and time. + - - The timestamp of the local file is set to the date and time that - the file was last checked in to the database. - + + The timestamp of the local file is set to the date and time that + the file was last checked in to the database. + - - Used to checkin files into Visual Source Safe. - - - Checkin all files from an absolute directory to a local sourcesafe database. - - ]]> - - - Checkin a file from a relative directory to a remote sourcesafe database. - - ]]> - + + Used to checkin files into Visual Source Safe. + + + Checkin all files from an absolute directory to a local sourcesafe database. + + ]]> + + + Checkin a file from a relative directory to a remote sourcesafe database. + + ]]> + - - The comment for the new version. - + + The comment for the new version. + - - The path to the local working directory. - + + The path to the local working directory. + - - Determines whether to perform a recursive checkin. - The default is . - + + Determines whether to perform a recursive checkin. + The default is . + - - Determines whether to leave the file(s) as writable. - The default is . - + + Determines whether to leave the file(s) as writable. + The default is . + - - Task used to checkout files from Visual Source Safe. - - - Checkout the latest files from a local sourcesafe database. - - ]]> - - - Checkout a file from a remote sourcesafe database. Put it in a relative directory. - - ]]> - + + Task used to checkout files from Visual Source Safe. + + + Checkout the latest files from a local sourcesafe database. + + ]]> + + + Checkout a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + - - The path to the local working directory. - + + The path to the local working directory. + - - Determines whether to perform a recursive checkout. - The default is . - + + Determines whether to perform a recursive checkout. + The default is . + - - Determines whether to leave the file(s) as writable. - The default is . - + + Determines whether to leave the file(s) as writable. + The default is . + - - Set the behavior for timestamps of local files. The default is - . - + + Set the behavior for timestamps of local files. The default is + . + - - Used to delete or Destroy files or projects in Visual Source Safe. - - - Delete a project from a local sourcesafe database. - - ]]> - - - Delete a file from the remote sourcesafe database. - - ]]> - - - Destroy a project from a local sourcesafe database. - - ]]> - - - Destroy a file from the remote sourcesafe database. - - ]]> - + + Used to delete or Destroy files or projects in Visual Source Safe. + + + Delete a project from a local sourcesafe database. + + ]]> + + + Delete a file from the remote sourcesafe database. + + ]]> + + + Destroy a project from a local sourcesafe database. + + ]]> + + + Destroy a file from the remote sourcesafe database. + + ]]> + @@ -9559,129 +9632,129 @@ - - Determines whether or not the item is Destroyed. - The default is . - + + Determines whether or not the item is Destroyed. + The default is . + - - Used to generate differences in a vss database. It will show all changes to a project - after the specified label. - - - This only shows differences between the current version and the version specified. - - - - ]]> - + + Used to generate differences in a vss database. It will show all changes to a project + after the specified label. + + + This only shows differences between the current version and the version specified. + + + + ]]> + - - The value of the label to compare to. Required. - + + The value of the label to compare to. Required. + - - The output file to generate (xml) - + + The output file to generate (xml) + - - Used to retrieve an item or project from a Visual Source Safe database. - - - Get the latest files from a local sourcesafe database. - - ]]> - - - Get the latest version of a file from a remote sourcesafe database. Put it in a relative directory. - - ]]> - - - Get the latest version of a file from a remote sourcesafe database. Remove any deleted files from local image. - - ]]> - + + Used to retrieve an item or project from a Visual Source Safe database. + + + Get the latest files from a local sourcesafe database. + + ]]> + + + Get the latest version of a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + + + Get the latest version of a file from a remote sourcesafe database. Remove any deleted files from local image. + + ]]> + - - Checks to see if we should remove local copies of deleted files, and starts - the scan. - + + Checks to see if we should remove local copies of deleted files, and starts + the scan. + - - Scans the Project Item for deleted files and removes their local - copies from the local image of the project. Obeys the recursive setting - (and thus optionally calls itself recursively). - - The VSS Item (project) to check for deletions - The path to the folder of the item being processed + + Scans the Project Item for deleted files and removes their local + copies from the local image of the project. Obeys the recursive setting + (and thus optionally calls itself recursively). + + The VSS Item (project) to check for deletions + The path to the folder of the item being processed - - The path to the local working directory. - + + The path to the local working directory. + - - Determines whether to perform the get recursively. - The default is . - + + Determines whether to perform the get recursively. + The default is . + - - Determines whether to replace writable files. - The default is . - + + Determines whether to replace writable files. + The default is . + - - Determines whether the files will be writable. - The default is . - + + Determines whether the files will be writable. + The default is . + @@ -9691,94 +9764,94 @@ - - Determines whether the timestamp on the local copy - will be the modification time (if false or omitted, - the checkout time will be used) - + + Determines whether the timestamp on the local copy + will be the modification time (if false or omitted, + the checkout time will be used) + - - Set the behavior for timestamps of local files. The default is - . - + + Set the behavior for timestamps of local files. The default is + . + - - Generates an XML file showing all changes made to a Visual SourceSafe - project/file between specified labels or dates (by a given user). - - - - Write all changes between "Release1" and "Release2" to XML file - "changelog.xml". - - - - ]]> - - - - - Write all changes between January 1st 2004 and March 31st 2004 to XML - file "history.xml". - - - - ]]> - - + + Generates an XML file showing all changes made to a Visual SourceSafe + project/file between specified labels or dates (by a given user). + + + + Write all changes between "Release1" and "Release2" to XML file + "changelog.xml". + + + + ]]> + + + + + Write all changes between January 1st 2004 and March 31st 2004 to XML + file "history.xml". + + + + ]]> + + - - The value of the label to start comparing to. If it is not included, - the compare will start with the very first history item. - + + The value of the label to start comparing to. If it is not included, + the compare will start with the very first history item. + - - The value of the label to compare up to. If it is not included, - the compare will end with the last history item. - + + The value of the label to compare up to. If it is not included, + the compare will end with the last history item. + - - Start date for comparison. - + + Start date for comparison. + - - End date for comparison. - + + End date for comparison. + - - Output file to save history to (as XML). - + + Output file to save history to (as XML). + - - Determines whether to perform the comparison recursively. - The default is . - + + Determines whether to perform the comparison recursively. + The default is . + - - Name of the user whose changes you want to see. - + + Name of the user whose changes you want to see. + @@ -9787,124 +9860,124 @@ - - Override to avoid exposing the corresponding attribute to build - authors. - + + Override to avoid exposing the corresponding attribute to build + authors. + - - Override to avoid exposing the corresponding attribute to build - authors. - + + Override to avoid exposing the corresponding attribute to build + authors. + - - Used to apply a label to a Visual Source Safe item. - - - Label all files in a local sourcesafe database. (Automatically applies the label recursively) - - ]]> - - - Label a file in a remote sourcesafe database. - - ]]> - + + Used to apply a label to a Visual Source Safe item. + + + Label all files in a local sourcesafe database. (Automatically applies the label recursively) + + ]]> + + + Label a file in a remote sourcesafe database. + + ]]> + - - The label comment. - + + The label comment. + - - The name of the label. - + + The name of the label. + - - Task is used to undo a checkout from SourceSafe - - - Undo a checkout of all of the files from a local sourcesafe database. - - ]]> - - - Checkout a file from a remote sourcesafe database. Put it in a relative directory. - - ]]> - + + Task is used to undo a checkout from SourceSafe + + + Undo a checkout of all of the files from a local sourcesafe database. + + ]]> + + + Checkout a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + - - The path to the local working directory. This is required if you wish to - have your local file replaced with the latest version from SourceSafe. - + + The path to the local working directory. This is required if you wish to + have your local file replaced with the latest version from SourceSafe. + - - Determines whether to perform a recursive undo of the checkout. - The default is . - + + Determines whether to perform a recursive undo of the checkout. + The default is . + - - Allows creation of view labels in StarTeam repositories. - - - Often when building projects you wish to label the source control repository. - By default this task creates view labels with the build option turned on. - This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel - You need to have the StarTeam SDK installed for this task to function correctly. - - - Creates a label in a StarTeam repository. - - - - - ]]> - - + + Allows creation of view labels in StarTeam repositories. + + + Often when building projects you wish to label the source control repository. + By default this task creates view labels with the build option turned on. + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel + You need to have the StarTeam SDK installed for this task to function correctly. + + + Creates a label in a StarTeam repository. + + + + + ]]> + + @@ -9924,32 +9997,32 @@ Steve Cohen - The username of the connection + The username of the connection - The username of the connection + The username of the connection - name of Starteam server to connect to + name of Starteam server to connect to - port of Starteam server to connect to + port of Starteam server to connect to - name of Starteam project to connect to + name of Starteam project to connect to - name of Starteam view to connect to + name of Starteam view to connect to - The starteam server through which all activities will be done. + The starteam server through which all activities will be done. - - Derived classes must override this method to instantiate a view configured appropriately to its task. - - the unconfigured View - the view appropriately configured. + + Derived classes must override this method to instantiate a view configured appropriately to its task. + + the unconfigured View + the view appropriately configured. @@ -9959,9 +10032,9 @@ - Returns the name of the user or a blank string if the user is not found. - a user's ID - the name of the user + Returns the name of the user or a blank string if the user is not found. + a user's ID + the name of the user @@ -10039,39 +10112,39 @@ - The name of the label to be set in Starteam. + The name of the label to be set in Starteam. - The label description to be set in Starteam. + The label description to be set in Starteam. - Is the label being created a build label. + Is the label being created a build label. - If set the datetime to set the label as of. + If set the datetime to set the label as of. - Kludgy flag to keep track if date has been set. - Please kill this if you can. Here based on experiences I have had with VB.NET + Kludgy flag to keep track if date has been set. + Please kill this if you can. Here based on experiences I have had with VB.NET - Does user wish to make a revision label? + Does user wish to make a revision label? - - Override of base-class abstract function creates an appropriately configured view. - For labels this a view configured as of this.lastBuild. - - the unconfigured View - the snapshot View appropriately configured. + + Override of base-class abstract function creates an appropriately configured view. + For labels this a view configured as of this.lastBuild. + + the unconfigured View + the snapshot View appropriately configured. - - The name to be given to the label; required. - + + The name to be given to the label; required. + - Should label be marked build : default is true + Should label be marked build : default is true @@ -10084,7 +10157,7 @@ - Optional description of the label to be stored in the StarTeam project. + Optional description of the label to be stored in the StarTeam project. @@ -10189,28 +10262,28 @@ - - Locate the versionnumber.xml file in the repository. If it - is not present, the file is created. The file is checked out - exclusively for editing. - - StarTeam view we are working with. - - StarTeam file handle containing version xml. - + + Locate the versionnumber.xml file in the repository. If it + is not present, the file is created. The file is checked out + exclusively for editing. + + StarTeam view we are working with. + + StarTeam file handle containing version xml. + - - Creates the versionumber.xml file in the repository. - - StarTeam folder desired to put the versionnumber.xml files into - StarTeam File handle to the created file. + + Creates the versionumber.xml file in the repository. + + StarTeam folder desired to put the versionnumber.xml files into + StarTeam File handle to the created file. - - Allows user to specify the filename where the version xml is stored. - The default is versionnumber.xml. - + + Allows user to specify the filename where the version xml is stored. + The default is versionnumber.xml. + @@ -10294,15 +10367,15 @@ - - Helper method calls on the StarTeam API to retrieve an ID number for the specified view, corresponding to this.label. - - The Label identifier or -1 if no label was provided. + + Helper method calls on the StarTeam API to retrieve an ID number for the specified view, corresponding to this.label. + + The Label identifier or -1 if no label was provided. - Derived classes must override this class to define actual processing to be performed on each folder in the tree defined for the task - the StarTeam folderto be visited - the local mapping of rootStarteamFolder + Derived classes must override this class to define actual processing to be performed on each folder in the tree defined for the task + the StarTeam folderto be visited + the local mapping of rootStarteamFolder @@ -10312,16 +10385,16 @@ - - Gets the collection of the local file names in the supplied directory. - We need to check this collection against what we find in Starteam to - understand what we need to do in order to synch with the repository. - - - The goal is to keep track of which local files are not controlled by StarTeam. - - Local folder to scan - hashtable whose keys represent a file or directory in localFolder. + + Gets the collection of the local file names in the supplied directory. + We need to check this collection against what we find in Starteam to + understand what we need to do in order to synch with the repository. + + + The goal is to keep track of which local files are not controlled by StarTeam. + + Local folder to scan + hashtable whose keys represent a file or directory in localFolder. @@ -10349,35 +10422,35 @@ Regular expresssion for searching matching file names - - Convert path patterns to regularexpression patterns. Stored in the given string collection. - - collection of paths to expand into regular expressions - collection to store the given regularexpression patterns + + Convert path patterns to regularexpression patterns. Stored in the given string collection. + + collection of paths to expand into regular expressions + collection to store the given regularexpression patterns - - Root StarTeam folder to begin operations on. Defaults to the root of the view. - + + Root StarTeam folder to begin operations on. Defaults to the root of the view. + - - Root Local folder where files are to be checkout/in or manipulated. Defaults to the StarTeam default folder. - + + Root Local folder where files are to be checkout/in or manipulated. Defaults to the StarTeam default folder. + - - Accepts comma de-limited list of expressions to include in tree operations. - If nothing is set ALL filespecs are included. - - - Match all C# files in the directory - *.cs - - - Expressions should be just for filename matching. - Technically relative directory information is accepted but will never match. - + + Accepts comma de-limited list of expressions to include in tree operations. + If nothing is set ALL filespecs are included. + + + Match all C# files in the directory + *.cs + + + Expressions should be just for filename matching. + Technically relative directory information is accepted but will never match. + @@ -10397,9 +10470,9 @@ - - Default : true - should tasks recurse through tree. - + + Default : true - should tasks recurse through tree. + @@ -10413,70 +10486,70 @@ - - Label used for checkout. If no label is set latest state of repository is checked out. - - - The label must exist in starteam or an exception will be thrown. - + + Label used for checkout. If no label is set latest state of repository is checked out. + + + The label must exist in starteam or an exception will be thrown. + - classes used to access static values + classes used to access static values - Facotry classes used when files and folders are added to the repository. Populated when adduncontrolled is enabled. + Facotry classes used when files and folders are added to the repository. Populated when adduncontrolled is enabled. - will folders be created for new items found with the checkin. + will folders be created for new items found with the checkin. - The comment which will be stored with the checkin. + The comment which will be stored with the checkin. - holder for the add Uncontrolled attribute. If true, all local files not in StarTeam will be added to the repository. + holder for the add Uncontrolled attribute. If true, all local files not in StarTeam will be added to the repository. - This attribute tells whether unlocked files on checkin (so that other users may access them) checkout or to - leave the checkout status alone (default). - + This attribute tells whether unlocked files on checkin (so that other users may access them) checkout or to + leave the checkout status alone (default). + - - Override of base-class abstract function creates an appropriately configured view. For checkins this is - always the current or "tip" view. - - the unconfigured View - the snapshot View appropriately configured. + + Override of base-class abstract function creates an appropriately configured view. For checkins this is + always the current or "tip" view. + + the unconfigured View + the snapshot View appropriately configured. - Implements base-class abstract function to define tests for any preconditons required by the task + Implements base-class abstract function to define tests for any preconditons required by the task - Implements base-class abstract function to perform the checkin operation on the files in each folder of the tree. - the StarTeam folder to which files will be checked in - local folder from which files will be checked in + Implements base-class abstract function to perform the checkin operation on the files in each folder of the tree. + the StarTeam folder to which files will be checked in + local folder from which files will be checked in - Adds to the StarTeam repository everything on the local machine that is not currently in the repository. - Hasttable containing files missing in the repository for the current folder - StarTeam folder to which these items are to be added. + Adds to the StarTeam repository everything on the local machine that is not currently in the repository. + Hasttable containing files missing in the repository for the current folder + StarTeam folder to which these items are to be added. - Adds the file or directpry to the repository. - StarTeam folder underwhich items will be added. - the file or directory to add - true if the file was successfully added otherwise false. + Adds the file or directpry to the repository. + StarTeam folder underwhich items will be added. + the file or directory to add + true if the file was successfully added otherwise false. - - if true, any files or folders NOT in StarTeam will be added to the repository. Defaults to "false". - + + if true, any files or folders NOT in StarTeam will be added to the repository. Defaults to "false". + - - Set to do an unlocked checkout; optional, default is false; - If true, file will be unlocked so that other users may change it. If false, lock status will not change. - + + Set to do an unlocked checkout; optional, default is false; + If true, file will be unlocked so that other users may change it. If false, lock status will not change. + @@ -10503,130 +10576,130 @@ - holder for the createDirs property. + holder for the createDirs property. - holder for the deleteUncontrolled property. + holder for the deleteUncontrolled property. - holder for the lockstatus property. + holder for the lockstatus property. - - Override of base-class abstract function creates an appropriately configured view for checkout. - If a label is specified it is used otherwise the current view of the repository is used. - - the unconfigured StarTeam View - the snapshot StarTeam View appropriately configured. + + Override of base-class abstract function creates an appropriately configured view for checkout. + If a label is specified it is used otherwise the current view of the repository is used. + + the unconfigured StarTeam View + the snapshot StarTeam View appropriately configured. - Implements base-class abstract function to define tests for any preconditons required by the task + Implements base-class abstract function to define tests for any preconditons required by the task - - Implements base-class abstract function to perform the checkout operation on the files in each folder of the tree. - - the StarTeam folder from which files to be checked out - the local mapping of the starteam folder + + Implements base-class abstract function to perform the checkout operation on the files in each folder of the tree. + + the StarTeam folder from which files to be checked out + the local mapping of the starteam folder - - Deletes everything on the local machine that is not in the repository. - - Hashtable containing filenames to be deleted + + Deletes everything on the local machine that is not in the repository. + + Hashtable containing filenames to be deleted - Utility method to delete the file (and it's children) from the local drive. - the file or directory to delete. - was the file successfully deleted + Utility method to delete the file (and it's children) from the local drive. + the file or directory to delete. + was the file successfully deleted - - Default : true - Create directories that are in the Starteam repository even if they are empty. - + + Default : true - Create directories that are in the Starteam repository even if they are empty. + - - Not fully tested CAREFUL Default : false - Should all local files NOT in StarTeam be deleted? - + + Not fully tested CAREFUL Default : false - Should all local files NOT in StarTeam be deleted? + - - What type of lock to apply to files checked out. - - - LockType - - - unchanged - default: do not make any changes to the lock state of items. - - - exclusive - Exclusively lock items. No other users can update the object while it is exclusively locked. - - - nonexclusive - Put a non-exclusive lock on the item. - - - unlocked - Remove locks from all items checked out. This accompanied by force would effectively override a lock and replace local contents with the current version. - - - + + What type of lock to apply to files checked out. + + + LockType + + + unchanged + default: do not make any changes to the lock state of items. + + + exclusive + Exclusively lock items. No other users can update the object while it is exclusively locked. + + + nonexclusive + Put a non-exclusive lock on the item. + + + unlocked + Remove locks from all items checked out. This accompanied by force would effectively override a lock and replace local contents with the current version. + + + - - Allows creation of view labels in StarTeam repositories. - - - Often when building projects you wish to label the source control repository. - By default this task creates view labels with the build option turned on. - This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel - You need to have the StarTeam SDK installed for this task to function correctly. - - - Creates a label in a StarTeam repository. - - - - - ]]> - - + + Allows creation of view labels in StarTeam repositories. + + + Often when building projects you wish to label the source control repository. + By default this task creates view labels with the build option turned on. + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel + You need to have the StarTeam SDK installed for this task to function correctly. + + + Creates a label in a StarTeam repository. + + + + + ]]> + + - - This method does the work of creating the new view and checking it - into Starteam. - + + This method does the work of creating the new view and checking it + into Starteam. + - - List items in StarTeam repositories. - - - This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlist - You need to have the StarTeam SDK installed for this task to function correctly. - - - Lists all files in a StarTeam repository. - - - - - ]]> - - + + List items in StarTeam repositories. + + + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlist + You need to have the StarTeam SDK installed for this task to function correctly. + + + Lists all files in a StarTeam repository. + + + + + ]]> + + @@ -10637,59 +10710,59 @@ the snapshot View appropriately configured. - Required base-class abstract function implementation is a no-op here. + Required base-class abstract function implementation is a no-op here. - Implements base-class abstract function to perform the checkout - operation on the files in each folder of the tree. - the StarTeam folder from which files to be checked out - the local mapping of rootStarteamFolder + Implements base-class abstract function to perform the checkout + operation on the files in each folder of the tree. + the StarTeam folder from which files to be checked out + the local mapping of rootStarteamFolder - - Processes Surround SCM batch files. - - - Processes the batch commands found in the input file. Each line in the - input file should contain a single Surround SCM command including proper - command line options. The sscm command, Surround SCM server address, - port number, username and password are not required for each command line. - - - - Run the batch file ${src}/sscm.batch on the server at localhost, - port 4900 with username 'administrator' and a blank password. All script - output is directed to the console. - - - <sscmbatch - serverconnect="localhost:4900" - serverlogin="administrator:" - input="${src}/sscm.batch" - /> - - - - - Run the batch file ${src}/sscm.batch on the server at localhost, - port 4900 with username 'administrator' and a blank password. All script - output is redirected to ${dist}/sscm.batch.out. - - - <sscmbatch - serverconnect="localhost:4900" - serverconnect="administrator:" - input="${src}/sscm.batch" - output="${dist}/sscm.batch.out" - /> - - + + Processes Surround SCM batch files. + + + Processes the batch commands found in the input file. Each line in the + input file should contain a single Surround SCM command including proper + command line options. The sscm command, Surround SCM server address, + port number, username and password are not required for each command line. + + + + Run the batch file ${src}/sscm.batch on the server at localhost, + port 4900 with username 'administrator' and a blank password. All script + output is directed to the console. + + + <sscmbatch + serverconnect="localhost:4900" + serverlogin="administrator:" + input="${src}/sscm.batch" + /> + + + + + Run the batch file ${src}/sscm.batch on the server at localhost, + port 4900 with username 'administrator' and a blank password. All script + output is redirected to ${dist}/sscm.batch.out. + + + <sscmbatch + serverconnect="localhost:4900" + serverconnect="administrator:" + input="${src}/sscm.batch" + output="${dist}/sscm.batch.out" + /> + + - - Surround SCM - abstract task base. - + + Surround SCM + abstract task base. + @@ -10699,31 +10772,31 @@ The to write the task-specific arguments to. - - The address and port number of the Surround SCM server host computer. - Format is server:port. If not entered, the last saved connection - parameters are used. - + + The address and port number of the Surround SCM server host computer. + Format is server:port. If not entered, the last saved connection + parameters are used. + - - The username and password used to login to the Surround SCM server. - Format is username:password. If not entered, the last saved login - parameters are used. - + + The username and password used to login to the Surround SCM server. + Format is username:password. If not entered, the last saved login + parameters are used. + - - Override ExeName paramater to sscm.exe for Surround SCM. - + + Override ExeName paramater to sscm.exe for Surround SCM. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + @@ -10733,74 +10806,74 @@ The to write the task-specific arguments to. - - File to read commands from. - + + File to read commands from. + - - File to direct all standard output to. When executing commands from - the input file, all output is written to this file instead of being - displayed on the screen. - + + File to direct all standard output to. When executing commands from + the input file, all output is written to this file instead of being + displayed on the screen. + - - Creates new branches for Surround SCM. - - - - Create a new Baseline branch 'Widget 1.0' from branch 'Mainline', - repository 'Mainline/Widget' with the given comments. All files - are branched at the tip version. - - - <sscmbranch - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="Widget 1.0" - repository="Mainline/Widget" - parent="Mainline" - comment="Branch for continuing Widget 1.0 development" - type="baseline" - /> - - - - - Create a new Workspace branch 'MyWidgetDevelopment' from branch - 'Widget 1.0', repository 'Mainline/Widget'. All files are branched - at the tip version. - - - <sscmbranch - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="MyWidgetDevelopment" - repository="Mainline/Widget" - parent="Widget 1.0" - /> - - - - - Create a new Snapshot branch 'Build as of 12-1-03' from branch - 'Widget 1.0', repository 'Mainline/Widget' with the given comments. - All files are branched at their version as of 12-01-03. - - - <sscmbranch - serverconnect="localhost:4900" - serverlogin="administrator:" - name="Build as of 12-1-03" - repository="Mainline/Widget" - branch="Widget 1.0" - comment="Snapshot of source as it was on December 1st, 2003" - timestamp="2003120300:00:00" - type="snapshot" - /> - - + + Creates new branches for Surround SCM. + + + + Create a new Baseline branch 'Widget 1.0' from branch 'Mainline', + repository 'Mainline/Widget' with the given comments. All files + are branched at the tip version. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + parent="Mainline" + comment="Branch for continuing Widget 1.0 development" + type="baseline" + /> + + + + + Create a new Workspace branch 'MyWidgetDevelopment' from branch + 'Widget 1.0', repository 'Mainline/Widget'. All files are branched + at the tip version. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="MyWidgetDevelopment" + repository="Mainline/Widget" + parent="Widget 1.0" + /> + + + + + Create a new Snapshot branch 'Build as of 12-1-03' from branch + 'Widget 1.0', repository 'Mainline/Widget' with the given comments. + All files are branched at their version as of 12-01-03. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + name="Build as of 12-1-03" + repository="Mainline/Widget" + branch="Widget 1.0" + comment="Snapshot of source as it was on December 1st, 2003" + timestamp="2003120300:00:00" + type="snapshot" + /> + + @@ -10810,31 +10883,31 @@ The to write the task-specific arguments to. - - The name of the branch you want to create. - + + The name of the branch you want to create. + - - The full repository path. - + + The full repository path. + - - The parent branch you want to create the new, child branch from. - If not specified, the mainline branch is used. - + + The parent branch you want to create the new, child branch from. + If not specified, the mainline branch is used. + - - Specifies a comment for the branch operation. - + + Specifies a comment for the branch operation. + - - Specifies which parent branch file versions are copied into the - child branch. - + + Specifies which parent branch file versions are copied into the + child branch. + @@ -10851,61 +10924,61 @@ - - Specifies the type of branch you want to create. Possible values are - workspace, baseline, or snapshot. The default is - workspace. - + + Specifies the type of branch you want to create. Possible values are + workspace, baseline, or snapshot. The default is + workspace. + - - Checks in files in Surround SCM - repository. - - - Check in updated Surround SCM files with changes, removes the lock on - the files, and makes changes available to other users. - - - - Check In all files and repositories from repository 'Mainline/Widget' - recursively from the 'Widget 1.0' branch to the working directory setup - for user 'administrator'. This call outputs the progress of the Check In - to the console. - - - <sscmcheckin - serverconnect="localhost:4900" - serverlogin="administrator:" - file="/" - branch="Widget 1.0" - repository="Mainline/Widget" - recursive="true" - comment="I made some changes" - /> - - - - - Check in file 'Mainline/Widget/Widget.java' from the 'Widget 1.0' - branch from the working directory setup for user 'administrator' - with comment 'I made some changes'. Set the 'Release 1.1.1' label - to this new version, even if the label already exists on an earlier - version. - - - <sscmcheckin - serverconnect="localhost:4900" - serverlogin="administrator:" - file="Widget.java" - branch="Widget 1.0" - repository="Mainline/Widget" - comment="I made some changes" - label="Release 1.1.1" - overwritelabel="true" - /> - - + + Checks in files in Surround SCM + repository. + + + Check in updated Surround SCM files with changes, removes the lock on + the files, and makes changes available to other users. + + + + Check In all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory setup + for user 'administrator'. This call outputs the progress of the Check In + to the console. + + + <sscmcheckin + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + comment="I made some changes" + /> + + + + + Check in file 'Mainline/Widget/Widget.java' from the 'Widget 1.0' + branch from the working directory setup for user 'administrator' + with comment 'I made some changes'. Set the 'Release 1.1.1' label + to this new version, even if the label already exists on an earlier + version. + + + <sscmcheckin + serverconnect="localhost:4900" + serverlogin="administrator:" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + comment="I made some changes" + label="Release 1.1.1" + overwritelabel="true" + /> + + @@ -10915,154 +10988,154 @@ The to write the task-specific arguments to. - - Surround SCM branch name. The default is pulled from the local - working directory. - + + Surround SCM branch name. The default is pulled from the local + working directory. + - - Surround SCM repository path. The default is pulled from the local - working directory. - + + Surround SCM repository path. The default is pulled from the local + working directory. + - - File or repository name. Can be / or empty, which means the - repository specified by the repository option or the default - repository. - + + File or repository name. Can be / or empty, which means the + repository specified by the repository option or the default + repository. + - - Comment for the check-in. - + + Comment for the check-in. + - - Force check in without merge. Ignores code changes checked in after - the user's last checkout or merge. The default is . - + + Force check in without merge. Ignores code changes checked in after + the user's last checkout or merge. The default is . + - - Get file after check in. The default is . - + + Get file after check in. The default is . + - - Keep the lock after check in. The default is . - + + Keep the lock after check in. The default is . + - - A label for the check in code. - + + A label for the check in code. + - - Overwrite previous label on file. The default is - . - + + Overwrite previous label on file. The default is + . + - - Do not list repository and local full path of the Surround - SCM server. The default is . - + + Do not list repository and local full path of the Surround + SCM server. The default is . + - - Recursively check in all files and sub-repositories. - The default is . - + + Recursively check in all files and sub-repositories. + The default is . + - - The TestTrack Pro database configuration name. - + + The TestTrack Pro database configuration name. + - - The TestTrack Pro username and password. - + + The TestTrack Pro username and password. + - - The TestTrack Pro defect number(s) for attachment. Format is "#:#:#:#". - + + The TestTrack Pro defect number(s) for attachment. Format is "#:#:#:#". + - - Make file writable after check in. The default is - . - + + Make file writable after check in. The default is + . + - - Update version even if no changes. The default is - . - + + Update version even if no changes. The default is + . + - - Remove local file after check in. The default is - . - + + Remove local file after check in. The default is + . + - - Checks out files from a Surround SCM - repository. - - - You can check out single files, multiple files, or a full repository. - Surround SCM creates a read-write copy of the files in the working - directory. - - - - Check Out all files and repositories from repository 'Mainline/Widget' - recursively from the 'Widget 1.0' branch to the working directory setup - for user 'administrator'. This call forces the file retrieval from the - server even if the local file is current and overwrites any writable - local files with the server copy. - - - <sscmcheckout - serverconnect="localhost:4900" - serverlogin="administrator:" - file="/" - branch="Widget 1.0" - repository="Mainline/Widget" - recursive="true" - force="true" - comment="This is my Check Out comment" - /> - - - - - Check Out version 1 of the file 'Mainline/Widget/Widget.java' exclusively - from the 'Widget 1.0' branch to the working directory setup for user - 'administrator'. Writable local files are not overwritten, even if they - are out of date. - - - <sscmcheckout - serverconnect="localhost:4900" - serverlogin="administrator:" - quiet="true" - file="Widget.java" - branch="Widget 1.0" - repository="Mainline/Widget" - overwrite="false" - writable="true" - version="1" - exclusive="true" - /> - - + + Checks out files from a Surround SCM + repository. + + + You can check out single files, multiple files, or a full repository. + Surround SCM creates a read-write copy of the files in the working + directory. + + + + Check Out all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory setup + for user 'administrator'. This call forces the file retrieval from the + server even if the local file is current and overwrites any writable + local files with the server copy. + + + <sscmcheckout + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + force="true" + comment="This is my Check Out comment" + /> + + + + + Check Out version 1 of the file 'Mainline/Widget/Widget.java' exclusively + from the 'Widget 1.0' branch to the working directory setup for user + 'administrator'. Writable local files are not overwritten, even if they + are out of date. + + + <sscmcheckout + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + overwrite="false" + writable="true" + version="1" + exclusive="true" + /> + + @@ -11072,16 +11145,16 @@ The to write the task-specific arguments to. - - Surround SCM branch name. The default is pulled from the local - working directory. - + + Surround SCM branch name. The default is pulled from the local + working directory. + - - Surround SCM repository path. The default is pulled from the local - working directory. - + + Surround SCM repository path. The default is pulled from the local + working directory. + @@ -11091,44 +11164,44 @@ - - Comment for the check-out. - + + Comment for the check-out. + - - Force file retrieval from server regardless of the local copy status. - The default is . - + + Force file retrieval from server regardless of the local copy status. + The default is . + - - Do not list repository and local full path of the Surround SCM server. - The default is . - + + Do not list repository and local full path of the Surround SCM server. + The default is . + - - Recursively get files and sub-repositories. The default is - . - + + Recursively get files and sub-repositories. The default is + . + - - Specifies whether to overwrite local writable files. The default is - . - + + Specifies whether to overwrite local writable files. The default is + . + - - Specifies how to set the local file's date/time. Possible values are - current, modify or checkin. - + + Specifies how to set the local file's date/time. Possible values are + current, modify or checkin. + - - Exclusively lock the files. The default is . - + + Exclusively lock the files. The default is . + @@ -11137,30 +11210,30 @@ - - Freezes branches in a Surround SCM - repository. - - - Freezing a branch prevents any code changes being made to files in the - branch. When a branch is frozen, it is locked and no changes can be - made to it. - - - - Freeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the - server at localhost, port 4900 with username 'administrator' and a - blank password. - - - <sscmfreeze - serverconnect="localhost:4900" - serverlogin="administrator:" - mainline="Mainline" - branch="Widget 1.0" - /> - - + + Freezes branches in a Surround SCM + repository. + + + Freezing a branch prevents any code changes being made to files in the + branch. When a branch is frozen, it is locked and no changes can be + made to it. + + + + Freeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the + server at localhost, port 4900 with username 'administrator' and a + blank password. + + + <sscmfreeze + serverconnect="localhost:4900" + serverlogin="administrator:" + mainline="Mainline" + branch="Widget 1.0" + /> + + @@ -11170,88 +11243,88 @@ The to write the task-specific arguments to. - - Surround SCM branch name. - + + Surround SCM branch name. + - - Surround SCM mainline branch name. The default is pulled from the - local working directory. - + + Surround SCM mainline branch name. The default is pulled from the + local working directory. + - - Gets files from a Surround SCM - repository. - - - You can get a single file, multiple files, or a repository. A read-only - copy of the file is created in the specified directory. - - - - Get all files and repositories from repository 'Mainline/Widget' - recursively from the 'Widget 1.0' branch to the working directory - setup for user 'administrator'. This call forces the file retrieval - from the server even if the local file is current and overwrites any - local files that are writable with the server copy. - - - <sscmget - serverconnect="localhost:4900" - serverlogin="administrator:" - file="/" - branch="Widget 1.0" - repository="Mainline/Widget" - recursive="true" - force="true" - overwrite="true" - /> - - - - - Get version 1 of the file 'Mainline/Widget/Widget.java' from the - 'Widget 1.0' branch to the working directory setup for user 'administrator'. - Writable local files are not overwritten, even if they are out of date. - - - <sscmget - serverconnect="localhost:4900" - serverlogin="administrator:" - quiet="true" - file="Widget.java" - branch="Widget 1.0" - repository="Mainline/Widget" - overwrite="false" - writable="true" - version="1" - /> - - - - - Get all files and repositories labeled with 'Release 1.0.0' (even those - removed from Surround) from repository 'Mainline/Widget' recursively - from the 'Widget 1.0' branch to the '${build}/src' directory. Writable - local files are overwritten with the server copy. - - - <sscmget - serverconnect="localhost:4900" - serverlogin="administrator:" - quiet="true" - file="/" - branch="Widget 1.0" - repository="Mainline/Widget" - recursive="true" - label="Release 1.0.1" - destdir="${build}/src" - overwrite="true" - /> - - + + Gets files from a Surround SCM + repository. + + + You can get a single file, multiple files, or a repository. A read-only + copy of the file is created in the specified directory. + + + + Get all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory + setup for user 'administrator'. This call forces the file retrieval + from the server even if the local file is current and overwrites any + local files that are writable with the server copy. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + force="true" + overwrite="true" + /> + + + + + Get version 1 of the file 'Mainline/Widget/Widget.java' from the + 'Widget 1.0' branch to the working directory setup for user 'administrator'. + Writable local files are not overwritten, even if they are out of date. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + overwrite="false" + writable="true" + version="1" + /> + + + + + Get all files and repositories labeled with 'Release 1.0.0' (even those + removed from Surround) from repository 'Mainline/Widget' recursively + from the 'Widget 1.0' branch to the '${build}/src' directory. Writable + local files are overwritten with the server copy. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + label="Release 1.0.1" + destdir="${build}/src" + overwrite="true" + /> + + @@ -11261,16 +11334,16 @@ The to write the task-specific arguments to. - - Surround SCM branch name. The default is pulled from the local - working directory. - + + Surround SCM branch name. The default is pulled from the local + working directory. + - - Surround SCM repository path. The default is pulled from the local - working directory. - + + Surround SCM repository path. The default is pulled from the local + working directory. + @@ -11290,22 +11363,22 @@ - - Make local file editable or writable. The default is - . - + + Make local file editable or writable. The default is + . + - - Force file retrieval from server regardless of the local copy status. - The default is . - + + Force file retrieval from server regardless of the local copy status. + The default is . + - - Label to search for when getting a file. If a file version is - specified, this parameter is ignored. - + + Label to search for when getting a file. If a file version is + specified, this parameter is ignored. + @@ -11315,35 +11388,35 @@ - - Include removed files when getting files by label or timestamp. - The default is . Ignored if a label or - timestamp is not specified. - + + Include removed files when getting files by label or timestamp. + The default is . Ignored if a label or + timestamp is not specified. + - - Do not list repository and local full path of files. The default is - . - + + Do not list repository and local full path of files. The default is + . + - - Recursively get files and sub-repositories. The default is - . - + + Recursively get files and sub-repositories. The default is + . + - - Specifies whether to overwrite local writable files. The default is - . - + + Specifies whether to overwrite local writable files. The default is + . + - - Specifies how to set the local file's date/time. Possible values are - current, modify or checkin. - + + Specifies how to set the local file's date/time. Possible values are + current, modify or checkin. + @@ -11352,74 +11425,74 @@ - - Creates file or repository labels for a Surround SCM - repository. - - - Labels provide a way to mark a specific version of a file or repository. - You can create labels for single files, multiple files, or all files in - a repository. When you create a label, a new entry is created in the history. - The file, and the version number, do not change. Existing 'Release 1.0.1' - labels on a file will be moved to the tip version of the file. - - - - Label all files under the 'Mainline/Widget' repository recursively in - the 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. - - - <sscmlabel - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="Widget 1.0" - repository="Mainline/Widget" - file="readme.txt" - recursive="true" - label="Release 1.0.1" - overwritelabel="false" - comment="This labels the final build for the release of Widget 1.0.1." - /> - - - - - Label all files under the 'Mainline/Widget' repository recursively in - the 'Widget 1.0' branch with 'Release 1.0.1' and no comments. - - - <sscmlabel - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="Widget 1.0" - repository="Mainline/Widget" - file="readme.txt" - recursive="true" - label="Release 1.0.1" - /> - - - - - Label version 4 of the file 'Mainline/Widget/Widget.java' in the - 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. An - existing 'Release 1.0.1' label on this file to be moved to version 4 - of the file. - - - <sscmlabel - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="Widget 1.0" - repository="Mainline/Widget" - file="readme.txt" - label="Release 1.0.1" - overwritelabel=" true" - comment=" This labels the final build for the release of Widget 1.0.1." - version=" 4" - /> - - + + Creates file or repository labels for a Surround SCM + repository. + + + Labels provide a way to mark a specific version of a file or repository. + You can create labels for single files, multiple files, or all files in + a repository. When you create a label, a new entry is created in the history. + The file, and the version number, do not change. Existing 'Release 1.0.1' + labels on a file will be moved to the tip version of the file. + + + + Label all files under the 'Mainline/Widget' repository recursively in + the 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + recursive="true" + label="Release 1.0.1" + overwritelabel="false" + comment="This labels the final build for the release of Widget 1.0.1." + /> + + + + + Label all files under the 'Mainline/Widget' repository recursively in + the 'Widget 1.0' branch with 'Release 1.0.1' and no comments. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + recursive="true" + label="Release 1.0.1" + /> + + + + + Label version 4 of the file 'Mainline/Widget/Widget.java' in the + 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. An + existing 'Release 1.0.1' label on this file to be moved to version 4 + of the file. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + label="Release 1.0.1" + overwritelabel=" true" + comment=" This labels the final build for the release of Widget 1.0.1." + version=" 4" + /> + + @@ -11429,16 +11502,16 @@ The to write the task-specific arguments to. - - Surround SCM branch name. The default is pulled from the local - working directory. - + + Surround SCM branch name. The default is pulled from the local + working directory. + - - Surround SCM repository path. The default is pulled from the local - working directory. - + + Surround SCM repository path. The default is pulled from the local + working directory. + @@ -11448,24 +11521,24 @@ - - The new label to create. - + + The new label to create. + - - Recursively label all files. The default is . - + + Recursively label all files. The default is . + - - Overwrite the existing label. The default is . - + + Overwrite the existing label. The default is . + - - Comment for the label. - + + Comment for the label. + @@ -11474,25 +11547,25 @@ - - Unlocks frozen branches for a Surround SCM - repository. - - - - Unfreeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the - server at localhost, port 4900 with username 'administrator' and a - blank password. - - - <sscmunfreeze - serverconnect="localhost:4900" - serverlogin="administrator:" - mainline="Mainline" - branch="Widget 1.0" - /> - - + + Unlocks frozen branches for a Surround SCM + repository. + + + + Unfreeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the + server at localhost, port 4900 with username 'administrator' and a + blank password. + + + <sscmunfreeze + serverconnect="localhost:4900" + serverlogin="administrator:" + mainline="Mainline" + branch="Widget 1.0" + /> + + @@ -11502,47 +11575,47 @@ The to write the task-specific arguments to. - - Surround SCM branch name. - + + Surround SCM branch name. + - - Surround SCM mainline branch name. The default is pulled from the local working directory. - + + Surround SCM mainline branch name. The default is pulled from the local working directory. + - - A base class for creating tasks for executing CVS client commands on a - CVS repository. - + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + - - An environment variable that holds path information about where - svn is located. - + + An environment variable that holds path information about where + svn is located. + - - The prefix used for command arguments. - + + The prefix used for command arguments. + - - The name of the svn executable. - + + The name of the svn executable. + - - Environment variable that holds the executable name that is used for - ssh communication. - + + Environment variable that holds the executable name that is used for + ssh communication. + - - Name of the password file that is used to cash password settings. - + + Name of the password file that is used to cash password settings. + @@ -11551,19 +11624,19 @@ - - Build up the command line arguments, determine which executable is being - used and find the path to that executable and set the working - directory. - - The process to prepare. + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. - - Append the command line options or commen names for the options - to the generic options collection. This is then piped to the - command line as a switch. - + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + @@ -11578,420 +11651,422 @@ - - Set default values for non-requiered parameters. - + + Set default values for non-requiered parameters. + - - The name of the executable. - + + The name of the executable. + - - The name of the password file. - + + The name of the password file. + - - Name of the home environment variable. - + + Name of the home environment variable. + - - The name of the ssh/ rsh environment variable. - + + The name of the ssh/ rsh environment variable. + - - The full path of the svn executable. - + + The full path of the svn executable. + - - - TODO: Add more documentation when I understand all svn root possibilities/ - protocols. - The svn root is usually in the form of a URL from which the server, protocol - and path information can be derived. Although the path to the repository - can also be determined from this the information is more implicit - than explicit. For example a subversion root URL of: - http://svn.collab.net/repos/svn/trunk/doc/book/tools - would have the following components: - protocol: http/ web_dav - username: anonymous - servername: svn.collab.net - repository: /repos/svn - server path: /trunk/doc/book/tools - - In addition the revision path or branch can also be determined as - subversion stores this information as a seperate physical directory. - In this example: - - revision: trunk - - + + + TODO: Add more documentation when I understand all svn root possibilities/ + protocols. + The svn root is usually in the form of a URL from which the server, protocol + and path information can be derived. Although the path to the repository + can also be determined from this the information is more implicit + than explicit. For example a subversion root URL of: + + http://svn.collab.net/repos/svn/trunk/doc/book/tools + + would have the following components: + protocol: http/ web_dav + username: anonymous + servername: svn.collab.net + repository: /repos/svn + server path: /trunk/doc/book/tools + + In addition the revision path or branch can also be determined as + subversion stores this information as a seperate physical directory. + In this example: + + revision: trunk + + - - The user performing the checkout. - + + The user performing the checkout. + - - The pasword to use to login to svn. - + + The pasword to use to login to svn. + - - Indicates whether the task should be interactive or not. This is - set to by default, and I don't see a reason - to expose this to the NAnt task. - + + Indicates whether the task should be interactive or not. This is + set to by default, and I don't see a reason + to expose this to the NAnt task. + - - The executable to use for ssh communication. - + + The executable to use for ssh communication. + - - The command to execute. - + + The command to execute. + - - Specifies whether to print as little information as possible. - The default is . - + + Specifies whether to print as little information as possible. + The default is . + - - Determines if the root is used for the command based on - the command name. Returns true if the root - is used, otherwise returns false. - + + Determines if the root is used for the command based on + the command name. Returns true if the root + is used, otherwise returns false. + - - Executes the svn checkout command. - - - Checkout Gentle.NET. - - - ]]> - - + + Executes the svn checkout command. + + + Checkout Gentle.NET. + + + ]]> + + - - Initialize the task, and set the default parameters. - + + Initialize the task, and set the default parameters. + - - Gets the svn command to execute. - - - The svn command to execute. The default value is "checkout". - + + Gets the svn command to execute. + + + The svn command to execute. The default value is "checkout". + - - if the command should be executed recursively. - The default is . - + + if the command should be executed recursively. + The default is . + - - The revision to checkout. If no revision is specified then subversion - will return the HEAD. - - - A revision argument can be one of: - NUMBER revision number - "{" DATE "}" revision at start of the date - "HEAD" latest in repository - "BASE" base rev of item's working copy - "COMMITTED" last commit at or before BASE - "PREV" revision just before COMMITTED - + + The revision to checkout. If no revision is specified then subversion + will return the HEAD. + + + A revision argument can be one of: + NUMBER revision number + "{" DATE "}" revision at start of the date + "HEAD" latest in repository + "BASE" base rev of item's working copy + "COMMITTED" last commit at or before BASE + "PREV" revision just before COMMITTED + - - if the authentiction token should be cached - locally. - + + if the authentiction token should be cached + locally. + - - The location of the configuration directory. - + + The location of the configuration directory. + - - Executes the svn command specified by the command attribute. - - - Checkout Gentle.NET. - - - ]]> - - + + Executes the svn command specified by the command attribute. + + + Checkout Gentle.NET. + + + ]]> + + - - The svn command to execute. - + + The svn command to execute. + - - Executes the svn update specified by the command attribute. - - - Update Gentle.NET. - - - ]]> - - + + Executes the svn update specified by the command attribute. + + + Update Gentle.NET. + + + ]]> + + - - Gets the svn command to execute. - - - The svn command to execute. The default value is "update". - + + Gets the svn command to execute. + + + The svn command to execute. The default value is "update". + - - Allows an IIS application pool to be controlled. - - - - Starts the "StsAdminAppPool" application pool on server - "SV-ARD-WEB". - - - - ]]> - - - - - Stops and restarts the "DefaultAppPool" application pool - on server "SV-ARD-WEB". - - - - ]]> - - + + Allows an IIS application pool to be controlled. + + + + Starts the "StsAdminAppPool" application pool on server + "SV-ARD-WEB". + + + + ]]> + + + + + Stops and restarts the "DefaultAppPool" application pool + on server "SV-ARD-WEB". + + + + ]]> + + - - The name of the server on which to perform the action. The default - is the local computer. - + + The name of the server on which to perform the action. The default + is the local computer. + - - The name of the application pool on which to perform the action. - + + The name of the application pool on which to perform the action. + - - The action that should be performed on the application pool. - + + The action that should be performed on the application pool. + - - Defines the actions that can be performed on an application pool. - + + Defines the actions that can be performed on an application pool. + - - Starts the application pool. - + + Starts the application pool. + - - Stops the application pool. - + + Stops the application pool. + - - Stops and restarts the application pool. - + + Stops and restarts the application pool. + - - Recycles an application pool. - + + Recycles an application pool. + - - Creates or modifies a virtual directory of a web site hosted on Internet - Information Server. - - - - If the virtual directory does not exist it is created, and if it already - exists it is modified. Only the IIS-properties specified will be set. If set - by other means (e.g. the Management Console), the unspecified properties retain their current value, - otherwise they are inherited from the parent. - - - For a list of optional parameters see IIsWebVirtualDir. - - - More information on metabase parameters is available here. - - - - - Create a virtual directory named Temp pointing to c:\temp - on the local machine. - - - - ]]> - - - - - Create a virtual directory named Temp pointing to c:\temp - on machine Staging. - - - - ]]> - - - - - Configure the home directory of for http://svc.here.dev/ to point to - D:\Develop\Here and require authentication - - - - ]]> - - - - - Create a virtual directory named WebServices/Dev pointing to - c:\MyProject\dev on the web site running on port 81 of - machine MyHost. - - - - ]]> - - Note that if WebServices is neither an existing virtual directory nor an - existing physical subdirectory of the web root, your IIS Management Console - will get confused. Even though http://MyHost:81/WebServices/Dev/theService.asmx - may be a perfectly working webservice, the Management Console will not show it. - + + Creates or modifies a virtual directory of a web site hosted on Internet + Information Server. + + + + If the virtual directory does not exist it is created, and if it already + exists it is modified. Only the IIS-properties specified will be set. If set + by other means (e.g. the Management Console), the unspecified properties retain their current value, + otherwise they are inherited from the parent. + + + For a list of optional parameters see IIsWebVirtualDir. + + + More information on metabase parameters is available here. + + + + + Create a virtual directory named Temp pointing to c:\temp + on the local machine. + + + + ]]> + + + + + Create a virtual directory named Temp pointing to c:\temp + on machine Staging. + + + + ]]> + + + + + Configure the home directory of for http://svc.here.dev/ to point to + D:\Develop\Here and require authentication + + + + ]]> + + + + + Create a virtual directory named WebServices/Dev pointing to + c:\MyProject\dev on the web site running on port 81 of + machine MyHost. + + + + ]]> + + Note that if WebServices is neither an existing virtual directory nor an + existing physical subdirectory of the web root, your IIS Management Console + will get confused. Even though http://MyHost:81/WebServices/Dev/theService.asmx + may be a perfectly working webservice, the Management Console will not show it. + - - Base class for all IIS-related task. - - - Basically this class hold the logic to determine the IIS version as well - as the IIS server/port determination/checking logic. - + + Base class for all IIS-related task. + + + Basically this class hold the logic to determine the IIS version as well + as the IIS server/port determination/checking logic. + - - Name of the IIS virtual directory. - + + Name of the IIS virtual directory. + - - The IIS server, which can be specified using the format [host]:[port]. - The default is localhost:80. - - - - This allows for targeting a specific virtual site on a physical box. - - + + The IIS server, which can be specified using the format [host]:[port]. + The default is localhost:80. + + + + This allows for targeting a specific virtual site on a physical box. + + - - The website on the IIS server. - - - - This allows for targeting a specific virtual site on a physical box. - - + + The website on the IIS server. + + + + This allows for targeting a specific virtual site on a physical box. + + - - Gets the version of IIS corresponding with the current OS. - - - The version of IIS corresponding with the current OS. - + + Gets the version of IIS corresponding with the current OS. + + + The version of IIS corresponding with the current OS. + - - Defines the IIS versions supported by the IIS tasks. - + + Defines the IIS versions supported by the IIS tasks. + - - The user-friendly name of the package or application. - + + The user-friendly name of the package or application. + - - The file system path. - + + The file system path. + - - Indicates whether the file or the contents of the folder may be - executed, regardless of file type. The default is . - + + Indicates whether the file or the contents of the folder may be + executed, regardless of file type. The default is . + @@ -12016,46 +12091,46 @@ - - A value of true indicates that remote requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. - + + A value of true indicates that remote requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. + - - indicates that remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. - + + indicates that remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. + - - Indicates whether the file or the contents of the folder may be - read. The default is . - + + Indicates whether the file or the contents of the folder may be + read. The default is . + - - Indicates whether users are allowed to access source code if either - Read or Write permissions are set. The default is . - + + Indicates whether users are allowed to access source code if either + Read or Write permissions are set. The default is . + - - Indicates whether the file or the contents of the folder may be - executed if they are script files or static content. The default - is . - + + Indicates whether the file or the contents of the folder may be + executed if they are script files or static content. The default + is . + - - Indicates whether file access requires SSL file permission processing, - with or without a client certificate. The default is . - + + Indicates whether file access requires SSL file permission processing, + with or without a client certificate. The default is . + - - Indicates whether file access requires SSL file permission processing - with a minimum key size of 128 bits, with or without a client - certificate. The default is . - + + Indicates whether file access requires SSL file permission processing + with a minimum key size of 128 bits, with or without a client + certificate. The default is . + @@ -12067,10 +12142,10 @@ - - Indicates whether SSL file access processing requests a certificate - from the client. The default is . - + + Indicates whether SSL file access processing requests a certificate + from the client. The default is . + @@ -12082,19 +12157,19 @@ - - Indicates whether users are allowed to upload files and their - associated properties to the enabled directory on your server or - to change content in a Write-enabled file. The default is - . - + + Indicates whether users are allowed to upload files and their + associated properties to the enabled directory on your server or + to change content in a Write-enabled file. The default is + . + - - Indicates whether IIS should handle the user password for anonymous - users attempting to access resources. The default is - . - + + Indicates whether IIS should handle the user password for anonymous + users attempting to access resources. The default is + . + @@ -12103,38 +12178,38 @@ - - Specifies whether ASP client-side debugging is enabled. The default - is . - + + Specifies whether ASP client-side debugging is enabled. The default + is . + - - Specifies whether ASP debugging is enabled on the server. The default - is . - + + Specifies whether ASP debugging is enabled on the server. The default + is . + - - Specifies the application pool where the application is routed - (IIS 6.0 or higher). - + + Specifies the application pool where the application is routed + (IIS 6.0 or higher). + - - Enables session state persistence for the ASP application. The - default is . - + + Enables session state persistence for the ASP application. The + default is . + - - Specifies whether output from an ASP application will be buffered. - If , all output from the application is - collected in the buffer before the buffer is flushed to the client. - With buffering on, the ASP application has to completely process the - ASP script before the client receives any output. The default is - . - + + Specifies whether output from an ASP application will be buffered. + If , all output from the application is + collected in the buffer before the buffer is flushed to the client. + With buffering on, the ASP application has to completely process the + ASP script before the client receives any output. The default is + . + @@ -12150,21 +12225,21 @@ - - Controls the behavior of ASP when a new request is to be rejected - due to a full request queue. If , an .htm file - with a similar name as the requested .asp file, will be sent instead - of the .asp file. The naming convention for the .htm file is the - name of the .asp file with _asp appended. The default is - . - + + Controls the behavior of ASP when a new request is to be rejected + due to a full request queue. If , an .htm file + with a similar name as the requested .asp file, will be sent instead + of the .asp file. The naming convention for the .htm file is the + name of the .asp file with _asp appended. The default is + . + - - Specifies whether HTTP 1.1 chunked transfer encoding is enabled for - the World Wide Web Publishing Service (WWW service). The default is - . - + + Specifies whether HTTP 1.1 chunked transfer encoding is enabled for + the World Wide Web Publishing Service (WWW service). The default is + . + @@ -12203,37 +12278,37 @@ - - Specifies whether an ASP page allows paths relative to the current - directory. The default is . - + + Specifies whether an ASP page allows paths relative to the current + directory. The default is . + - - Specifies whether type libraries are cached on the server. The - default is . - - - - The World Wide Web Publishing Service (WWW service) setting for - this property is applicable to all in-process and pooled out-of-process - application nodes, at all levels. - - - Metabase settings at the Web server level or lower are ignored - for in-process and pooled out-of-process applications. However, - settings at the Web server level or lower are used if that node - is an isolated out-of-process application. - - + + Specifies whether type libraries are cached on the server. The + default is . + + + + The World Wide Web Publishing Service (WWW service) setting for + this property is applicable to all in-process and pooled out-of-process + application nodes, at all levels. + + + Metabase settings at the Web server level or lower are ignored + for in-process and pooled out-of-process applications. However, + settings at the Web server level or lower are used if that node + is an isolated out-of-process application. + + - - Specifies whether ASP pages trap exceptions thrown by components. - If set to , the Microsoft Script Debugger tool - does not catch exceptions sent by the component that you are debugging. - The default is . - + + Specifies whether ASP pages trap exceptions thrown by components. + If set to , the Microsoft Script Debugger tool + does not catch exceptions sent by the component that you are debugging. + The default is . + @@ -12273,235 +12348,235 @@ - - Specifies whether the Web server writes debugging specifics - (file name, error, line number, description) to the client browser, - in addition to logging them to the Windows Event Log. The default - is . - + + Specifies whether the Web server writes debugging specifics + (file name, error, line number, description) to the client browser, + in addition to logging them to the Windows Event Log. The default + is . + - - Indicates whether IIS thread gating is enabled (only applies to IIS 4 and 5). - The default is . - - - IIS performs thread gating to dynamically control the number of - concurrently executing threads, in response to varying load conditions. - + + Indicates whether IIS thread gating is enabled (only applies to IIS 4 and 5). + The default is . + + + IIS performs thread gating to dynamically control the number of + concurrently executing threads, in response to varying load conditions. + - - Specifies whether IIS checks the threading model of any components - that your application creates. The default is . - + + Specifies whether IIS checks the threading model of any components + that your application creates. The default is . + - - Specifies Anonymous authentication as one of the possible authentication - schemes returned to clients as being available. The default is - . - + + Specifies Anonymous authentication as one of the possible authentication + schemes returned to clients as being available. The default is + . + - - Specifies Basic authentication as one of the possible authentication - schemes returned to clients as being available. The default is - . - + + Specifies Basic authentication as one of the possible authentication + schemes returned to clients as being available. The default is + . + - - Specifies Integrated Windows authentication as one of the possible - authentication schemes returned to clients as being available. The - default is . - + + Specifies Integrated Windows authentication as one of the possible + authentication schemes returned to clients as being available. The + default is . + - - Specifies that authentication persists only for a single request on - a connection. IIS resets the authentication at the end of each request, - and forces re-authentication on the next request of the session. - - - [IIS 6.0] When the AuthPersistSingleRequest flag is set to true when - using NTLM authentication, IIS 6.0 automatically reauthenticates every - request, even those on the same connection. - + + Specifies that authentication persists only for a single request on + a connection. IIS resets the authentication at the end of each request, + and forces re-authentication on the next request of the session. + + + [IIS 6.0] When the AuthPersistSingleRequest flag is set to true when + using NTLM authentication, IIS 6.0 automatically reauthenticates every + request, even those on the same connection. + - - Specifies authentication will persist only across single requests - on a connection if the connection is by proxy. Applies to IIS 5.0 - and 5.1. The default is - - - IIS will reset the authentication at the end of the request if the current authenticated - request is by proxy and it is not the special case where IIS is running MSPROXY - + + Specifies authentication will persist only across single requests + on a connection if the connection is by proxy. Applies to IIS 5.0 + and 5.1. The default is + + + IIS will reset the authentication at the end of the request if the current authenticated + request is by proxy and it is not the special case where IIS is running MSPROXY + - - Specifies whether authentication is valid for a single request - if by proxy. IIS will reset the authentication at the end of the - request and force re-authentication on the next request if the - current authenticated request is by proxy of any type. Applies to - IIS 5.0 and 5.1. The default is . - + + Specifies whether authentication is valid for a single request + if by proxy. IIS will reset the authentication at the end of the + request and force re-authentication on the next request if the + current authenticated request is by proxy of any type. Applies to + IIS 5.0 and 5.1. The default is . + - - Specifies whether the HTTP 1.1 directive to prevent caching of content - should be sent to clients. The default is . - + + Specifies whether the HTTP 1.1 directive to prevent caching of content + should be sent to clients. The default is . + - - Indicates whether ISAPI extensions are cached in memory after first - use. The default is . - + + Indicates whether ISAPI extensions are cached in memory after first + use. The default is . + - - Specifies whether the installed content indexer should index content - under this directory tree. The default is . - + + Specifies whether the installed content indexer should index content + under this directory tree. The default is . + - - Specifies whether process accounting and throttling should be performed - for ISAPI extensions and ASP applications. The default is - . - + + Specifies whether process accounting and throttling should be performed + for ISAPI extensions and ASP applications. The default is + . + - - Indicates whether IIS should perform process accounting for CGI - applications. The default is . - + + Indicates whether IIS should perform process accounting for CGI + applications. The default is . + - - Indicates whether a CGI application runs in its own console. The - default is . - + + Indicates whether a CGI application runs in its own console. The + default is . + - - Specifies whether a CGI process is created in the system context - or in the context of the requesting user. The default is - . - + + Specifies whether a CGI process is created in the system context + or in the context of the requesting user. The default is + . + - - Specifies whether date information is displayed when browsing - directories. The default is . - + + Specifies whether date information is displayed when browsing + directories. The default is . + - - Specifies whether file extensions are displayed when browsing - directories. The default is . - + + Specifies whether file extensions are displayed when browsing + directories. The default is . + - - Specifies whether date information is displayed in extended format - when displaying directories. The default is . - + + Specifies whether date information is displayed in extended format + when displaying directories. The default is . + - - Specifies whether file size information is displayed when displaying - directories. The default is . - + + Specifies whether file size information is displayed when displaying + directories. The default is . + - - Specifies whether file creation time is displayed when browsing - directories. The default is . - + + Specifies whether file creation time is displayed when browsing + directories. The default is . + - - Specifies whether client requests are written to the IIS log files. - The default is . - + + Specifies whether client requests are written to the IIS log files. + The default is . + - - When set to true, the default document (specified by the DefaultDoc property) for a directory is loaded when the directory is browsed. - + + When set to true, the default document (specified by the DefaultDoc property) for a directory is loaded when the directory is browsed. + - - Specifies whether directory browsing is enabled. The default is - . - + + Specifies whether directory browsing is enabled. The default is + . + - - Enables or disables custom footers. The default is - . - + + Enables or disables custom footers. The default is + . + - - Enables or disables reverse Domain Name Server (DNS) lookups for - the World Wide Web Publishing Service (WWW service). The default is - . - + + Enables or disables reverse Domain Name Server (DNS) lookups for + the World Wide Web Publishing Service (WWW service). The default is + . + - - Specifies whether server-side include (SSI) #exec directives are - disabled under this path. The default is . - + + Specifies whether server-side include (SSI) #exec directives are + disabled under this path. The default is . + - - - + + + - - - + + + - - One or more file names of default documents that will be returned to - the client if no file name is included in the client's request. - + + One or more file names of default documents that will be returned to + the client if no file name is included in the client's request. + - - Specifies the user name for Universal Naming Convention (UNC) virtual - roots. - + + Specifies the user name for Universal Naming Convention (UNC) virtual + roots. + - - Specifies the encrypted password used to gain access to UNC - (Universal Naming Convention) virtual roots. - + + Specifies the encrypted password used to gain access to UNC + (Universal Naming Convention) virtual roots. + - - The different ways a (virtual) directory in IIS can be configured - as an application. - + + The different ways a (virtual) directory in IIS can be configured + as an application. + - - Virtual directory is not configured as an application. - + + Virtual directory is not configured as an application. + - - Virtual directory is configured as an in-process application. - + + Virtual directory is configured as an in-process application. + @@ -12510,126 +12585,126 @@ - - Virtual directory is configured as an out-of-process application. - + + Virtual directory is configured as an out-of-process application. + - - Deletes a virtual directory from a given web site hosted on Internet - Information Server. - - - - Delete a virtual directory named Temp from the web site running - on port 80 of the local machine. If more than one web site is - running on port 80, take the web site bound to the hostname - localhost if existent or bound to no hostname otherwise. - - - - ]]> - - - - - Delete a virtual directory named Temp from the website running - on port 81 of machine MyHost. - - - - ]]> - - + + Deletes a virtual directory from a given web site hosted on Internet + Information Server. + + + + Delete a virtual directory named Temp from the web site running + on port 80 of the local machine. If more than one web site is + running on port 80, take the web site bound to the hostname + localhost if existent or bound to no hostname otherwise. + + + + ]]> + + + + + Delete a virtual directory named Temp from the website running + on port 81 of machine MyHost. + + + + ]]> + + - - Lists the configuration settings of a specified virtual directory in a - web site hosted on Internet Information Server. - - - - List the settings of a virtual directory named Temp. - - - - ]]> - - + + Lists the configuration settings of a specified virtual directory in a + web site hosted on Internet Information Server. + + + + List the settings of a virtual directory named Temp. + + + + ]]> + + - - Base NAnt task for working with ADSI. This task contains only the path of the ADSI - object that you want to work with. - + + Base NAnt task for working with ADSI. This task contains only the path of the ADSI + object that you want to work with. + - - The ADSI path of the location where we want to work with. - + + The ADSI path of the location where we want to work with. + - - Used to get the value of a property from an ADSI object. - + + Used to get the value of a property from an ADSI object. + - - Sets the specified property - + + Sets the specified property + - - The name of the property to get. - + + The name of the property to get. + - - The name of the property to store the value in. - + + The name of the property to store the value in. + - - Sets a property on an ADSI object. - - - This task uses a heuristic to determine the type of the property in ADSI. The following cases are notable: - - If the property does not exist on the item, it is inserted as a string. - If the property already exists, this method will attempt to preserve - the type of the property. The types this method knows about are String, - Boolean, and Int32. - If the property exists and is an array, the value is added to - the array, but only if it is not already present. - - - - - - ]]> - - - - - - - - - ]]> - - + + Sets a property on an ADSI object. + + + This task uses a heuristic to determine the type of the property in ADSI. The following cases are notable: + + If the property does not exist on the item, it is inserted as a string. + If the property already exists, this method will attempt to preserve + the type of the property. The types this method knows about are String, + Boolean, and Int32. + If the property exists and is an array, the value is added to + the array, but only if it is not already present. + + + + + + ]]> + + + + + + + + + ]]> + + - - Sets the specified property - + + Sets the specified property + @@ -12659,1099 +12734,1039 @@ - - The name of the property to set. - + + The name of the property to set. + - - The new value of the property. - + + The new value of the property. + - - Formats source code in a given directory to a specified code format. - - - - Most examples inline have been produced by Tal Davidson and team and - are part of the astyle documentation. They have been included in - the task documentation as an easy reference. - - NOTE: This task relies on the astyle.exe file being in your path variable. - Please download the astyle.exe from http://astyle.sourceforge.net. - - - - - - - - - ]]> - - + + Formats source code in a given directory to a specified code format. + + + + Most examples inline have been produced by Tal Davidson and team and + are part of the astyle documentation. They have been included in + the task documentation as an easy reference. + + NOTE: This task relies on the astyle.exe file being in your path variable. + Please download the astyle.exe from http://astyle.sourceforge.net. + + + + + + + + + ]]> + + - - The default style seems to be the closest to C# standards. - + + The default style seems to be the closest to C# standards. + - - Build up the command line arguments, determine which executable is - being used and find the path to that executable and set the working - directory. - - The process to prepare. + + Build up the command line arguments, determine which executable is + being used and find the path to that executable and set the working + directory. + + The process to prepare. - - Adds a new command option if none exists. If one does exist then - the use switch is toggled on or of. - - The common name of the option. - The option value or command line switch of the option. - if the option should be appended to the commandline, otherwise . + + Adds a new command option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch of the option. + if the option should be appended to the commandline, otherwise . - - Append the command line options or commen names for the options - to the generic options collection. This is then piped to the - command line as a switch. - + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + - - Append the files specified in the fileset to the command line argument. - + + Append the files specified in the fileset to the command line argument. + - - A collection of command line option switches. - + + A collection of command line option switches. + - - Used to select the files to copy. - + + Used to select the files to copy. + - - The command-line arguments for the program. - + + The command-line arguments for the program. + - - Indicate the preset style to use. - - ansi - - namespace foospace - { - int Foo() - { - if (isBar) - { - bar(); - return 1; - } - else - return 0; - } - } - - - kr ( Kernighan&Ritchie ) - - namespace foospace { - int Foo() { - if (isBar) { - bar(); - return 1; - } else - return 0; - } - } - - - linux - - namespace foospace - { - int Foo() - { - if (isBar) { - bar(); - return 1; - } else - return 0; - } - } - - - gnu - - namespace foospace - { - int Foo() - { - if (isBar) - { - bar(); - return 1; - } - else - return 0; - } - } - - - java - - class foospace { - int Foo() { - if (isBar) { - bar(); - return 1; - } else - return 0; - } - } - - - NAnt - - namespace foospace { - class foo() { - #region Protected Static Fields - private int Foo() { - if (isBar) { - bar(); - return 1; - } else { - return 0; - } - } - #endregion - } - - - - + + Indicate the preset style to use. + + ansi + + namespace foospace + { + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } + } + + + kr ( Kernighan&Ritchie ) + + namespace foospace { + int Foo() { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + linux + + namespace foospace + { + int Foo() + { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + gnu + + namespace foospace + { + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } + } + + + java + + class foospace { + int Foo() { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + NAnt + + namespace foospace { + class foo() { + #region Protected Static Fields + private int Foo() { + if (isBar) { + bar(); + return 1; + } else { + return 0; + } + } + #endregion + } + + + + - - Astyle leaves the original files around, renamed with a different - suffix. Setting this to true - will remove these files. - + + Astyle leaves the original files around, renamed with a different + suffix. Setting this to true + will remove these files. + - - The suffix to append to original files, defaults to .orig - if not specified. - + + The suffix to append to original files, defaults to .orig + if not specified. + - - Indicate the maximum number of spaces to indent relative to a - previous line. - + + Indicate the maximum number of spaces to indent relative to a + previous line. + - - Indicate that tabs should be used to indent sources. The number - specified indicates the maximum number of spaces the tab character - will represent. - + + Indicate that tabs should be used to indent sources. The number + specified indicates the maximum number of spaces the tab character + will represent. + - - Indent using tab characters. Treat each tab as # spaces. Uses tabs as - indents in areas '--indent=tab' prefers to use spaces, such as - inside multi-line statements. - + + Indent using tab characters. Treat each tab as # spaces. Uses tabs as + indents in areas '--indent=tab' prefers to use spaces, such as + inside multi-line statements. + - - to convert tabs to spaces. - + + to convert tabs to spaces. + - - if class statements should be indented. - - - The default: - class Foo - { - public: - Foo(); - virtual ~Foo(); - }; - becomes: - class Foo - { - public: - Foo(); - virtual ~Foo(); - }; - - - + + if class statements should be indented. + + + The default: + + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + + becomes: + + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + + + - - if switch statements should be indented. - - - The default: - switch (foo) - { - case 1: - a += 2; - break; - default: - a += 2; - break; - } - becomes: - switch (foo) - { - case 1: - a += 2; - break; - default: - a += 2; - break; - } - - - + + if switch statements should be indented. + + + The default: + + switch (foo) + { + case 1: + a += 2; + break; + + default: + a += 2; + break; + } + + becomes: + + switch (foo) + { + case 1: + a += 2; + break; + + default: + a += 2; + break; + } + + + - - if case statements should be indented. - - - The default: - switch (foo) - { - case 1: - { - a += 2; - break; - } - default: - { - a += 2; - break; - } - } - becomes: - switch (foo) - { - case 1: - { - a += 2; - break; - } - default: - { - a += 2; - break; - } - } - - - + + if case statements should be indented. + + + The default: + + switch (foo) + { + case 1: + { + a += 2; + break; + } + + default: + { + a += 2; + break; + } + } + + becomes: + + switch (foo) + { + case 1: + { + a += 2; + break; + } + + default: + { + a += 2; + break; + } + } + + + - - true if bracket statements should be indented. - - - The default: - if (isFoo) - { - bar(); - } - else - { - anotherBar(); - } - becomes: - if (isFoo) - { - bar(); - } - else - { - anotherBar(); - } - - - + + true if bracket statements should be indented. + + + The default: + + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + + becomes: + + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + + + - - if block statements should be indented. - The default: - if (isFoo) - { - bar(); - } - else - anotherBar(); - becomes: - if (isFoo) - { - bar(); - } - else - anotherBar(); - + + if block statements should be indented. + The default: + + if (isFoo) + { + bar(); + } + else + anotherBar(); + + becomes: + + if (isFoo) + { + bar(); + } + else + anotherBar(); + - - if namespace statements should be indented. - - The default: - namespace foospace - { - class Foo - { - public: - Foo(); - virtual ~Foo(); - }; - } - becomes: - namespace foospace - { - class Foo - { - public: - Foo(); - virtual ~Foo(); - }; - } - - + + if namespace statements should be indented. + + + The default: + + namespace foospace + { + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + } + + becomes: + + namespace foospace + { + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + } + + + - - if label statements should be indented. - - - The default: - int foospace() - { - while (isFoo) - { - ... - goto error; - error: - ... - } - } - becomes: - int foospace() - { - while (isFoo) - { - ... - goto error; - error: - ... - } - } - - + + if label statements should be indented. + + + The default: + + int foospace() + { + while (isFoo) + { + ... + goto error; + + error: + ... + } + } + + becomes: + + int foospace() + { + while (isFoo) + { + ... + goto error; + + error: + ... + } + } + + + - - Indicate the maximum number of spaces to indent relative to a - previous line. - + + Indicate the maximum number of spaces to indent relative to a + previous line. + - - Indicate the maximum number of spaces to indent relative to a - previous line. - + + Indicate the maximum number of spaces to indent relative to a + previous line. + - - if empty lines should be filled with the - whitespace of the previous line. - + + if empty lines should be filled with the + whitespace of the previous line. + - - if brackets should be put on a new line. - - if (isFoo) - { - bar(); - } - else - { - anotherBar(); - } - - - + + if brackets should be put on a new line. + + + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + + + - - if brackets should be attached. - - - if (isFoo){ - bar(); - } else { - anotherBar(); - } - - - + + if brackets should be attached. + + + if (isFoo){ + bar(); + } else { + anotherBar(); + } + + + - - if brackets should be put on a new line and - indented. - - namespace foospace - { - int Foo() - { - if (isBar) { - bar(); - return 1; - } else - return 0; - } - } - - + + if brackets should be put on a new line and + indented. + + + namespace foospace + { + int Foo() + { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + - - if the line after a bracket (i.e. an else - statement after the closing if) should be placed on the next line. - - - if (isFoo){ - bar(); - }else { - anotherBar(); - } - becomes: - if (isFoo) { - bar(); - } - else { - anotherBar(); - } - - - + + if the line after a bracket (i.e. an else + statement after the closing if) should be placed on the next line. + + + if (isFoo){ + bar(); + }else { + anotherBar(); + } + + becomes: + + if (isFoo) { + bar(); + } + else { + anotherBar(); + } + + + - - to break block statements with an empty line. - - isFoo = true; - if (isFoo) { - bar(); - } else { - anotherBar(); - } - isBar = false; - becomes: - isFoo = true; - if (isFoo) { - bar(); - } else { - anotherBar(); - } - isBar = false; - - + + to break block statements with an empty line. + + + isFoo = true; + if (isFoo) { + bar(); + } else { + anotherBar(); + } + isBar = false; + + becomes: + + isFoo = true; + + if (isFoo) { + bar(); + } else { + anotherBar(); + } + + isBar = false; + + + - - to break all block statements, even on - nested ifs with an empty line. - - isFoo = true; - if (isFoo) { - bar(); - } else { - anotherBar(); - } - isBar = false; - becomes: - isFoo = true; - if (isFoo) { - bar(); - } else { - anotherBar(); - } - isBar = false; - - + + to break all block statements, even on + nested ifs with an empty line. + + + isFoo = true; + if (isFoo) { + bar(); + } else { + anotherBar(); + } + isBar = false; + + becomes: + + isFoo = true; + + if (isFoo) { + bar(); + + } else { + anotherBar(); + } + + isBar = false; + + + - - to put the if component of an else if on a - new line. - - if (isFoo) { - bar(); - } else if (isBar()){ - anotherBar(); - } - becomes: - if (isFoo) { - bar(); - } else - if (isBar()){ - anotherBar(); - } - - - + + to put the if component of an else if on a + new line. + + + if (isFoo) { + bar(); + } else if (isBar()){ + anotherBar(); + } + + becomes: + + if (isFoo) { + bar(); + } else + if (isBar()){ + anotherBar(); + } + + + + - - to pad operators with a space. - - - if (isFoo) - a = bar((b-c)*a,*d--); - becomes: - if (isFoo) - a = bar((b - c) * a, *d--); - - + + to pad operators with a space. + + + if (isFoo) + a = bar((b-c)*a,*d--); + + becomes: + + if (isFoo) + a = bar((b - c) * a, *d--); + + + - - to pad parenthesis with a space. - - if (isFoo) - a = bar((b-c)*a,*d--); - becomes: - if ( isFoo ) - a = bar( ( b-c )*a, *d-- ); - - + + to pad parenthesis with a space. + + + if (isFoo) + a = bar((b-c)*a,*d--); + + becomes: + + if ( isFoo ) + a = bar( ( b-c )*a, *d-- ); + + + - - to pad operators and parenthesis. - - - if (isFoo) - a = bar((b-c)*a,*d--); - becomes: - if ( isFoo ) - a = bar( ( b - c ) * a, *d-- ); - - + + to pad operators and parenthesis. + + + if (isFoo) + a = bar((b-c)*a,*d--); + + becomes: + + if ( isFoo ) + a = bar( ( b - c ) * a, *d-- ); + + + - - to keep complex statements on the same line. - - - if (isFoo) - { - isFoo = false; cout << isFoo << endl; - } - remains as is. - if (isFoo) DoBar(); - remains as is. - - + + to keep complex statements on the same line. + + + if (isFoo) + { + isFoo = false; cout << isFoo << endl; + } + + remains as is. + + if (isFoo) DoBar(); + + remains as is. + + + - - to keep single line statements on the same line. - - if (isFoo) - { isFoo = false; cout << isFoo << endl; } - remains as is. - - + + to keep single line statements on the same line. + + + if (isFoo) + { isFoo = false; cout << isFoo << endl; } + + remains as is. + + + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Changes the current working directory. - - - - Changes the current working directory to the "subdir" - directory, relative to the project base directory. - - - - ]]> - - + + Changes the current working directory. + + + + Changes the current working directory to the "subdir" + directory, relative to the project base directory. + + + + ]]> + + - - Changes the current directory. - + + Changes the current directory. + - - The path to which the current working directory should be set. - + + The path to which the current working directory should be set. + - - Calculates checksums for a set of files. - Loosely based on Ant's Checksum task. - - - This task takes a set of input files in a fileset - and calculates a checksum for each one of them. - You can specify the algorithm to use when calculating - the checksum value (MD5 or SHA1, for example). - The calculated value is saved to a file with the same - name as the input file and an added extension either - based on the algorithm name (e.g. .MD5), or whatever - is specified through the fileext attribute. - - - - - - - - - ]]> - - + + Calculates checksums for a set of files. + Loosely based on Ant's Checksum task. + + + This task takes a set of input files in a fileset + and calculates a checksum for each one of them. + You can specify the algorithm to use when calculating + the checksum value (MD5 or SHA1, for example). + The calculated value is saved to a file with the same + name as the input file and an added extension either + based on the algorithm name (e.g. .MD5), or whatever + is specified through the fileext attribute. + + + + + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Writes a checksum to a destination file - - - + + Writes a checksum to a destination file + + + - - Name of Algorithm to use when calculating - the checksum. Can be MD5 or SHA1. - + + Name of Algorithm to use when calculating + the checksum. Can be MD5 or SHA1. + - - The generated checksum file's name will be the - original filename with "." and fileext - added to it. Defaults to the - algorithm name being used - + + The generated checksum file's name will be the + original filename with "." and fileext + added to it. Defaults to the + algorithm name being used + - - Set of files to use as input - + + Set of files to use as input + - + - - Executes an alternate set of task or type definition depending on - conditions that are individually set on each group. - + Generates statistics from source code. - - The selects one among a number of possible - alternatives. It consists of a sequence of <when> elements - followed by an optional <otherwise> element. - - - Each <when> element has a single attribute, test, which - specifies an expression. The content of the <when> and - <otherwise> elements is a set of nested tasks. - - - The content of the first, and only the first, <when> - element whose test is is executed. If no - <when> element is , the - content of the <otherwise> element is executed. - If no <when> element is , and no - <otherwise> element is present, nothing is done. - + Scans files in a fileset counting lines. - Execute alternate set of tasks depending on the configuration being - built. + Generate statistics for a set of C# and VB.NET sources, applying + different labels for both. - - - ... - - - - ... - - - Build configuration '${build.config}' is not supported! - - + + + + + + + + + + + + + + ]]> - Define a sources patternset holding an alternate set of patterns - depending on the configuration being built. + Generate statistics for all C# sources and only output a summary to + the log. - - - - - - - - - - - - - Build configuration '${build.config}' is not supported! - - + + + + + + + + + ]]> - - - One or more alternative sets of tasks to execute. - - The set of tasks to add. - - + - The set of tasks to execute if none of the - elements are . + Set of line counters to enable. - - - Gets a value indicating whether a fallback element is defined. - - - if a fallback element is defined; otherwise, - . - - - - - Groups a set of tasks to execute when a condition is met. - - - - - Executes embedded tasks in the order in which they are defined. - - - - - Creates and executes the embedded (child XML nodes) elements. - - - + - Gets a value indicating whether the element is performing additional - processing using the that was use to - initialize the element. + An identifier to be able to track which build last updated the + code stats file. - - , as a is - responsable for creating tasks from the nested build elements. - - - - - Used to test arbitrary boolean expression. - - - - - Generates statistics from source code. - - - Scans files in a fileset counting lines. - - - - Generate statistics for a set of C# and VB.NET sources, applying - different labels for both. - - - - - - - - - - - - - - - - - ]]> - - - - - Generate statistics for all C# sources and only output a summary to - the log. - - - - - - - - - - - - ]]> - - - - - - Set of line counters to enable. - - - - - An identifier to be able to track which build last updated the - code stats file. - - - Specifies whether the results should be appended to the output file. - The default is . - + + Specifies whether the results should be appended to the output file. + The default is . + - - If you only want to show summary stats for the whole fileset - + + If you only want to show summary stats for the whole fileset + - - The name of the file to save the output to (in XML). - + + The name of the file to save the output to (in XML). + - - Register COM servers or type libraries. - - - - COM register task will try and register any type of COM related file - that needs registering. - - Executable files (.exe) will be registered as exe servers, type - libaries (.tlb) registered with RegisterTypeLib and for all other - filetypes it will attempt to register them as dll servers. - - - - Register a single dll server. - - - ]]> - - - - Register a single exe server - - - ]]> - - - - Register a set of COM files at once. - - - - - - - - - - ]]> - - + + Register COM servers or type libraries. + + + + COM register task will try and register any type of COM related file + that needs registering. + + Executable files (.exe) will be registered as exe servers, type + libaries (.tlb) registered with RegisterTypeLib and for all other + filetypes it will attempt to register them as dll servers. + + + + Register a single dll server. + + + ]]> + + + + Register a single exe server + + + ]]> + + + + Register a set of COM files at once. + + + + + + + + + + ]]> + + - - Register an inproc COM server, usually a .dll or .ocx - - + + Register an inproc COM server, usually a .dll or .ocx + + - - Register a COM type library - - + + Register a COM type library + + - - Register exe servers. - - + + Register exe servers. + + - - The name of the file to register. This is provided as an alternate - to using the task's fileset. - + + The name of the file to register. This is provided as an alternate + to using the task's fileset. + - Unregistering this time. ( /u paramater )Default is "false". + Unregistering this time. ( /u paramater )Default is "false". - - The set of files to register. - + + The set of files to register. + - - Helper class to synamically build an assembly with the correct - P/Invoke signature - + + Helper class to synamically build an assembly with the correct + P/Invoke signature + - - Register a given dll. - - - - + + Register a given dll. + + + + - - A task that concatenates a set of files. - Loosely based on Ant's Concat task. - - - - This task takes a set of input files in a fileset - and concatenates them into a single file. You can - either replace the output file, or append to it - by using the append attribute. - - - The order the files are concatenated in is not - especified. - - - - - - - - - - ]]> - - + + A task that concatenates a set of files. + Loosely based on Ant's Concat task. + + + + This task takes a set of input files in a fileset + and concatenates them into a single file. You can + either replace the output file, or append to it + by using the append attribute. + + + The order the files are concatenated in is not + especified. + + + + + + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Opens the destination file according - to the specified flags - - + + Opens the destination file according + to the specified flags + + - - Appends all specified files - - File to write to + + Appends all specified files + + File to write to - - Name of the destination file. - + + Name of the destination file. + - - Specifies whether to append to the destination file. - The default is . - + + Specifies whether to append to the destination file. + The default is . + - - Set of files to use as input. - + + Set of files to use as input. + @@ -13762,17 +13777,17 @@ The depends task never forces the execution of any target that has already been executed. It works just like the depends attribute of a . - - Executes the specified task. - + + Executes the specified task. + - - A space or comma separated dependency list of targets. - - - Expressions get evaluated when the task is executed. - + + A space or comma separated dependency list of targets. + + + Expressions get evaluated when the task is executed. + @@ -13796,84 +13811,84 @@ - - Discover the details for the specified web service. - + + Discover the details for the specified web service. + - The URL or Path to discover. + The URL or Path to discover. - Suppresses the banner. + Suppresses the banner. - Do not save the discovered documents to the local disk. + Do not save the discovered documents to the local disk. - The output directory to save discovered documents in. + The output directory to save discovered documents in. - Username of an account with credentials to access a - server that requires authentication. + Username of an account with credentials to access a + server that requires authentication. - Password of an account with credentials to access a - server that requires authentication. + Password of an account with credentials to access a + server that requires authentication. - Domain of an account with credentials to access a - server that requires authentication. + Domain of an account with credentials to access a + server that requires authentication. - URL of a proxy server to use for HTTP requests. - The default is to use the system proxy setting. + URL of a proxy server to use for HTTP requests. + The default is to use the system proxy setting. - Username of an account with credentials to access a - proxy that requires authentication. + Username of an account with credentials to access a + proxy that requires authentication. - Password of an account with credentials to access a - proxy that requires authentication. + Password of an account with credentials to access a + proxy that requires authentication. - Domain of an account with credentials to access a - proxy that requires authentication. + Domain of an account with credentials to access a + proxy that requires authentication. - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Analyzes managed code assemblies and reports information about the - assemblies, such as possible design, localization, performance, and - security improvements. - - - - this task relies on fxcopcmd.exe being in your PATH environment variable. - You can download the latest FxCop from . - - - - - - - - - - - - - ]]> - - + + Analyzes managed code assemblies and reports information about the + assemblies, such as possible design, localization, performance, and + security improvements. + + + + this task relies on fxcopcmd.exe being in your PATH environment variable. + You can download the latest FxCop from . + + + + + + + + + + + + + ]]> + + @@ -13881,187 +13896,187 @@ - - Performs logic before the external process is started - - Process. + + Performs logic before the external process is started + + Process. - - Executes the task. - + + Executes the task. + - - Builds the arguments to pass to the exe. - + + Builds the arguments to pass to the exe. + - - Applies the XSL transformation specified in /outXsl to the analysis report before saving the file. - + + Applies the XSL transformation specified in /outXsl to the analysis report before saving the file. + - - Directs analysis output to the console or to the Output window in Visual Studio .NET. By default, the XSL file FxCopConsoleOutput.xsl is applied to the output before it is displayed. - + + Directs analysis output to the console or to the Output window in Visual Studio .NET. By default, the XSL file FxCopConsoleOutput.xsl is applied to the output before it is displayed. + - - Specifies the XSL or XSLT file that contains a transformation to be applied to the analysis output before it is displayed in the console. - + + Specifies the XSL or XSLT file that contains a transformation to be applied to the analysis output before it is displayed in the console. + - - Specifies additional directories to search for assembly dependencies. FxCopCmd always searches the target assembly directory and the current working directory. - + + Specifies additional directories to search for assembly dependencies. FxCopCmd always searches the target assembly directory and the current working directory. + - - Specifies the target assembly to analyze. - + + Specifies the target assembly to analyze. + - - Specifies the name of an analysis report or project file to import. Any messages in the imported file that are marked as excluded are not included in the analysis results. - + + Specifies the name of an analysis report or project file to import. Any messages in the imported file that are marked as excluded are not included in the analysis results. + - - Specifies the file name for the analysis report. - + + Specifies the file name for the analysis report. + - - Specifies the XSL or XSLT file that is referenced by the xml-stylesheet processing instruction in the analysis report. - + + Specifies the XSL or XSLT file that is referenced by the xml-stylesheet processing instruction in the analysis report. + - - Specifies the location of the version of Mscorlib.dll that was used when building the target assemblies if this version is not installed on the computer running FxCopCmd. - + + Specifies the location of the version of Mscorlib.dll that was used when building the target assemblies if this version is not installed on the computer running FxCopCmd. + - - Specifies the filename of FxCop project file. - + + Specifies the filename of FxCop project file. + - - Specifies the filename(s) of FxCop project file(s). - + + Specifies the filename(s) of FxCop project file(s). + - - Includes a summary report with the informational messages returned by FxCopCmd. - + + Includes a summary report with the informational messages returned by FxCopCmd. + - - Comma-separated list of type names to analyze. This option disables analysis of assemblies, namespaces, and resources; only the specified types and their members are included in the analysis. - Use the wildcard character '*' at the end of the name to select multiple types. - + + Comma-separated list of type names to analyze. This option disables analysis of assemblies, namespaces, and resources; only the specified types and their members are included in the analysis. + Use the wildcard character '*' at the end of the name to select multiple types. + - - Saves the results of the analysis in the project file. - + + Saves the results of the analysis in the project file. + - - Determines if the task should fail when analysis errors occur - + + Determines if the task should fail when analysis errors occur + - - The directory in which the command will be executed. - - - The directory in which the command will be executed. The default - is the project's base directory. - - - - It will be evaluated relative to the project's - base directory if it is relative. - - + + The directory in which the command will be executed. + + + The directory in which the command will be executed. The default + is the project's base directory. + + + + It will be evaluated relative to the project's + base directory if it is relative. + + - - Gets the program arguments. - + + Gets the program arguments. + - - Installs assemblies into the Global Assembly Cache (GAC) by using the - gacutil SDK tool. - - - - Assemblies can be installed to the GAC with or without reference counting. - The full details of reference counting can be found in the SDK - documentation. - - - - Installs Shared.dll into the GAC. - - - - - - - ]]> - - - - - Installs Shared.dll and MyWeb.dll into the GAC. - - - - - - - - - ]]> - - - - - Installs Shared.dll and MyWeb.dll into the GAC and - specifies reference information. - - - - - - - - - - ]]> - - + + Installs assemblies into the Global Assembly Cache (GAC) by using the + gacutil SDK tool. + + + + Assemblies can be installed to the GAC with or without reference counting. + The full details of reference counting can be found in the SDK + documentation. + + + + Installs Shared.dll into the GAC. + + + + + + + ]]> + + + + + Installs Shared.dll and MyWeb.dll into the GAC. + + + + + + + + + ]]> + + + + + Installs Shared.dll and MyWeb.dll into the GAC and + specifies reference information. + + + + + + + + + + ]]> + + - - Base class functionality for the GAC tasks. - - - Concrete GAC tasks extend this class in order to obtain common functionality. - + + Base class functionality for the GAC tasks. + + + Concrete GAC tasks extend this class in order to obtain common functionality. + - - Stores the details of the assembly currently being operated against. This could be a name or - path, depending on the concrete task. - + + Stores the details of the assembly currently being operated against. This could be a name or + path, depending on the concrete task. + @@ -14074,101 +14089,101 @@ - - Constructs and initialises an instance of GacTask. - + + Constructs and initialises an instance of GacTask. + - - Starts the process that is wrapped by this GAC task. - - - Provided only to seal the implementation of StartProcess(). - - The process that was started. + + Starts the process that is wrapped by this GAC task. + + + Provided only to seal the implementation of StartProcess(). + + The process that was started. - - Validates the task's configuration. - + + Validates the task's configuration. + - - Executes the task. - - - Provided only to seal the implementation of ExecuteTask(). - + + Executes the task. + + + Provided only to seal the implementation of ExecuteTask(). + - - Appends any task-specific program arguments. - - The StringBuilder on which to append program arguments. - - Subclasses must override this method to return the arguments with which to run the GAC task. - + + Appends any task-specific program arguments. + + The StringBuilder on which to append program arguments. + + Subclasses must override this method to return the arguments with which to run the GAC task. + - - Invoked prior to invoking ExecuteTask() on the base class. - - - Allows, for example, subclasses to output useful information to the log. - + + Invoked prior to invoking ExecuteTask() on the base class. + + + Allows, for example, subclasses to output useful information to the log. + - - Gets or sets a value indicating whether the GAC operation will be forced. - - - The exact meaning of this property is dependent on the subclass. As such, subclasses should override this - property to provide a valid description. - + + Gets or sets a value indicating whether the GAC operation will be forced. + + + The exact meaning of this property is dependent on the subclass. As such, subclasses should override this + property to provide a valid description. + - - Specifies reference details to use when working with the GAC. - + + Specifies reference details to use when working with the GAC. + - - Concrete GAC tasks must override this property to return an array of assembly names or paths - upon which to operate. - + + Concrete GAC tasks must override this property to return an array of assembly names or paths + upon which to operate. + - - Gets the executable name for the gacutil command-line tool. - + + Gets the executable name for the gacutil command-line tool. + - - Specifies whether a reference was specified for the GAC task. - + + Specifies whether a reference was specified for the GAC task. + - - Gets the current assembly being operated against. - + + Gets the current assembly being operated against. + - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + - - Gets the program arguments with which to run the gacutil process. - + + Gets the program arguments with which to run the gacutil process. + @@ -14176,37 +14191,37 @@ - - Constructs and initialises an instance of the GacInstallTask. - + + Constructs and initialises an instance of the GacInstallTask. + - - Appends any install-specific arguments. - - The StringBuilder to append arguments to. + + Appends any install-specific arguments. + + The StringBuilder to append arguments to. - - Outputs log information. - + + Outputs log information. + - - Specifies the assemblies to install. - + + Specifies the assemblies to install. + - - Gets the assembly list to install. - + + Gets the assembly list to install. + - - If , the specified assemblies will be forcibly - installed. Any existing duplicate assemblies in the GAC will be - overwritten. The default is . - + + If , the specified assemblies will be forcibly + installed. Any existing duplicate assemblies in the GAC will be + overwritten. The default is . + @@ -14268,9 +14283,9 @@ - - The name of a file that contains an assembly manifest. - + + The name of a file that contains an assembly manifest. + @@ -14279,22 +14294,22 @@ - - Fileset are used to define multiple assemblies. - + + Fileset are used to define multiple assemblies. + - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + @@ -14303,21 +14318,21 @@ - - Installs an assembly into the global assembly cache. - + + Installs an assembly into the global assembly cache. + - - Installs an assembly into the global assembly cache. If an assembly - with the same name already exists in the global assembly cache, it is - overwritten. - + + Installs an assembly into the global assembly cache. If an assembly + with the same name already exists in the global assembly cache, it is + overwritten. + - - Uninstalls an assembly from the global assembly cache. - + + Uninstalls an assembly from the global assembly cache. + @@ -14425,253 +14440,253 @@ - - Constructs an instance of the GacUninstallTask. - + + Constructs an instance of the GacUninstallTask. + - - Appends any install-specific arguments. - - + + Appends any install-specific arguments. + + - - Outputs log information. - + + Outputs log information. + - - If , specifies that the assemblies should be - uninstalled from the native image cache. The default is . - + + If , specifies that the assemblies should be + uninstalled from the native image cache. The default is . + - - Specifies the assemblies to uninstall. - + + Specifies the assemblies to uninstall. + - - Gets the assembly list to uninstall. - + + Gets the assembly list to uninstall. + - - If , the specified assemblies will be forcibly - removed from the GAC. All references to the specified assemblies will - be removed from the GAC prior to removing the assemblies themselves. - The default is . - - - You cannot use this option to remove an assembly that was installed using Microsoft Windows Installer. - + + If , the specified assemblies will be forcibly + removed from the GAC. All references to the specified assemblies will + be removed from the GAC prior to removing the assemblies themselves. + The default is . + + + You cannot use this option to remove an assembly that was installed using Microsoft Windows Installer. + - - Compiles a Microsoft HTML Help 2.0 Project. - - - Compile a help file. - - - ]]> - - + + Compiles a Microsoft HTML Help 2.0 Project. + + + Compile a help file. + + + ]]> + + - - The name of the contents (.HxC) file. - + + The name of the contents (.HxC) file. + - - ANSI/DBCS log filename. - + + ANSI/DBCS log filename. + - - Unicode log filename. - + + Unicode log filename. + - - Root directory containing Help 2.0 project files. - + + Root directory containing Help 2.0 project files. + - - Output (.HxS) filename. - + + Output (.HxS) filename. + - - Generate no informational messages. - + + Generate no informational messages. + - - Generate no error messages. - + + Generate no error messages. + - - Generate no warning messages. - + + Generate no warning messages. + - - File to be decompiled. - + + File to be decompiled. + - - Directory to place decompiled files into. - + + Directory to place decompiled files into. + - - Arguments of program to execute - + + Arguments of program to execute + - - Registers a Microsoft HTML Help 2.0 Collection. - - - Register a help namespace. - - - ]]> - - + + Registers a Microsoft HTML Help 2.0 Collection. + + + Register a help namespace. + + + ]]> + + - Help collection namespace. + Help collection namespace. - Title identifier. + Title identifier. - Collection (.HxC) filename. + Collection (.HxC) filename. - Description of the namespace. + Description of the namespace. - Help (.HxS) filename. + Help (.HxS) filename. - Index (.HxI) filename. + Index (.HxI) filename. - Combined full-text search (.HxQ) filename. + Combined full-text search (.HxQ) filename. - Combined attribute index (.HxR) filename. + Combined attribute index (.HxR) filename. - Language ID. + Language ID. - Alias. + Alias. - Filename of a file containing HxReg commands. + Filename of a file containing HxReg commands. - Unregister a namespace, title, or alias. + Unregister a namespace, title, or alias. - - Arguments of program to execute - + + Arguments of program to execute + - - Reads String values in INI files. - - Reads the value for AutoRefresh in the MS Transaction Server section - of the VendorMISMO2.ini ini file. Stores the value in the "myvar" property. - - - - ]]> - - The file contents look like this: - - [MS Transaction Server] - Executable="VendorMISMO2.dll" - AutoRefresh=1 - - + + Reads String values in INI files. + + Reads the value for AutoRefresh in the MS Transaction Server section + of the VendorMISMO2.ini ini file. Stores the value in the "myvar" property. + + + + ]]> + + The file contents look like this: + + [MS Transaction Server] + Executable="VendorMISMO2.dll" + AutoRefresh=1 + + - - INI File to Write To. - + + INI File to Write To. + - - Key to set the value for. - + + Key to set the value for. + - - value to set. - + + value to set. + - - Section in the INI file. - + + Section in the INI file. + - - property where we store the return value. - + + property where we store the return value. + - - Sets String values in INI files. - - - Set the value for Executable in the VendorMISMO2.ini ini file - - - ]]> - - The file contents look like this: - - [MS Transaction Server] - Executable="VendorMISMO2.dll" - AutoRefresh=1 - - + + Sets String values in INI files. + + + Set the value for Executable in the VendorMISMO2.ini ini file + + + ]]> + + The file contents look like this: + + [MS Transaction Server] + Executable="VendorMISMO2.dll" + AutoRefresh=1 + + - - INI File to Write To. - + + INI File to Write To. + - - Key to set the value for. - + + Key to set the value for. + - - value to set. - + + value to set. + - - Section in the INI file. - + + Section in the INI file. + @@ -14697,218 +14712,218 @@ - - The unique identifier of the process to stop. - + + The unique identifier of the process to stop. + - - The name of the computer on the network on which the process must - be stopped. The default is the local computer. - + + The name of the computer on the network on which the process must + be stopped. The default is the local computer. + - - The maximum amount of time to wait until the process is stopped, - expressed in milliseconds. The default is to wait indefinitely. - + + The maximum amount of time to wait until the process is stopped, + expressed in milliseconds. The default is to wait indefinitely. + - - Loads a file's contents as NAnt properties. - - - - Each line in a .properties file stores a single property, with the - name and value separated by an equals sign. - - - Empty lines and lines that start with a '#' character are skipped. - - - - - - ]]> - - + + Loads a file's contents as NAnt properties. + + + + Each line in a .properties file stores a single property, with the + name and value separated by an equals sign. + + + Empty lines and lines that start with a '#' character are skipped. + + + + + + ]]> + + - - The encoding to use when loading the file. The default is the - system's current ANSI code page. - + + The encoding to use when loading the file. The default is the + system's current ANSI code page. + - - The file to load properties from. - + + The file to load properties from. + - - Chain of filters used to alter the file's content as it is - copied. - + + Chain of filters used to alter the file's content as it is + copied. + - - A task that generates strongly typed WMI classes using - mgmtclassgen.exe. - - - The Management Strongly Typed Class Generator - enables you to quickly generate an early-bound - managed class for a specified Windows Management - Instrumentation (WMI) class. The generated - class simplifies the code you must write to access - an instance of the WMI class. - - - - - ]]> - - + + A task that generates strongly typed WMI classes using + mgmtclassgen.exe. + + + The Management Strongly Typed Class Generator + enables you to quickly generate an early-bound + managed class for a specified Windows Management + Instrumentation (WMI) class. The generated + class simplifies the code you must write to access + an instance of the WMI class. + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Specifies the name of the WMI class - to generate the strongly typed class - + + Specifies the name of the WMI class + to generate the strongly typed class + - - Specifies the language in which to generate - the class. Possible values are: CS, VB, JS - + + Specifies the language in which to generate + the class. Possible values are: CS, VB, JS + - - Specifies the machine to connect to. - + + Specifies the machine to connect to. + - - Specifies the path to the WMI namespace - that contains the class. - + + Specifies the path to the WMI namespace + that contains the class. + - - Namespace of the generated .NET class - + + Namespace of the generated .NET class + - - Path of the file to generate - + + Path of the file to generate + - - User name to use when connecting to - the specified machine - + + User name to use when connecting to + the specified machine + - - Password to use when connecting to the - specified machine - + + Password to use when connecting to the + specified machine + - - Filename of program to execute - + + Filename of program to execute + - - Arguments of program to execute - + + Arguments of program to execute + - - Builds the specified targets in the project file using MSBuild. - - - - If a project file is not specified, MSBuild searches the current - working directory for a file that has a file extension that ends in - "proj" and uses that file. - - + + Builds the specified targets in the project file using MSBuild. + + + + If a project file is not specified, MSBuild searches the current + working directory for a file that has a file extension that ends in + "proj" and uses that file. + + - - Starts the external process and captures its output. - + + Starts the external process and captures its output. + - - The project to build. - + + The project to build. + - - Set or override these project-level properties. - + + Set or override these project-level properties. + - - Build these targets in this project. Use a semicolon or a comma - comma to separate multiple targets. - + + Build these targets in this project. Use a semicolon or a comma + comma to separate multiple targets. + - - Do not auto-include the MSBuild.rsp file. - + + Do not auto-include the MSBuild.rsp file. + - - Specifies the amount of information to display in the MSBuild log. - + + Specifies the amount of information to display in the MSBuild log. + - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + @@ -14929,175 +14944,175 @@ - - Pre-translates native code for an assembly containing IL (Intermediary - Language bytecode) on the Windows platform. - - - - - ]]> - - + + Pre-translates native code for an assembly containing IL (Intermediary + Language bytecode) on the Windows platform. + + + + + ]]> + + - Assembly path or display name. + Assembly path or display name. - If existing images should be shown. + If existing images should be shown. - If existing images should be deleted. + If existing images should be deleted. - If an image should be generated which - can be used under a debugger. + If an image should be generated which + can be used under a debugger. - If an image should be generated which - can be used under a debugger in optimized - debugging mode. + If an image should be generated which + can be used under a debugger in optimized + debugging mode. - If an image should be generated which - can be used under a profiler. + If an image should be generated which + can be used under a profiler. - - Arguments of program to execute - + + Arguments of program to execute + - - A task that generates a summary HTML - from a set of NUnit xml report files. - Loosely based on Erik Hatcher JUnitReport for Ant. - - - This task can generate a combined HTML report out of a - set of NUnit result files generated using the - XML Result Formatter. - - By default, NUnitReport will generate the combined - report using the NUnitSummary.xsl file located at the - assembly's location, but you can specify a different - XSLT template to use with the xslfile - attribute. - - Also, all the properties defined in the current - project will be passed down to the XSLT file as - template parameters, so you can access properties - such as nant.project.name, nant.version, etc. - - - - - - - - - ]]> - + + A task that generates a summary HTML + from a set of NUnit xml report files. + Loosely based on Erik Hatcher JUnitReport for Ant. + + + This task can generate a combined HTML report out of a + set of NUnit result files generated using the + XML Result Formatter. + + By default, NUnitReport will generate the combined + report using the NUnitSummary.xsl file located at the + assembly's location, but you can specify a different + XSLT template to use with the xslfile + attribute. + + Also, all the properties defined in the current + project will be passed down to the XSLT file as + template parameters, so you can access properties + such as nant.project.name, nant.version, etc. + + + + + + + + + ]]> + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Initializes the XmlDocument instance - used to summarize the test results - - + + Initializes the XmlDocument instance + used to summarize the test results + + - - Builds an XsltArgumentList with all - the properties defined in the - current project as XSLT parameters. - - Property List + + Builds an XsltArgumentList with all + the properties defined in the + current project as XSLT parameters. + + Property List - - Loads the XSLT Transform - - - This method will load the file specified - through the the xslfile attribute, or - the default transformation included - as a managed resource. - - The Transformation to use + + Loads the XSLT Transform + + + This method will load the file specified + through the the xslfile attribute, or + the default transformation included + as a managed resource. + + The Transformation to use - - Name of Output HTML file. - + + Name of Output HTML file. + - - XSLT file used to generate the report. - + + XSLT file used to generate the report. + - - Set of XML files to use as input - + + Set of XML files to use as input + - - Custom XmlResolver used to load the - XSLT files out of this assembly resources. - + + Custom XmlResolver used to load the + XSLT files out of this assembly resources. + - - Loads the XSLT file - - - - - + + Loads the XSLT file + + + + + - - A task that records the build's output to a file. Loosely based on Ant's - Record - task. - - - This task allows you to record the build's output, or parts of it to a - file. You can start and stop recording at any place in the build process. - - - - - - ]]> - - + + A task that records the build's output to a file. Loosely based on Ant's + Record + task. + + + This task allows you to record the build's output, or parts of it to a + file. You can start and stop recording at any place in the build process. + + + + + + ]]> + + - - This is where the work is done. - + + This is where the work is done. + - - Name of destination file. - + + Name of destination file. + @@ -15127,68 +15142,68 @@ - - Registers an assembly for use from COM clients. - - - - Refer to the Regasm - documentation for more information on the regasm tool. - - - - - Register a single assembly. - - - - ]]> - - - - - Register an assembly while exporting a typelibrary. - - - - ]]> - - - - - Register a set of assemblies at once. - - - - - - - - - ]]> - - + + Registers an assembly for use from COM clients. + + + + Refer to the Regasm + documentation for more information on the regasm tool. + + + + + Register a single assembly. + + + + ]]> + + + + + Register an assembly while exporting a typelibrary. + + + + ]]> + + + + + Register a set of assemblies at once. + + + + + + + + + ]]> + + - - The name of the file to register. This is provided as an alternate - to using the task's fileset. - + + The name of the file to register. This is provided as an alternate + to using the task's fileset. + - - Registry file to export to instead of entering the types directly - into the registry. If a fileset is used then the entries are all - collated into this file. - + + Registry file to export to instead of entering the types directly + into the registry. If a fileset is used then the entries are all + collated into this file. + - - Set the code base registry setting. - + + Set the code base registry setting. + @@ -15198,31 +15213,31 @@ - - Only refer to already registered type libraries. - + + Only refer to already registered type libraries. + - - Export the assembly to the specified type library and register it. - This attribute is ignored when a fileset is specified. - + + Export the assembly to the specified type library and register it. + This attribute is ignored when a fileset is specified. + - - Unregister the assembly. The default is . - + + Unregister the assembly. The default is . + - - The set of files to register. - + + The set of files to register. + - - Indicates that class should be validated by an XML Schema. - - None. + + Indicates that class should be validated by an XML Schema. + + None. @@ -15255,151 +15270,151 @@ - - Specifies that no reference counting scheme will be used when performing the GAC task. - + + Specifies that no reference counting scheme will be used when performing the GAC task. + - - Specifies that registry-related reference counting will be used when performing the GAC task. - - - When the scheme type is set to UninstallKey, the related scheme ID should be set to the name of the application - set in the HKLM\Software\Microsoft\Windows\CurrentVersion registry key. - - + + Specifies that registry-related reference counting will be used when performing the GAC task. + + + When the scheme type is set to UninstallKey, the related scheme ID should be set to the name of the application + set in the HKLM\Software\Microsoft\Windows\CurrentVersion registry key. + + - - Specifies that file-based reference counting will be used when performing the GAC task. - - - When the scheme type is set to FilePath, the related scheme ID should be set to the full path to the executable - file that installs the assembly. - - + + Specifies that file-based reference counting will be used when performing the GAC task. + + + When the scheme type is set to FilePath, the related scheme ID should be set to the full path to the executable + file that installs the assembly. + + - - Specifies that custom information will be supplied to accommodate reference counting. - - - When the scheme type is set to Opaque, the related scheme ID can be set to any custom piece of information. - + + Specifies that custom information will be supplied to accommodate reference counting. + + + When the scheme type is set to Opaque, the related scheme ID can be set to any custom piece of information. + - - Copies a file to a remote server using scp. - - - Copies a file using scp to a remote server. - The Username Environment variable is used. - - - Copy a single file to a remote server and path. - - - ]]> - - + + Copies a file to a remote server using scp. + + + Copies a file using scp to a remote server. + The Username Environment variable is used. + + + Copy a single file to a remote server and path. + + + ]]> + + - - The program to execute. The default is "scp". - + + The program to execute. The default is "scp". + - - The command line arguments. - + + The command line arguments. + - - The file to transfer. - + + The file to transfer. + - - The server to send the file to. - + + The server to send the file to. + - - The path on the remote server. The default is "~". - + + The path on the remote server. The default is "~". + - - The username to connect as. The default is the value of the - USERNAME environment variable. - + + The username to connect as. The default is the value of the + USERNAME environment variable. + - - The path separator used by the program. The default is "/". - + + The path separator used by the program. The default is "/". + - - Gets the filename of the external program to start. - - - The filename of the external program. - + + Gets the filename of the external program to start. + + + The filename of the external program. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - The directory in which the command will be executed. - + + The directory in which the command will be executed. + - - Converts a Visual Studio.NET Solution to a NAnt build file or nmake file. - - - - Convert the solution MySolution.sln to the NAnt build file - MySolution.build and call the new build file. - - - - - - - - ]]> - - - - - Convert the solution MySolution.sln to the NAnt build file - MySolution.build. As the solution contains one or more web - projects, one or more maps needs to be specified. - - - - - - - - - ]]> - - + + Converts a Visual Studio.NET Solution to a NAnt build file or nmake file. + + + + Convert the solution MySolution.sln to the NAnt build file + MySolution.build and call the new build file. + + + + + + + + ]]> + + + + + Convert the solution MySolution.sln to the NAnt build file + MySolution.build. As the solution contains one or more web + projects, one or more maps needs to be specified. + + + + + + + + + ]]> + + @@ -15416,119 +15431,119 @@ - - The Visual Studio.NET solution file to convert. - + + The Visual Studio.NET solution file to convert. + - - The output file format - either nant or nmake. - + + The output file format - either nant or nmake. + - - The output file name. - + + The output file name. + - - Mappings from URI to directories. These are required for web projects. - + + Mappings from URI to directories. These are required for web projects. + - - Parameters to pass to SLiNgshoT. The parameter build.basedir is required. - + + Parameters to pass to SLiNgshoT. The parameter build.basedir is required. + - - A task to execute arbitrary SQL statements against a OLEDB data source. - - - You can specify a set of sql statements inside the - sql element, or execute them from a text file that contains them. You can also - choose to execute the statements in a single batch, or execute them one by one - (even inside a transaction, if you want to). - - - - Execute a set of statements inside a transaction. - - - - INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('My Job', 22, 45); - INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('Other Job', 09, 43); - SELECT * FROM jobs; - - ]]> - - - - - Execute a set of statements from a file and write all query results - to a file. - - - - ]]> - - - - - Execute a SQL script generated by SQL Server Enterprise Manager. - - - - ]]> - - + + A task to execute arbitrary SQL statements against a OLEDB data source. + + + You can specify a set of sql statements inside the + sql element, or execute them from a text file that contains them. You can also + choose to execute the statements in a single batch, or execute them one by one + (even inside a transaction, if you want to). + + + + Execute a set of statements inside a transaction. + + + + INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('My Job', 22, 45); + INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('Other Job', 09, 43); + SELECT * FROM jobs; + + ]]> + + + + + Execute a set of statements from a file and write all query results + to a file. + + + + ]]> + + + + + Execute a SQL script generated by SQL Server Enterprise Manager. + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done. - + + This is where the work is done. + - - Executes the SQL Statements one by one. - - + + Executes the SQL Statements one by one. + + - - Executes the SQL statements in a single batch. - - + + Executes the SQL statements in a single batch. + + @@ -15538,94 +15553,94 @@ to write output to. - - Connection string used to access database. - This should be an OleDB connection string. - + + Connection string used to access database. + This should be an OleDB connection string. + - - The encoding of the files containing SQL statements. The default is - the system's current ANSI code page. - + + The encoding of the files containing SQL statements. The default is + the system's current ANSI code page. + - - File where the sql statements are defined. - - - You cannot specify both a source and an inline set of statements. - + + File where the sql statements are defined. + + + You cannot specify both a source and an inline set of statements. + - - String that separates statements from one another. - + + String that separates statements from one another. + - - If true, the statements will be executed as a single batch. - If false, they will be executed one by one. Default is true. - + + If true, the statements will be executed as a single batch. + If false, they will be executed one by one. Default is true. + - - If true, the any nant-style properties on the sql will be - expanded before execution. Default is true. - + + If true, the any nant-style properties on the sql will be + expanded before execution. Default is true. + - - Command timeout to use when creating commands. - + + Command timeout to use when creating commands. + - - Kind of delimiter used. Allowed values are Normal or Line. - - - Delimiters can be of two kinds: Normal delimiters are - always specified inline, so they permit having two - different statements in the same line. Line delimiters, - however, need to be in a line by their own. - Default is Normal. - + + Kind of delimiter used. Allowed values are Normal or Line. + + + Delimiters can be of two kinds: Normal delimiters are + always specified inline, so they permit having two + different statements in the same line. Line delimiters, + however, need to be in a line by their own. + Default is Normal. + - - If set to true, results from the statements will be - output to the build log. - + + If set to true, results from the statements will be + output to the build log. + - - If set, the results from the statements will be output to the - specified file. - + + If set, the results from the statements will be output to the + specified file. + - - If set to , all statements will be executed - within a single transaction. The default is . - + + If set to , all statements will be executed + within a single transaction. The default is . + - - Whether output should be appended to or overwrite - an existing file. The default is . - + + Whether output should be appended to or overwrite + an existing file. The default is . + - - If set to , prints headers for result sets. - The default is . - + + If set to , prints headers for result sets. + The default is . + - - The character(s) to surround result columns with when printing, the - default is an empty string. - + + The character(s) to surround result columns with when printing, the + default is an empty string. + @@ -15637,426 +15652,231 @@ or if is not set. - - - Executes a set of tasks, and optionally catches a build exception to - allow recovery or rollback steps to be taken, or to define some steps - to be taken regardless if the tasks succeed or fail, or both. - + + Generates collection classes based on a given XML specification file. Code generation is in the specified language. - - The tasks defined in the <> block - will be executed in turn, as they normally would in a target. - - - If a <> block is defined, the - tasks in that block will be executed in turn only if one of the tasks - in the <> block fails. This - failure will then be suppressed by the <> - block. - - - The message associated with the failure can also be caught in a - property for use within the <> - block. The original contents of the property will be restored upon - exiting the <> block. - - - If a <> block is defined, the - tasks in that block will be executed after the tasks in both the - <> and <> - blocks have been executed, regardless of whether any task fails in - either block. - + See the CollectionGen tool page for more information. + + + + + + + + ]]> + + + + + + The actual generation work is done here. + + + + + + The language to generate collection classes for. Valid values are "CSharp" or "VB". + + + The name of the template file for collection generation. This is provided as an alternate to using the task's fileset. + + + + All files in this fileset will be run thru the collection generator. + + + + + Validates a set of XML files based on a set of XML Schemas (XSD). + - - - - - - - - - - - + + + + + + + + + ]]> + + + + + This is where the work is done. + + + + + The XML files that must be validated. + + + + + The XML Schemas (XSD) to use for validation. + + + + + Compiles Microsoft Visual Basic 6 programs. + + - The output of this example will be: + Uses the VB6.EXE executable included with the Visual Basic 6 + environment. - - In try - In catch - Finally done - - The failure in the <> block will - not cause the build to fail. + The compiler uses the settings and source files specified in the + project or group file. - + - - - - - - - - - - - - - - - ]]> - - - The output of this example will be: - - - In try - Caught failure: Just because... - Finally done - Build failed: Bad catch - - Like the above, the failure in the <> - block does not cause the build to fail. The failure in the - <> block does, however. - Note that the <> block is - executed even though the <> - block failed. + Build the project HelloWorld.vbp in the build directory. - - - - - - - - - - - - - - + ]]> - - The output of this example will be: - - - In try - Caught failure yet again - Build failed: Property 'failure' has not been set. - - - The in the <> - block failed because the "failure" property was not defined - after exiting the <> block. - Note that the failure in the <> - block has eclipsed the failure in the <> - block. - + + Check compiled property "vb6.compiled" + - - - - - - - - - - - - + + ]]> - - - A more concrete example, that will always clean up the generated - temporary file after it has been created. - + - - - The tasks in this block will be executed as a normal part of - the build script. - - - - - The tasks in this block will be executed if any task in the try - block fails. - - - - - The tasks in this block will always be executed, regardless of - what happens in the try and catch blocks. - - - Note that any failure in any of the tasks in this block will - prevent any subsequent tasks from executing. - - - - - Defines the name of the property to save the message describing - the failure that has been caught. - - - - The failure message is only available in the context of the catch - block. If you wish to preserve the message, you will need to save - it into another property. - - - Readonly properties cannot be overridden by this mechanism. - - - - - Generates collection classes based on a given XML specification file. Code generation is in the specified language. - - See the CollectionGen tool page for more information. - - - - - - - - - ]]> - - - - - - The actual generation work is done here. - - - - - - The language to generate collection classes for. Valid values are "CSharp" or "VB". - - - The name of the template file for collection generation. This is provided as an alternate to using the task's fileset. - - - - All files in this fileset will be run thru the collection generator. - - - - - Validates a set of XML files based on a set of XML Schemas (XSD). - - - - - - - - - - - - - ]]> - - - - - - This is where the work is done. - - - - - The XML files that must be validated. - - - - - The XML Schemas (XSD) to use for validation. - - - - - Compiles Microsoft Visual Basic 6 programs. - - - - Uses the VB6.EXE executable included with the Visual Basic 6 - environment. - - - The compiler uses the settings and source files specified in the - project or group file. - - - - - Build the project HelloWorld.vbp in the build directory. - - - - ]]> - - - - - Check compiled property "vb6.compiled" - - - - - ]]> - - - - - Compiles the Visual Basic project or project group. - + + Compiles the Visual Basic project or project group. + - - Parses a VB group file and extract the file names of the sub-projects - in the group. - - The file name of the group file. - - A string collection containing the list of sub-projects in the group. - + + Parses a VB group file and extract the file names of the sub-projects + in the group. + + The file name of the group file. + + A string collection containing the list of sub-projects in the group. + - - Determines if a VB project needs to be recompiled by comparing the timestamp of - the project's files and references to the timestamp of the last built version. - - The file name of the project file. - - if the project should be compiled; otherwise, - . - + + Determines if a VB project needs to be recompiled by comparing the timestamp of + the project's files and references to the timestamp of the last built version. + + The file name of the project file. + + if the project should be compiled; otherwise, + . + - - VB6 uses a special algorithm to search for the typelib file. It doesn't - rely on the API function QueryPathOfRegTypeLib, because VB could use a newer - version of the TLB. - - The algorithm used by VB is not perfect and has some flaws, which you could - get a newer version even if your requested version is installed. This is because - the algorithm iterates the registry beneath the Guid - entry by entry - from the - beginning and returns the first TLB version that is higher or equal to the - requested version. - - pseudo code: - 1. open the key HKEY_CLASSES_ROOT\TypeLib\{Guid} - 2. If the key exists: - 3. Foreach version under the key that has the requested culture entry: - 4. If the version higher or equal to the requested version: - 5. Get the TLB filename and returns it - - The guid of the tlb to look for - The major version number of the tlb - The minor version number of the tlb. If you parse minor from a string, treat the string as hex value. - The culture id - null if couldn't find a match, otherwise it returns the file. + + VB6 uses a special algorithm to search for the typelib file. It doesn't + rely on the API function QueryPathOfRegTypeLib, because VB could use a newer + version of the TLB. + + The algorithm used by VB is not perfect and has some flaws, which you could + get a newer version even if your requested version is installed. This is because + the algorithm iterates the registry beneath the Guid - entry by entry - from the + beginning and returns the first TLB version that is higher or equal to the + requested version. + + pseudo code: + 1. open the key HKEY_CLASSES_ROOT\TypeLib\{Guid} + 2. If the key exists: + 3. Foreach version under the key that has the requested culture entry: + 4. If the version higher or equal to the requested version: + 5. Get the TLB filename and returns it + + The guid of the tlb to look for + The major version number of the tlb + The minor version number of the tlb. If you parse minor from a string, treat the string as hex value. + The culture id + null if couldn't find a match, otherwise it returns the file. - - Parses a VB project file and extracts the source files, reference files, and - the name of the compiled file for the project. - - The filename of the project file. - - A fileset representing the source files of the project, which will - populated by the method. - - - A fileset representing the references of the project, which will - populated by the method. - - A string containing the output file name for the project. + + Parses a VB project file and extracts the source files, reference files, and + the name of the compiled file for the project. + + The filename of the project file. + + A fileset representing the source files of the project, which will + populated by the method. + + + A fileset representing the references of the project, which will + populated by the method. + + A string containing the output file name for the project. - - Output directory for the compilation target. - + + Output directory for the compilation target. + - - Visual Basic project or group file. - + + Visual Basic project or group file. + - - Determines whether project references are checked when deciding - whether the project needs to be recompiled. The default is - . - + + Determines whether project references are checked when deciding + whether the project needs to be recompiled. The default is + . + - - The file to which the Visual Basic compiler should log errors. - + + The file to which the Visual Basic compiler should log errors. + - - Tells Visual Basic which values to use for conditional compilation - constants. - + + Tells Visual Basic which values to use for conditional compilation + constants. + - - The name of a property in which will be set to - if compilation was needed and done without errors (default: "vb6.compiled") - This can be used for touching the compilation files if - vb6 autoincrement is set to true to avoid recompilation without any - other changes. - + + The name of a property in which will be set to + if compilation was needed and done without errors (default: "vb6.compiled") + This can be used for touching the compilation files if + vb6 autoincrement is set to true to avoid recompilation without any + other changes. + - - Gets the filename of the external program to start. - - - The filename of the external program. - + + Gets the filename of the external program to start. + + + The filename of the external program. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + @@ -16128,22 +15948,22 @@ The version to write to . - - Calculates the build number based on the number of months since the - start date. - - - The build number based on the number of months since the start date. - + + Calculates the build number based on the number of months since the + start date. + + + The build number based on the number of months since the start date. + - - Calculates the number of seconds since midnight. - start date. - - - The number of seconds since midnight. - + + Calculates the number of seconds since midnight. + start date. + + + The number of seconds since midnight. + @@ -16155,26 +15975,26 @@ - - Calculates the complete version. - - - The version. - + + Calculates the complete version. + + + The version. + - - Calculates the revision number of the version number based on RevisionType specified - - - The revision number. - + + Calculates the revision number of the version number based on RevisionType specified + + + The revision number. + - - The string to prefix the properties with. The default is - 'buildnumber.'. - + + The string to prefix the properties with. The default is + 'buildnumber.'. + @@ -16184,10 +16004,10 @@ - - Path to the file containing the current version number. The default - file is 'build.number' in the project base directory. - + + Path to the file containing the current version number. The default + file is 'build.number' in the project base directory. + @@ -16202,40 +16022,40 @@ - - Defines possible algorithms to generate the build number. - + + Defines possible algorithms to generate the build number. + - - Use the number of months since start of project * 100 + current - day in month as build number. - + + Use the number of months since start of project * 100 + current + day in month as build number. + - - Increment an existing build number. - + + Increment an existing build number. + - - Use an existing build number (and do not increment it). - + + Use an existing build number (and do not increment it). + - - Defines possible algorithms to generate the revision number. - + + Defines possible algorithms to generate the revision number. + - - Use the number of seconds since the start of today / 10. - + + Use the number of seconds since the start of today / 10. + - - Increment an existing revision number. - + + Increment an existing revision number. + @@ -16267,110 +16087,110 @@ - - The unique identifier of the process to wait for. - + + The unique identifier of the process to wait for. + - - The maximum amount of time to wait until the process is exited, - expressed in milliseconds. The default is to wait indefinitely. - + + The maximum amount of time to wait until the process is exited, + expressed in milliseconds. The default is to wait indefinitely. + - Generates code for web service clients and xml web services - using ASP.NET from WSDL contract files, XSD Schemas and .discomap - discovery documents. Can be used in conjunction with .disco files. - - Generate a proxy class for a web service. - ]]> - + Generates code for web service clients and xml web services + using ASP.NET from WSDL contract files, XSD Schemas and .discomap + discovery documents. Can be used in conjunction with .disco files. + + Generate a proxy class for a web service. + ]]> + - URL or Path to a WSDL, XSD, or .discomap document. + URL or Path to a WSDL, XSD, or .discomap document. - Suppresses the banner. + Suppresses the banner. - Language of generated code. 'CS', 'VB', 'JS', - or the fully-qualified name of a class implementing - System.CodeDom.Compiler.CodeDomCompiler. + Language of generated code. 'CS', 'VB', 'JS', + or the fully-qualified name of a class implementing + System.CodeDom.Compiler.CodeDomCompiler. - Compiles server-side ASP.NET abstract classes - based on the web service contract. The default is to - create client side proxy classes. + Compiles server-side ASP.NET abstract classes + based on the web service contract. The default is to + create client side proxy classes. - Microsoft.NET namespace of generated classes. + Microsoft.NET namespace of generated classes. - Output filename of the created proxy. Default name is derived from the service name. + Output filename of the created proxy. Default name is derived from the service name. - Override default protocol to implement. Choose from 'SOAP', - 'HttpGet', 'HttpPost', or a custom protocol as specified in the - configuration file. + Override default protocol to implement. Choose from 'SOAP', + 'HttpGet', 'HttpPost', or a custom protocol as specified in the + configuration file. - Username of an account with credentials to access a - server that requires authentication. + Username of an account with credentials to access a + server that requires authentication. - Password of an account with credentials to access a - server that requires authentication. + Password of an account with credentials to access a + server that requires authentication. - Domain of an account with credentials to access a - server that requires authentication. + Domain of an account with credentials to access a + server that requires authentication. - URL of a proxy server to use for HTTP requests. - The default is to use the system proxy setting. + URL of a proxy server to use for HTTP requests. + The default is to use the system proxy setting. - Username of an account with credentials to access a - proxy that requires authentication. + Username of an account with credentials to access a + proxy that requires authentication. - Password of an account with credentials to access a - proxy that requires authentication. + Password of an account with credentials to access a + proxy that requires authentication. - Domain of an account with credentials to access a - proxy that requires authentication. + Domain of an account with credentials to access a + proxy that requires authentication. - Configuration key to use in the code generation to - read the default value for the Url property. The default is - not to read from the config file. + Configuration key to use in the code generation to + read the default value for the Url property. The default is + not to read from the config file. - Base Url to use when calculating the Url fragment. - The UrlKey attribute must also be specified. + Base Url to use when calculating the Url fragment. + The UrlKey attribute must also be specified. - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + @@ -16471,23 +16291,23 @@ - - XML Schema (.xsd) filename. - + + XML Schema (.xsd) filename. + - - Target of XML Schema compilation - either classes or - dataset. The default is classes. - + + Target of XML Schema compilation - either classes or + dataset. The default is classes. + - - XML element in the Schema to process. - - - TO-DO : turn this into collection of elements ! - + + XML element in the Schema to process. + + + TO-DO : turn this into collection of elements ! + @@ -16497,29 +16317,29 @@ - - Specifies the runtime namespace for the generated types. The default - namespace is Schemas. - + + Specifies the runtime namespace for the generated types. The default + namespace is Schemas. + - - The output directory in which to place generated files. - + + The output directory in which to place generated files. + - - Assembly (.dll or .exe) to generate an XML Schema for. - + + Assembly (.dll or .exe) to generate an XML Schema for. + - - Types in the assembly for which an XML schema is being created. - By default all types in the assembly will be included. - - - TO-DO : turn this into collection of types ! - + + Types in the assembly for which an XML schema is being created. + By default all types in the assembly will be included. + + + TO-DO : turn this into collection of types ! + @@ -16528,60 +16348,60 @@ - - XML document to generate an XML Schema for. - + + XML document to generate an XML Schema for. + - - XDR Schema to generate an XML Schema for. - + + XDR Schema to generate an XML Schema for. + - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Indicates the status of a service. - + + Indicates the status of a service. + - - The service is unbound. - + + The service is unbound. + - - The service is bound. - + + The service is bound. + - - The service is enlisted, but not started. - + + The service is enlisted, but not started. + - - The service is started. - + + The service is started. + @@ -16615,14 +16435,14 @@ - - Report with separate HTML frames. - + + Report with separate HTML frames. + - - Frameless report. - + + Frameless report. + @@ -16639,19 +16459,19 @@ - - Constructs and initializes an instance of Entity. - + + Constructs and initializes an instance of Entity. + - - The path for the entity. - + + The path for the entity. + - - If true then the entity will be included. The default is true. - + + If true then the entity will be included. The default is true. + @@ -16669,19 +16489,19 @@ - - Constructs and initializes an instance of EntitySet. - + + Constructs and initializes an instance of EntitySet. + - - Gets the collection of entity paths assigned to this entity set. - + + Gets the collection of entity paths assigned to this entity set. + - - The entities to include in the project task. - + + The entities to include in the project task. + @@ -16719,35 +16539,35 @@ - - Constructs and initializes an instance of Assembly. - + + Constructs and initializes an instance of Assembly. + - - Converts this Assembly object into it's string representation. - - + + Converts this Assembly object into it's string representation. + + - - The culture for the assembly. - + + The culture for the assembly. + - - If true then the assembly will be included. The default is true. - + + If true then the assembly will be included. The default is true. + - - The name of the assembly. - + + The name of the assembly. + - - The public key token of the assembly. - + + The public key token of the assembly. + @@ -16756,42 +16576,42 @@ - - The version of the assembly. - + + The version of the assembly. + - - Represents a set of assemblies via their identity information. - + + Represents a set of assemblies via their identity information. + - - Constructs and initializes an instance of AssemblySet. - + + Constructs and initializes an instance of AssemblySet. + - - Gets the collection of assemblies added to this assembly set. - + + Gets the collection of assemblies added to this assembly set. + - - The assemblies to include. - + + The assemblies to include. + - - The set of files to work on. - + + The set of files to work on. + - - The label to apply to the results. - + + The label to apply to the results. + @@ -16857,11 +16677,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -16894,10 +16714,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -16918,28 +16738,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -16947,14 +16767,14 @@ - - Holds the token which will be replaced in the filter operation. - + + Holds the token which will be replaced in the filter operation. + - - Holsd the value which will replace the token in the filtering operation. - + + Holsd the value which will replace the token in the filtering operation. + @@ -16970,14 +16790,14 @@ The value which will replace the token when filtering. - - The token which will be replaced when filtering. - + + The token which will be replaced when filtering. + - - The value which will replace the token when filtering. - + + The value which will replace the token when filtering. + @@ -17042,11 +16862,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -17079,10 +16899,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -17103,48 +16923,48 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - A set of filters to be applied to something. - - - - A filter set may have begintoken and endtokens defined. - - + + A set of filters to be applied to something. + + + + A filter set may have begintoken and endtokens defined. + + - - The default token start string. - + + The default token start string. + - - The default token end string. - + + The default token end string. + @@ -17152,30 +16972,30 @@ - - Does replacement on the given string with token matching. - - The line to process the tokens in. - - The line with the tokens replaced. - + + Does replacement on the given string with token matching. + + The line to process the tokens in. + + The line with the tokens replaced. + - - The string used to identity the beginning of a token. The default is - @. - + + The string used to identity the beginning of a token. The default is + @. + - - The string used to identify the end of a token. The default is - @. - + + The string used to identify the end of a token. The default is + @. + - - The filters to apply. - + + The filters to apply. + @@ -17229,11 +17049,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -17266,28 +17086,28 @@ The to remove from the collection. - - Does replacement on the given string with token matching. - - The line to process the tokens in. - - The line with the tokens replaced. - + + Does replacement on the given string with token matching. + + The line to process the tokens in. + + The line with the tokens replaced. + - - Checks to see if there are filters in the collection of filtersets. - - - if there are filters in this collection of - filtersets; otherwise, . - + + Checks to see if there are filters in the collection of filtersets. + + + if there are filters in this collection of + filtersets; otherwise, . + - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -17302,38 +17122,38 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Used to specify reference information when working with the GAC. - - - - The full details of GAC references can be found in the SDK documentation. - - + + Used to specify reference information when working with the GAC. + + + + The full details of GAC references can be found in the SDK documentation. + + @@ -17361,35 +17181,35 @@ - - Constructs and initializes an instance of GacReference. - + + Constructs and initializes an instance of GacReference. + - - If true then the entity will be included. The default is true. - + + If true then the entity will be included. The default is true. + - - The scheme type to use when working with GAC references. The default - is , which means that references will - not be used by the GAC task. - + + The scheme type to use when working with GAC references. The default + is , which means that references will + not be used by the GAC task. + - - The scheme ID to use when working with GAC references. This is only - relevant if a scheme type other than - is specified. - + + The scheme ID to use when working with GAC references. This is only + relevant if a scheme type other than + is specified. + - - The scheme description to use when working with GAC references. This - is only relevant if a scheme type other than - is specified. - + + The scheme description to use when working with GAC references. This + is only relevant if a scheme type other than + is specified. + @@ -17398,27 +17218,27 @@ - - Represents the an element based on a schema definition. - + + Represents the an element based on a schema definition. + - - Represents the schema collection element. - + + Represents the schema collection element. + - - Namespace URI associated with this schema. - If not present, it is assumed that the - schema's targetNamespace value is to be used. - + + Namespace URI associated with this schema. + If not present, it is assumed that the + schema's targetNamespace value is to be used. + - - Location of this schema. Could be a - local file path or an HTTP URL. - + + Location of this schema. Could be a + local file path or an HTTP URL. + @@ -17484,11 +17304,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -17521,10 +17341,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -17545,34 +17365,34 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Helper class to calculate checksums - of files. - + + Helper class to calculate checksums + of files. + @@ -17582,50 +17402,50 @@ The specified hash algorithm does not exist. - - Calculates a checksum for a given file - and returns it in a hex string - - name of the input file - hex checksum string + + Calculates a checksum for a given file + and returns it in a hex string + + name of the input file + hex checksum string - - Converts a checksum value (a byte array) - into a Hex-formatted string. - - Checksum value to convert - Hexified string value + + Converts a checksum value (a byte array) + into a Hex-formatted string. + + Checksum value to convert + Hexified string value - - Recorder interface user with the Record task - + + Recorder interface user with the Record task + - - Starts recording. - + + Starts recording. + - - Stops recording. - + + Stops recording. + - - Closes the recorder. - + + Closes the recorder. + - - Flushes the recorder. - + + Flushes the recorder. + - - Gets the name of this recorder (possibly a file name). - + + Gets the name of this recorder (possibly a file name). + @@ -17633,15 +17453,15 @@ - - Defines whether the underlying writer is automatically flushes or - not. - + + Defines whether the underlying writer is automatically flushes or + not. + - - Keeps track of used recorders - + + Keeps track of used recorders + @@ -17650,9 +17470,9 @@ - - Flushes buffered build events or messages to the underlying storage. - + + Flushes buffered build events or messages to the underlying storage. + @@ -17720,11 +17540,11 @@ - - Empty implementation which allows derived classes to receive the - output that is generated in this logger. - - The message being logged. + + Empty implementation which allows derived classes to receive the + output that is generated in this logger. + + The message being logged. @@ -17754,28 +17574,28 @@ TODO - - Gets or sets the highest level of message this logger should respond - to. - - - The highest level of message this logger should respond to. - - - Only messages with a message level higher than or equal to the given - level should be written to the log. - + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - if output is to be unadorned so that emacs - and other editors can parse files names, etc. The default is - . - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + @@ -17784,9 +17604,9 @@ - - Groups a set of useful file manipulation methods. - + + Groups a set of useful file manipulation methods. + @@ -17817,161 +17637,161 @@ The collection of filtersets that should be applied to the file. - - Given an absolute directory and an absolute file name, returns a - relative file name. - - An absolute directory. - An absolute file name. - - A relative file name for the given absolute file name. - + + Given an absolute directory and an absolute file name, returns a + relative file name. + + An absolute directory. + An absolute file name. + + A relative file name for the given absolute file name. + - - Returns a string from your INI file - - - - - + + Returns a string from your INI file + + + + + - - ' Writes a string to your INI file - - - - + + ' Writes a string to your INI file + + + + - - Helper class used to execute Sql Statements. - + + Helper class used to execute Sql Statements. + - - Initializes a new instance. - - OleDB Connection string - True if you want to use a transaction + + Initializes a new instance. + + OleDB Connection string + True if you want to use a transaction - - Close the connection and terminate - - true if the transaction should be commited + + Close the connection and terminate + + true if the transaction should be commited - - Executes a SQL statement. - - SQL statement to execute - Command timeout to use - Data reader used to check the result + + Executes a SQL statement. + + SQL statement to execute + Command timeout to use + Data reader used to check the result - - OleDB Connection object - + + OleDB Connection object + - - Helper class to adapt SQL statements from some - input into something OLEDB can consume directly - + + Helper class to adapt SQL statements from some + input into something OLEDB can consume directly + - - Creates a new instance - - + + Creates a new instance + + - - Adapts a set of Sql statements from a string. - - A string containing the original sql statements + + Adapts a set of Sql statements from a string. + + A string containing the original sql statements - - Adapts a set of Sql statements from a string. - - Path of file containing all sql statements - The encoding of the file containing the SQL statements. - The new instance + + Adapts a set of Sql statements from a string. + + Path of file containing all sql statements + The encoding of the file containing the SQL statements. + The new instance - - Determines how the delimiter is interpreted in a SQL string. - + + Determines how the delimiter is interpreted in a SQL string. + - - Delimiter can appear anywhere on a line. - + + Delimiter can appear anywhere on a line. + - - Delimiter always appears by itself on a line. - + + Delimiter always appears by itself on a line. + - - Helper class to maintain a list of SQL Statements. - + + Helper class to maintain a list of SQL Statements. + - - Initializes a new instance. - - String that separates statements from each other - Style of the delimiter + + Initializes a new instance. + + String that separates statements from each other + Style of the delimiter - - Parses the SQL into the internal list using the specified delimiter - and delimiter style - - The SQL string to parse. + + Parses the SQL into the internal list using the specified delimiter + and delimiter style + + The SQL string to parse. - - Parses the contents of the file into the - internal list using the specified delimiter - and delimiter style - - File name - The encoding of the file containing the SQL statements. + + Parses the contents of the file into the + internal list using the specified delimiter + and delimiter style + + File name + The encoding of the file containing the SQL statements. - - Allows foreach(). - - + + Allows foreach(). + + - - Expands project properties in the - sql string - - - + + Expands project properties in the + sql string + + + - - Gets the number of statements in the list. - + + Gets the number of statements in the list. + - - Gets the statement specified by the index. - + + Gets the statement specified by the index. + - - Project's properties for property expansion - + + Project's properties for property expansion + @@ -17979,472 +17799,592 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -18468,286 +18408,286 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -18828,130 +18768,148 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + @@ -18966,253 +18924,295 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/Filters/ReplaceCharacter/ReplaceCharacter.cs b/Tools/nant/examples/Filters/ReplaceCharacter/ReplaceCharacter.cs new file mode 100644 index 0000000..25b5cc3 --- /dev/null +++ b/Tools/nant/examples/Filters/ReplaceCharacter/ReplaceCharacter.cs @@ -0,0 +1,115 @@ +using System; +using System.IO; +using System.Globalization; + +using NAnt.Core.Attributes; +using NAnt.Core.Filters; + +namespace NAnt.Examples.Filters { + /// + /// Replaces a specific character in a file. + /// + /// + /// Replaces the character specified by with the + /// character specified by . + /// + /// + /// Replace all "@" characters with "~". + /// + /// + /// ]]> + /// + /// + [ElementName("replacecharacter")] + public class ReplaceCharacter : Filter { + /// + /// Delegate for Read and Peek. Allows the same implementation + /// to be used for both methods. + /// + delegate int AcquireCharDelegate(); + + #region Private Instance Fields + + private char _from; + private char _to; + + //Methods used for Read and Peek + private AcquireCharDelegate ReadChar = null; + private AcquireCharDelegate PeekChar = null; + + #endregion Private Instance Fields + + #region Public Instance Properties + + /// + /// The character to replace. + /// + [TaskAttribute("from", Required=true)] + public char From { + get { return _from; } + set { _from = value; } + } + + /// + /// The character to replace with. + /// + [TaskAttribute("to", Required=true)] + public char To { + get { return _to; } + set { _to = value; } + } + + #endregion Public Instance Properties + + #region Public Instance Methods + + /// + /// Construct that allows this filter to be chained to the one + /// in the parameter chainedReader. + /// + /// Filter that the filter will be chained to + public override void Chain(ChainableReader chainedReader) { + base.Chain(chainedReader); + ReadChar = new AcquireCharDelegate(base.Read); + PeekChar = new AcquireCharDelegate(base.Peek); + } + + /// + /// Reads the next character applying the filter logic. + /// + /// Char as an int or -1 if at the end of the stream + public override int Read() { + return GetNextCharacter(ReadChar); + } + + /// + /// Reads the next character applying the filter logic without + /// advancing the current position in the stream. + /// + /// Char as an int or -1 if at the end of the stream + public override int Peek() { + return GetNextCharacter(PeekChar); + } + + #endregion Public Instance Methods + + #region Private Instance Methods + + /// + /// Returns the next character in the stream replacing the specified character. Using the + /// allows for the same implementation for Read and Peek + /// + /// Delegate to acquire the next character. (Read/Peek) + /// Char as an int or -1 if at the end of the stream + private int GetNextCharacter(AcquireCharDelegate AcquireChar) { + int nextChar = AcquireChar(); + if (nextChar == From) { + return To; + } + return nextChar; + } + + #endregion Private Instance Methods + } +} diff --git a/Tools/nant/examples/Filters/ReplaceCharacter/default.build b/Tools/nant/examples/Filters/ReplaceCharacter/default.build new file mode 100644 index 0000000..057915d --- /dev/null +++ b/Tools/nant/examples/Filters/ReplaceCharacter/default.build @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/HelloWindowsForms/HelloWindowsForms.build b/Tools/nant/examples/HelloWindowsForms/HelloWindowsForms.build new file mode 100644 index 0000000..f9a3b68 --- /dev/null +++ b/Tools/nant/examples/HelloWindowsForms/HelloWindowsForms.build @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/HelloWindowsForms/HelloWindowsForms.vbproj b/Tools/nant/examples/HelloWindowsForms/HelloWindowsForms.vbproj new file mode 100644 index 0000000..2017993 --- /dev/null +++ b/Tools/nant/examples/HelloWindowsForms/HelloWindowsForms.vbproj @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/HelloWindowsForms/MainForm.resx b/Tools/nant/examples/HelloWindowsForms/MainForm.resx new file mode 100644 index 0000000..de6582f --- /dev/null +++ b/Tools/nant/examples/HelloWindowsForms/MainForm.resx @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Assembly + + + MainForm + + \ No newline at end of file diff --git a/Tools/nant/examples/HelloWindowsForms/MainForm.vb b/Tools/nant/examples/HelloWindowsForms/MainForm.vb new file mode 100644 index 0000000..4bd4db5 --- /dev/null +++ b/Tools/nant/examples/HelloWindowsForms/MainForm.vb @@ -0,0 +1,60 @@ +Public Class MainForm + Inherits System.Windows.Forms.Form + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents myLabel As System.Windows.Forms.Label + Private Sub InitializeComponent() + Me.myLabel = New System.Windows.Forms.Label() + Me.SuspendLayout() + ' + 'myLabel + ' + Me.myLabel.Dock = System.Windows.Forms.DockStyle.Fill + Me.myLabel.Font = New System.Drawing.Font("Tahoma", 24.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.myLabel.Name = "myLabel" + Me.myLabel.Size = New System.Drawing.Size(304, 118) + Me.myLabel.TabIndex = 0 + Me.myLabel.Text = "Hello Windows Forms" + Me.myLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'MainForm + ' + Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) + Me.ClientSize = New System.Drawing.Size(304, 118) + Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.myLabel}) + Me.Name = "MainForm" + Me.Text = "Hello Windows Forms" + Me.ResumeLayout(False) + + End Sub + +#End Region + +End Class diff --git a/Tools/nant/examples/HelloWorld/HelloWorld.cs b/Tools/nant/examples/HelloWorld/HelloWorld.cs new file mode 100644 index 0000000..315fd9d --- /dev/null +++ b/Tools/nant/examples/HelloWorld/HelloWorld.cs @@ -0,0 +1,5 @@ +public class ProjectName { + static void Main() { + System.Console.WriteLine("Hello World using C#"); + } +} diff --git a/Tools/nant/examples/HelloWorld/HelloWorld.js b/Tools/nant/examples/HelloWorld/HelloWorld.js new file mode 100644 index 0000000..62627e5 --- /dev/null +++ b/Tools/nant/examples/HelloWorld/HelloWorld.js @@ -0,0 +1 @@ +print("Hello World using JScript.NET"); \ No newline at end of file diff --git a/Tools/nant/examples/HelloWorld/HelloWorld.vb b/Tools/nant/examples/HelloWorld/HelloWorld.vb new file mode 100644 index 0000000..f798354 --- /dev/null +++ b/Tools/nant/examples/HelloWorld/HelloWorld.vb @@ -0,0 +1,8 @@ +Imports System + +Public Class MainApp + Shared Sub Main() + Console.WriteLine("Hello World using VB.NET") + Return + End Sub +End Class diff --git a/Tools/nant/examples/HelloWorld/default.build b/Tools/nant/examples/HelloWorld/default.build new file mode 100644 index 0000000..298d120 --- /dev/null +++ b/Tools/nant/examples/HelloWorld/default.build @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/NUnit2/ReferenceAssemblies/Helper.cs b/Tools/nant/examples/NUnit2/ReferenceAssemblies/Helper.cs new file mode 100644 index 0000000..c9343d8 --- /dev/null +++ b/Tools/nant/examples/NUnit2/ReferenceAssemblies/Helper.cs @@ -0,0 +1,6 @@ +namespace Helpers { + public class Log { + public static void Debug(string msg) { + } + } +} diff --git a/Tools/nant/examples/NUnit2/ReferenceAssemblies/ReferenceTest.cs b/Tools/nant/examples/NUnit2/ReferenceAssemblies/ReferenceTest.cs new file mode 100644 index 0000000..409b15b --- /dev/null +++ b/Tools/nant/examples/NUnit2/ReferenceAssemblies/ReferenceTest.cs @@ -0,0 +1,12 @@ +using NUnit.Framework; +using Helpers; + +namespace NAnt.NUnit2.Tests { + [TestFixture] + public class ReferenceTests { + [Test] + public void LogTest () { + Log.Debug ("whatever"); + } + } +} diff --git a/Tools/nant/examples/NUnit2/ReferenceAssemblies/default.build b/Tools/nant/examples/NUnit2/ReferenceAssemblies/default.build new file mode 100644 index 0000000..2b399b3 --- /dev/null +++ b/Tools/nant/examples/NUnit2/ReferenceAssemblies/default.build @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/ScriptTask/script-sample.build b/Tools/nant/examples/ScriptTask/script-sample.build new file mode 100644 index 0000000..1bcdb4a --- /dev/null +++ b/Tools/nant/examples/ScriptTask/script-sample.build @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/Tools/nant/examples/Simple/Simple.build b/Tools/nant/examples/Simple/Simple.build new file mode 100644 index 0000000..5981212 --- /dev/null +++ b/Tools/nant/examples/Simple/Simple.build @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/Simple/Simple.cs b/Tools/nant/examples/Simple/Simple.cs new file mode 100644 index 0000000..4484a85 --- /dev/null +++ b/Tools/nant/examples/Simple/Simple.cs @@ -0,0 +1,5 @@ +public class Simple { + static void Main() { + System.Console.WriteLine("Hello, World!"); + } +} diff --git a/Tools/nant/examples/Solution/cpp/WinForms/AssemblyInfo.cpp b/Tools/nant/examples/Solution/cpp/WinForms/AssemblyInfo.cpp new file mode 100644 index 0000000..e550a32 --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/AssemblyInfo.cpp @@ -0,0 +1,58 @@ +#include "stdafx.h" + +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly:AssemblyTitleAttribute("")]; +[assembly:AssemblyDescriptionAttribute("")]; +[assembly:AssemblyConfigurationAttribute("")]; +[assembly:AssemblyCompanyAttribute("")]; +[assembly:AssemblyProductAttribute("")]; +[assembly:AssemblyCopyrightAttribute("")]; +[assembly:AssemblyTrademarkAttribute("")]; +[assembly:AssemblyCultureAttribute("")]; + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the value or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +// +// In order to sign your assembly you must specify a key to use. Refer to the +// Microsoft .NET Framework documentation for more information on assembly signing. +// +// Use the attributes below to control which key is used for signing. +// +// Notes: +// (*) If no key is specified, the assembly is not signed. +// (*) KeyName refers to a key that has been installed in the Crypto Service +// Provider (CSP) on your machine. KeyFile refers to a file which contains +// a key. +// (*) If the KeyFile and the KeyName values are both specified, the +// following processing occurs: +// (1) If the KeyName can be found in the CSP, that key is used. +// (2) If the KeyName does not exist and the KeyFile does exist, the key +// in the KeyFile is installed into the CSP and used. +// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. +// When specifying the KeyFile, the location of the KeyFile should be +// relative to the project directory. +// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework +// documentation for more information on this. +// +[assembly:AssemblyDelaySignAttribute(false)]; +[assembly:AssemblyKeyFileAttribute("")]; +[assembly:AssemblyKeyNameAttribute("")]; + diff --git a/Tools/nant/examples/Solution/cpp/WinForms/Form1.cpp b/Tools/nant/examples/Solution/cpp/WinForms/Form1.cpp new file mode 100644 index 0000000..2d2469b --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/Form1.cpp @@ -0,0 +1,15 @@ +#include "stdafx.h" +#include "Form1.h" +#include + +using namespace WinForms; + +int APIENTRY _tWinMain(HINSTANCE hInstance, + HINSTANCE hPrevInstance, + LPTSTR lpCmdLine, + int nCmdShow) +{ + System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA; + Application::Run(new Form1()); + return 0; +} diff --git a/Tools/nant/examples/Solution/cpp/WinForms/Form1.h b/Tools/nant/examples/Solution/cpp/WinForms/Form1.h new file mode 100644 index 0000000..873c55e --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/Form1.h @@ -0,0 +1,59 @@ +#pragma once + + +namespace WinForms +{ + using namespace System; + using namespace System::ComponentModel; + using namespace System::Collections; + using namespace System::Windows::Forms; + using namespace System::Data; + using namespace System::Drawing; + + /// + /// Summary for Form1 + /// + /// WARNING: If you change the name of this class, you will need to change the + /// 'Resource File Name' property for the managed resource compiler tool + /// associated with all .resx files this class depends on. Otherwise, + /// the designers will not be able to interact properly with localized + /// resources associated with this form. + /// + public __gc class Form1 : public System::Windows::Forms::Form + { + public: + Form1(void) + { + InitializeComponent(); + } + + protected: + void Dispose(Boolean disposing) + { + if (disposing && components) + { + components->Dispose(); + } + __super::Dispose(disposing); + } + + private: + /// + /// Required designer variable. + /// + System::ComponentModel::Container * components; + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + void InitializeComponent(void) + { + this->components = new System::ComponentModel::Container(); + this->Size = System::Drawing::Size(300,300); + this->Text = S"Form1"; + } + }; +} + + diff --git a/Tools/nant/examples/Solution/cpp/WinForms/Form1.resX b/Tools/nant/examples/Solution/cpp/WinForms/Form1.resX new file mode 100644 index 0000000..3f337e0 --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/Form1.resX @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.0.0.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + diff --git a/Tools/nant/examples/Solution/cpp/WinForms/ReadMe.txt b/Tools/nant/examples/Solution/cpp/WinForms/ReadMe.txt new file mode 100644 index 0000000..4246609 --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/ReadMe.txt @@ -0,0 +1,33 @@ +======================================================================== + APPLICATION : winforms Project Overview +======================================================================== + +AppWizard has created this winforms Application for you. + +This file contains a summary of what you will find in each of the files that +make up your winforms application. + +winforms.vcproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +Form1.cpp + This is the main application source file. + Contains the code to display the form. + +Form1.h + Contains the implementation of your form class and InitializeComponent() function. + +AssemblyInfo.cpp + Contains custom attributes for modifying assembly metadata. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named Win32.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// diff --git a/Tools/nant/examples/Solution/cpp/WinForms/WinForms.sln b/Tools/nant/examples/Solution/cpp/WinForms/WinForms.sln new file mode 100644 index 0000000..7690d9f --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/WinForms.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinForms", "WinForms.vcproj", "{11211AF9-DD1D-4151-844A-A2430B67DE3D}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {11211AF9-DD1D-4151-844A-A2430B67DE3D}.Debug.ActiveCfg = Debug|Win32 + {11211AF9-DD1D-4151-844A-A2430B67DE3D}.Debug.Build.0 = Debug|Win32 + {11211AF9-DD1D-4151-844A-A2430B67DE3D}.Release.ActiveCfg = Release|Win32 + {11211AF9-DD1D-4151-844A-A2430B67DE3D}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/Tools/nant/examples/Solution/cpp/WinForms/WinForms.vcproj b/Tools/nant/examples/Solution/cpp/WinForms/WinForms.vcproj new file mode 100644 index 0000000..5b1fd27 --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/WinForms.vcproj @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/Solution/cpp/WinForms/app.ico b/Tools/nant/examples/Solution/cpp/WinForms/app.ico new file mode 100644 index 0000000000000000000000000000000000000000..3a5525fd794f7a7c5c8e6187f470ea3af38cd2b6 GIT binary patch literal 1078 zcmeHHJr05}7=1t!Hp3A*8IHkVf+j?-!eHY14Gtcw1Eb*_9>Bq^zETJ@GKj{_2j4$w zo9}xCh!8{T3=X##Skq>ikMjsvB|y%crWBM2iW(4pI}c%z6%lW!=~4v77#3{z!dmB1 z__&l)-{KUYR+|8|;wB^R|9ET$J@(@=#rd^=)qs85?vAy(PSF5CyNkus435LVkZ$rj zNw|JG-P7^hF<(;#o*Vk}5R#e|^13tBbQkeF?djULtvqyxd3<{9 literal 0 HcmV?d00001 diff --git a/Tools/nant/examples/Solution/cpp/WinForms/app.rc b/Tools/nant/examples/Solution/cpp/WinForms/app.rc new file mode 100644 index 0000000..6be44ad --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/app.rc @@ -0,0 +1,52 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon placed first or with lowest ID value becomes application icon + +LANGUAGE 9, 1 +#pragma code_page(1252) +1 ICON "app.ico" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" + "\0" +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Tools/nant/examples/Solution/cpp/WinForms/cpp.build b/Tools/nant/examples/Solution/cpp/WinForms/cpp.build new file mode 100644 index 0000000..951bc16 --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/cpp.build @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + Output file doesn't exist in ${expected.output} + + + \ No newline at end of file diff --git a/Tools/nant/examples/Solution/cpp/WinForms/resource.h b/Tools/nant/examples/Solution/cpp/WinForms/resource.h new file mode 100644 index 0000000..d5ac7c4 --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/resource.h @@ -0,0 +1,3 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by app.rc diff --git a/Tools/nant/examples/Solution/cpp/WinForms/stdafx.cpp b/Tools/nant/examples/Solution/cpp/WinForms/stdafx.cpp new file mode 100644 index 0000000..14bb7bb --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/stdafx.cpp @@ -0,0 +1,7 @@ +// stdafx.cpp : source file that includes just the standard includes +// winforms.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + diff --git a/Tools/nant/examples/Solution/cpp/WinForms/stdafx.h b/Tools/nant/examples/Solution/cpp/WinForms/stdafx.h new file mode 100644 index 0000000..ae2d8aa --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/WinForms/stdafx.h @@ -0,0 +1,14 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +#pragma once + + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// C RunTime Header Files +#include +#include +#include +#include + +// TODO: reference additional headers your program requires here diff --git a/Tools/nant/examples/Solution/cpp/default.build b/Tools/nant/examples/Solution/cpp/default.build new file mode 100644 index 0000000..a1eb910 --- /dev/null +++ b/Tools/nant/examples/Solution/cpp/default.build @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tools/nant/examples/Solution/cs/WinForms/App.ico b/Tools/nant/examples/Solution/cs/WinForms/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..3a5525fd794f7a7c5c8e6187f470ea3af38cd2b6 GIT binary patch literal 1078 zcmeHHJr05}7=1t!Hp3A*8IHkVf+j?-!eHY14Gtcw1Eb*_9>Bq^zETJ@GKj{_2j4$w zo9}xCh!8{T3=X##Skq>ikMjsvB|y%crWBM2iW(4pI}c%z6%lW!=~4v77#3{z!dmB1 z__&l)-{KUYR+|8|;wB^R|9ET$J@(@=#rd^=)qs85?vAy(PSF5CyNkus435LVkZ$rj zNw|JG-P7^hF<(;#o*Vk}5R#e|^13tBbQkeF?djULtvqyxd3<{9 literal 0 HcmV?d00001 diff --git a/Tools/nant/examples/Solution/cs/WinForms/AssemblyInfo.cs b/Tools/nant/examples/Solution/cs/WinForms/AssemblyInfo.cs new file mode 100644 index 0000000..9f89a32 --- /dev/null +++ b/Tools/nant/examples/Solution/cs/WinForms/AssemblyInfo.cs @@ -0,0 +1,58 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("1.0.*")] + +// +// In order to sign your assembly you must specify a key to use. Refer to the +// Microsoft .NET Framework documentation for more information on assembly signing. +// +// Use the attributes below to control which key is used for signing. +// +// Notes: +// (*) If no key is specified, the assembly is not signed. +// (*) KeyName refers to a key that has been installed in the Crypto Service +// Provider (CSP) on your machine. KeyFile refers to a file which contains +// a key. +// (*) If the KeyFile and the KeyName values are both specified, the +// following processing occurs: +// (1) If the KeyName can be found in the CSP, that key is used. +// (2) If the KeyName does not exist and the KeyFile does exist, the key +// in the KeyFile is installed into the CSP and used. +// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. +// When specifying the KeyFile, the location of the KeyFile should be +// relative to the project output directory which is +// %Project Directory%\obj\. For example, if your KeyFile is +// located in the project directory, you would specify the AssemblyKeyFile +// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] +// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework +// documentation for more information on this. +// +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] +[assembly: AssemblyKeyName("")] diff --git a/Tools/nant/examples/Solution/cs/WinForms/Form1.cs b/Tools/nant/examples/Solution/cs/WinForms/Form1.cs new file mode 100644 index 0000000..f229b0a --- /dev/null +++ b/Tools/nant/examples/Solution/cs/WinForms/Form1.cs @@ -0,0 +1,69 @@ +using System; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; +using System.Data; + +namespace WinForms +{ + /// + /// Summary description for Form1. + /// + public class Form1 : System.Windows.Forms.Form + { + /// + /// Required designer variable. + /// + private System.ComponentModel.Container components = null; + + public Form1() + { + // + // Required for Windows Form Designer support + // + InitializeComponent(); + + // + // TODO: Add any constructor code after InitializeComponent call + // + } + + /// + /// Clean up any resources being used. + /// + protected override void Dispose( bool disposing ) + { + if( disposing ) + { + if (components != null) + { + components.Dispose(); + } + } + base.Dispose( disposing ); + } + + #region Windows Form Designer generated code + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.Size = new System.Drawing.Size(300,300); + this.Text = "Form1"; + } + #endregion + + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.Run(new Form1()); + } + } +} diff --git a/Tools/nant/examples/Solution/cs/WinForms/Form1.resx b/Tools/nant/examples/Solution/cs/WinForms/Form1.resx new file mode 100644 index 0000000..3f337e0 --- /dev/null +++ b/Tools/nant/examples/Solution/cs/WinForms/Form1.resx @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.0.0.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + diff --git a/Tools/nant/examples/Solution/cs/WinForms/WinForms.csproj b/Tools/nant/examples/Solution/cs/WinForms/WinForms.csproj new file mode 100644 index 0000000..e8fa603 --- /dev/null +++ b/Tools/nant/examples/Solution/cs/WinForms/WinForms.csproj @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/Solution/cs/WinForms/WinForms.sln b/Tools/nant/examples/Solution/cs/WinForms/WinForms.sln new file mode 100644 index 0000000..dd6a452 --- /dev/null +++ b/Tools/nant/examples/Solution/cs/WinForms/WinForms.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinForms", "WinForms.csproj", "{C0E751EE-4590-447A-B236-FF7E71A484DF}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {C0E751EE-4590-447A-B236-FF7E71A484DF}.Debug.ActiveCfg = Debug|.NET + {C0E751EE-4590-447A-B236-FF7E71A484DF}.Debug.Build.0 = Debug|.NET + {C0E751EE-4590-447A-B236-FF7E71A484DF}.Release.ActiveCfg = Release|.NET + {C0E751EE-4590-447A-B236-FF7E71A484DF}.Release.Build.0 = Release|.NET + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/Tools/nant/examples/Solution/cs/WinForms/cs.build b/Tools/nant/examples/Solution/cs/WinForms/cs.build new file mode 100644 index 0000000..b6c14df --- /dev/null +++ b/Tools/nant/examples/Solution/cs/WinForms/cs.build @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Output file doesn't exist in ${expected.output} + + + \ No newline at end of file diff --git a/Tools/nant/examples/Solution/cs/default.build b/Tools/nant/examples/Solution/cs/default.build new file mode 100644 index 0000000..a1eb910 --- /dev/null +++ b/Tools/nant/examples/Solution/cs/default.build @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tools/nant/examples/Solution/vb/WinForms/AssemblyInfo.vb b/Tools/nant/examples/Solution/vb/WinForms/AssemblyInfo.vb new file mode 100644 index 0000000..1378b3b --- /dev/null +++ b/Tools/nant/examples/Solution/vb/WinForms/AssemblyInfo.vb @@ -0,0 +1,32 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' General Information about an assembly is controlled through the following +' set of attributes. Change these attribute values to modify the information +' associated with an assembly. + +' Review the values of the assembly attributes + + + + + + + + + +'The following GUID is for the ID of the typelib if this project is exposed to COM + + +' Version information for an assembly consists of the following four values: +' +' Major Version +' Minor Version +' Build Number +' Revision +' +' You can specify all the values or you can default the Build and Revision Numbers +' by using the '*' as shown below: + + diff --git a/Tools/nant/examples/Solution/vb/WinForms/Form1.resx b/Tools/nant/examples/Solution/vb/WinForms/Form1.resx new file mode 100644 index 0000000..3f337e0 --- /dev/null +++ b/Tools/nant/examples/Solution/vb/WinForms/Form1.resx @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.0.0.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + diff --git a/Tools/nant/examples/Solution/vb/WinForms/Form1.vb b/Tools/nant/examples/Solution/vb/WinForms/Form1.vb new file mode 100644 index 0000000..6a57df6 --- /dev/null +++ b/Tools/nant/examples/Solution/vb/WinForms/Form1.vb @@ -0,0 +1,39 @@ +Public Class Form1 + Inherits System.Windows.Forms.Form + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Private Sub InitializeComponent() + components = New System.ComponentModel.Container() + Me.Text = "Form1" + End Sub + +#End Region + +End Class diff --git a/Tools/nant/examples/Solution/vb/WinForms/WinForms.sln b/Tools/nant/examples/Solution/vb/WinForms/WinForms.sln new file mode 100644 index 0000000..36fe9dd --- /dev/null +++ b/Tools/nant/examples/Solution/vb/WinForms/WinForms.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "WinForms", "WinForms.vbproj", "{B01CBC5B-0F63-4623-8B41-806E063D4F0C}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {B01CBC5B-0F63-4623-8B41-806E063D4F0C}.Debug.ActiveCfg = Debug|.NET + {B01CBC5B-0F63-4623-8B41-806E063D4F0C}.Debug.Build.0 = Debug|.NET + {B01CBC5B-0F63-4623-8B41-806E063D4F0C}.Release.ActiveCfg = Release|.NET + {B01CBC5B-0F63-4623-8B41-806E063D4F0C}.Release.Build.0 = Release|.NET + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/Tools/nant/examples/Solution/vb/WinForms/WinForms.vbproj b/Tools/nant/examples/Solution/vb/WinForms/WinForms.vbproj new file mode 100644 index 0000000..3aac73c --- /dev/null +++ b/Tools/nant/examples/Solution/vb/WinForms/WinForms.vbproj @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/Solution/vb/WinForms/vb.build b/Tools/nant/examples/Solution/vb/WinForms/vb.build new file mode 100644 index 0000000..b6c14df --- /dev/null +++ b/Tools/nant/examples/Solution/vb/WinForms/vb.build @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Output file doesn't exist in ${expected.output} + + + \ No newline at end of file diff --git a/Tools/nant/examples/Solution/vb/default.build b/Tools/nant/examples/Solution/vb/default.build new file mode 100644 index 0000000..a1eb910 --- /dev/null +++ b/Tools/nant/examples/Solution/vb/default.build @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tools/nant/examples/Solution/vjs/WinForms/AssemblyInfo.jsl b/Tools/nant/examples/Solution/vjs/WinForms/AssemblyInfo.jsl new file mode 100644 index 0000000..d17c68a --- /dev/null +++ b/Tools/nant/examples/Solution/vjs/WinForms/AssemblyInfo.jsl @@ -0,0 +1,58 @@ +import System.Reflection.*; +import System.Runtime.CompilerServices.*; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +/** @assembly AssemblyTitle("") */ +/** @assembly AssemblyDescription("") */ +/** @assembly AssemblyConfiguration("") */ +/** @assembly AssemblyCompany("") */ +/** @assembly AssemblyProduct("") */ +/** @assembly AssemblyCopyright("") */ +/** @assembly AssemblyTrademark("") */ +/** @assembly AssemblyCulture("") */ + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build +// Numbers by using the '*' as shown below: + +/** @assembly AssemblyVersion("1.0.*") */ + +// +// In order to sign your assembly you must specify a key to use. Refer to the +// Microsoft .NET Framework documentation for more information on assembly signing. +// +// Use the attributes below to control which key is used for signing. +// +// Notes: +// (*) If no key is specified, the assembly is not signed. +// (*) KeyName refers to a key that has been installed in the Crypto Service +// Provider (CSP) on your machine. KeyFile refers to a file which contains +// a key. +// (*) If the KeyFile and the KeyName values are both specified, the +// following processing occurs: +// (1) If the KeyName can be found in the CSP, that key is used. +// (2) If the KeyName does not exist and the KeyFile does exist, the key +// in the KeyFile is installed into the CSP and used. +// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. +// When specifying the KeyFile, the location of the KeyFile should be +// relative to the project directory. For example, if your KeyFile is +// located in the project directory itself, you would specify the +// AssemblyKeyFile attribute as @assembly AssemblyKeyFile("mykey.snk") +// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework +// documentation for more information on this. +// + +/** @assembly AssemblyDelaySign(false) */ +/** @assembly AssemblyKeyFile("") */ +/** @assembly AssemblyKeyName("") */ diff --git a/Tools/nant/examples/Solution/vjs/WinForms/Form1.jsl b/Tools/nant/examples/Solution/vjs/WinForms/Form1.jsl new file mode 100644 index 0000000..544bdef --- /dev/null +++ b/Tools/nant/examples/Solution/vjs/WinForms/Form1.jsl @@ -0,0 +1,67 @@ +package WinForms; + +import System.Drawing.*; +import System.Collections.*; +import System.ComponentModel.*; +import System.Windows.Forms.*; +import System.Data.*; + +/** + * Summary description for Form1. + */ +public class Form1 extends System.Windows.Forms.Form +{ + /** + * Required designer variable. + */ + private System.ComponentModel.Container components = null; + + public Form1() + { + // + // Required for Windows Form Designer support + // + InitializeComponent(); + + // + // TODO: Add any constructor code after InitializeComponent call + // + } + + /** + * Clean up any resources being used. + */ + protected void Dispose(boolean disposing) + { + if (disposing) + { + if (components != null) + { + components.Dispose(); + } + } + super.Dispose(disposing); + } + + #region Windows Form Designer generated code + /** + * Required method for Designer support - do not modify + * the contents of this method with the code editor. + */ + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.set_Size(new System.Drawing.Size(300,300)); + this.set_Text("Form1"); + } + #endregion + + /** + * The main entry point for the application. + */ + /** @attribute System.STAThread() */ + public static void main(String[] args) + { + Application.Run(new Form1()); + } +} diff --git a/Tools/nant/examples/Solution/vjs/WinForms/Form1.resx b/Tools/nant/examples/Solution/vjs/WinForms/Form1.resx new file mode 100644 index 0000000..3f337e0 --- /dev/null +++ b/Tools/nant/examples/Solution/vjs/WinForms/Form1.resx @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.0.0.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + diff --git a/Tools/nant/examples/Solution/vjs/WinForms/WinForms.sln b/Tools/nant/examples/Solution/vjs/WinForms/WinForms.sln new file mode 100644 index 0000000..7e82385 --- /dev/null +++ b/Tools/nant/examples/Solution/vjs/WinForms/WinForms.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{E6FDF86B-F3D1-11D4-8576-0002A516ECE8}") = "WinForms", "WinForms.vjsproj", "{84A7C512-CE63-4884-B9FB-DF863EEC3800}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {84A7C512-CE63-4884-B9FB-DF863EEC3800}.Debug.ActiveCfg = Debug|.NET + {84A7C512-CE63-4884-B9FB-DF863EEC3800}.Debug.Build.0 = Debug|.NET + {84A7C512-CE63-4884-B9FB-DF863EEC3800}.Release.ActiveCfg = Release|.NET + {84A7C512-CE63-4884-B9FB-DF863EEC3800}.Release.Build.0 = Release|.NET + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/Tools/nant/examples/Solution/vjs/WinForms/WinForms.vjsproj b/Tools/nant/examples/Solution/vjs/WinForms/WinForms.vjsproj new file mode 100644 index 0000000..a312489 --- /dev/null +++ b/Tools/nant/examples/Solution/vjs/WinForms/WinForms.vjsproj @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/Solution/vjs/WinForms/vjs.build b/Tools/nant/examples/Solution/vjs/WinForms/vjs.build new file mode 100644 index 0000000..951bc16 --- /dev/null +++ b/Tools/nant/examples/Solution/vjs/WinForms/vjs.build @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + Output file doesn't exist in ${expected.output} + + + \ No newline at end of file diff --git a/Tools/nant/examples/Solution/vjs/default.build b/Tools/nant/examples/Solution/vjs/default.build new file mode 100644 index 0000000..a1eb910 --- /dev/null +++ b/Tools/nant/examples/Solution/vjs/default.build @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.build b/Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.build new file mode 100644 index 0000000..6281ce7 --- /dev/null +++ b/Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.build @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.cs b/Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.cs new file mode 100644 index 0000000..9baa13c --- /dev/null +++ b/Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.cs @@ -0,0 +1,12 @@ +using System; + +//Calculates the circumference of a circle given the radius. +public class Calculate { + + private double circ = 0; + + public double Circumference(double radius){ + circ = Math.PI*2*radius; + return circ; + } +} \ No newline at end of file diff --git a/Tools/nant/examples/StyleTask/SimpleExtensionObject/circle.xsl b/Tools/nant/examples/StyleTask/SimpleExtensionObject/circle.xsl new file mode 100644 index 0000000..a7639cb --- /dev/null +++ b/Tools/nant/examples/StyleTask/SimpleExtensionObject/circle.xsl @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/nant/examples/StyleTask/SimpleExtensionObject/circles.xml b/Tools/nant/examples/StyleTask/SimpleExtensionObject/circles.xml new file mode 100644 index 0000000..b3f3584 --- /dev/null +++ b/Tools/nant/examples/StyleTask/SimpleExtensionObject/circles.xml @@ -0,0 +1,10 @@ + + +12 +75.398223686155 + + +37.5 +235.61944901923448 + + \ No newline at end of file diff --git a/Tools/nant/examples/UserTask/UserTask.cs b/Tools/nant/examples/UserTask/UserTask.cs new file mode 100644 index 0000000..339a99b --- /dev/null +++ b/Tools/nant/examples/UserTask/UserTask.cs @@ -0,0 +1,31 @@ +using NAnt.Core; +using NAnt.Core.Attributes; + +namespace NAnt.Examples.Tasks { + [TaskName("usertask")] + public class TestTask : Task { + #region Private Instance Fields + + private string _message; + + #endregion Private Instance Fields + + #region Public Instance Properties + + [TaskAttribute("message", Required=true)] + public string FileName { + get { return _message; } + set { _message = value; } + } + + #endregion Public Instance Properties + + #region Override implementation of Task + + protected override void ExecuteTask() { + Log(Level.Info, _message.ToUpper()); + } + + #endregion Override implementation of Task + } +} diff --git a/Tools/nant/examples/UserTask/default.build b/Tools/nant/examples/UserTask/default.build new file mode 100644 index 0000000..5214fc6 --- /dev/null +++ b/Tools/nant/examples/UserTask/default.build @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/nant/examples/examples.build b/Tools/nant/examples/examples.build new file mode 100644 index 0000000..6f50bea --- /dev/null +++ b/Tools/nant/examples/examples.build @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Tools/nant/schema/nant.xsd b/Tools/nant/schema/nant.xsd index 96dac1c..6855e24 100755 --- a/Tools/nant/schema/nant.xsd +++ b/Tools/nant/schema/nant.xsd @@ -1,7 +1,7 @@ - + - NAnt schema generated at 10/22/2011 18:49:35 + NAnt schema generated at 06/09/2012 07:28:04 @@ -54,6 +54,7 @@ + @@ -79,6 +80,7 @@ + @@ -431,6 +433,7 @@ + @@ -469,6 +472,7 @@ + @@ -954,6 +958,7 @@ + @@ -1584,6 +1589,24 @@ + + + + + + + + + + + + + + + + + + @@ -1757,6 +1780,7 @@ + @@ -1782,6 +1806,7 @@ + @@ -1856,6 +1881,7 @@ + @@ -1881,6 +1907,7 @@ + @@ -1994,6 +2021,7 @@ + @@ -2019,6 +2047,7 @@ + @@ -2046,11 +2075,17 @@ + + + + + + @@ -2219,6 +2254,22 @@ + + + + + + + + + + + + + + + + @@ -2387,6 +2438,7 @@ + @@ -2412,6 +2464,7 @@ + @@ -2493,6 +2546,7 @@ + @@ -2518,6 +2572,7 @@ + diff --git a/lib/NAnt.Core.dll b/lib/NAnt.Core.dll index df9936bd187e74b99c1e9420551f7f3e82d2e30b..1083a4243562e450a009ea4262a393f427d44d01 100755 GIT binary patch literal 409600 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 z yQhB-?rseNVKnIOGZ0=ffmcY^S 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�%-cpJIwgzun?D#c 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%0AxG#U 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 *VW3{5YJq3=A4Lia`*}m;u&|#uL@_B} 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�Bw=K!iHu+kahGhCHU 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 From 7296b7e654dc57479863b9f8132d15669580f8fe Mon Sep 17 00:00:00 2001 From: Tony Briscolino Date: Mon, 15 Dec 2014 11:23:26 -0600 Subject: [PATCH 08/14] updated mysql driver to version 6.9.5 --- src/dbproviders.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dbproviders.xml b/src/dbproviders.xml index 5e34dcd..651b86c 100755 --- a/src/dbproviders.xml +++ b/src/dbproviders.xml @@ -13,8 +13,8 @@ /> Date: Mon, 15 Dec 2014 11:24:36 -0600 Subject: [PATCH 09/14] change all line feeds to windows --- default.ps1 | 2 +- .../Tools/nant/bin/NAnt.CompressionTasks.xml | 590 +- example_scripts/Tools/nant/bin/NAnt.Core.xml | 10154 +++---- .../Tools/nant/bin/NAnt.DotNetTasks.xml | 4720 ++-- .../Tools/nant/bin/NAnt.MSNetTasks.xml | 528 +- example_scripts/Tools/nant/bin/NAnt.NUnit.xml | 190 +- .../Tools/nant/bin/NAnt.NUnit1Tasks.xml | 338 +- .../Tools/nant/bin/NAnt.NUnit2Tasks.xml | 286 +- .../nant/bin/NAnt.SourceControlTasks.xml | 1570 +- .../Tools/nant/bin/NAnt.VSNetTasks.xml | 3166 +-- .../Tools/nant/bin/NAnt.VisualCppTasks.xml | 1334 +- .../Tools/nant/bin/NAnt.Win32Tasks.xml | 1118 +- example_scripts/Tools/nant/bin/NAnt.xml | 88 +- .../Tools/nant/contrib/NAnt.Contrib.Tasks.xml | 23518 ++++++++-------- src/Net.Sf.Dbdeploy/Appliers/SqlCmdApplier.cs | 132 +- .../Database/PostgresqlDbmsSyntax.cs | 60 +- .../Database/SqlCmd/SqlCmdExecutor.cs | 414 +- src/Net.Sf.Dbdeploy/Resources/mssql_undo.vm | 2 +- src/Net.Sf.Dbdeploy/UniqueChange.cs | 262 +- src/SolutionVersionAssemblyInfo.cs | 2 +- .../Appliers/SqlCmdApplierTest.cs | 336 +- src/Test.Net.Sf.Dbdeploy/ControllerTest.cs | 422 +- ...tgresqlDatabaseSchemaVersionManagerTest.cs | 178 +- .../Test.Net.Sf.Dbdeploy.csproj | 2 - 24 files changed, 24705 insertions(+), 24707 deletions(-) diff --git a/default.ps1 b/default.ps1 index 227abf2..788453e 100644 --- a/default.ps1 +++ b/default.ps1 @@ -1 +1 @@ -$framework = '4.0' Properties { $root_dir = Split-Path $psake.build_script_file $build_artifacts_dir = "$root_dir\build\" $package_dir = "$root_dir\package" $code_dir = "source" $solution = "src\dbdeploy.net.sln" $api_key_file = "bintray.api.key" $configuration = "Debug" $scripts_dir = "$root_dir\scripts" } Task Build { Exec { msbuild $solution } } Task Clean { Exec { msbuild "$solution" /t:Clean /p:Configuration=$configuration /v:quiet "/p:OutDir=$build_artifacts_dir\" } if (Test-Path $build_artifacts_dir){ Remove-Item $build_artifacts_dir -recurse } if (Test-Path $package_dir){ Remove-Item $package_dir -recurse } } Task BuildPackage -depends Clean -description "Builds a package on 'build'. git needs to be on the path " { if (-not (Test-Path $build_artifacts_dir)){ mkdir $build_artifacts_dir } if (-not (Test-Path $package_dir)){ mkdir $package_dir } $version, $commits, $hash = $(git describe --tags --long) -split "-" $version = $version -replace "v","" # remove the v because the correct format for assemblies does not include include $hash = $hash.Substring(1) # the hash starts with g, for git, remove it $date_tag = $(get-date -Uformat "%Y%m%d_%H%M") $version_cs_content = @" // Do not commit the changes to this file. using System.Reflection; [assembly: AssemblyVersionAttribute("$version")] [assembly: AssemblyInformationalVersionAttribute("$version-$commits-$hash-$date_tag")] [assembly: AssemblyFileVersionAttribute("$version")] "@ $version_cs_content | set-content .\src\SolutionVersionAssemblyInfo.cs Write-Host "Building" -ForegroundColor Green Exec { msbuild "$solution" /t:Build /p:Configuration=$configuration /v:quiet "/p:OutDir=$build_artifacts_dir" } foreach($filename in @('Net.Sf.Dbdeploy.ilmerge.dll', 'dbdeploy.ilmerge.exe', 'dbdeploy.NAnt.ilmerge.dll','dbdeploy.Powershell.ilmerge.dll','msbuild.dbdeploy.task.ilmerge.dll')){ $original = $filename.Replace(".ilmerge.",".") Move-Item $build_artifacts_dir\$original $build_artifacts_dir\$filename } tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\Net.Sf.Dbdeploy.dll Net.Sf.Dbdeploy.ilmerge.dll nvelocity.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:exe /out:$build_artifacts_dir\dbdeploy.exe dbdeploy.ilmerge.exe Net.Sf.Dbdeploy.dll NDesk.Options.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\dbdeploy.NAnt.dll dbdeploy.NAnt.ilmerge.dll NAnt.Core.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\dbdeploy.Powershell.dll dbdeploy.Powershell.ilmerge.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\msbuild.dbdeploy.task.dll msbuild.dbdeploy.task.ilmerge.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt mkdir $build_artifacts_dir\console mkdir $build_artifacts_dir\powershell mkdir $build_artifacts_dir\nant mkdir $build_artifacts_dir\msbuild mkdir $build_artifacts_dir\lib mkdir $build_artifacts_dir\scripts Copy-Item -Path $build_artifacts_dir\dbdeploy.exe -Destination $build_artifacts_dir\console Copy-Item -Path $build_artifacts_dir\dbdeploy.Powershell.dll -Destination $build_artifacts_dir\powershell Copy-Item -Path $build_artifacts_dir\dbdeploy.NAnt.dll -Destination $build_artifacts_dir\nant Copy-Item -Path $build_artifacts_dir\msbuild.dbdeploy.task.dll -Destination $build_artifacts_dir\msbuild Copy-Item -Path $build_artifacts_dir\Net.Sf.Dbdeploy.dll -Destination $build_artifacts_dir\lib Copy-Item -Path $scripts_dir\*.sql -Destination $build_artifacts_dir\scripts Get-ChildItem build -Exclude console,msbuild,nant,powershell,scripts,lib |Remove-Item -recurse Write-Host "Creating packages" -ForegroundColor Green Get-ChildItem $build_artifacts_dir\ -recurse | Write-Zip -IncludeEmptyDirectories -EntryPathRoot "build" -OutputPath $package_dir\dbdeploy.net-$version.zip nuget pack dbdeploy.net.nuspec -version $version -OutputDirectory $package_dir -Verbosity quiet git checkout .\src\SolutionVersionAssemblyInfo.cs Write-Host "Package created at $package_dir\dbdeploy.net-$version.zip" -ForegroundColor Green Write-Host "Nuget package created at $package_dir\dbdeploy.net-$version.nuget" -ForegroundColor Green } Task PublishPackage -description "Publish last packaged version " { if (-not (Test-Path $api_key_file)){ throw "Missing api username and key for bintray at '$api_key_file'. Needs to a file containing just . Grab it at https://bintray.com/profile/edit" } $latest_package = (Get-ChildItem $package_dir)[0] $version = $latest_package.BaseName.Split("-")[1] $root_api_url = "https://api.bintray.com" $api_key_contents = (Get-Content $api_key_file).Trim() $api_username = $api_key_contents.split(" ")[0] $api_key = $api_key_contents.split(" ")[1] $web_client = new-object System.Net.WebClient # force the basic auth header to avoid two trips (one for the 401 and another with the header) $basic_auth_header= [Convert]::ToBase64String([System.Text.Encoding]::Utf8.GetBytes($api_username+":"+$api_key)) $web_client.Headers["Authorization"] = "Basic "+$basic_auth_header $web_client.Uploadfile("$root_api_url/content/brunomlopes/generic/dbdeploy.NET/$version/$($latest_package.Name)", "PUT", $latest_package.FullName) $web_client.UploadData("$root_api_url/content/brunomlopes/generic/dbdeploy.NET/$version/publish", "POST", [System.Text.Encoding]::Utf8.GetBytes("{'discard':false}")) } Task Help { Write-Documentation } Task default -depends Help \ No newline at end of file +$framework = '4.0' Properties { $root_dir = Split-Path $psake.build_script_file $build_artifacts_dir = "$root_dir\build\" $package_dir = "$root_dir\package" $code_dir = "source" $solution = "src\dbdeploy.net.sln" $api_key_file = "bintray.api.key" $configuration = "Debug" $scripts_dir = "$root_dir\scripts" } Task Build { Exec { msbuild $solution } } Task Clean { Exec { msbuild "$solution" /t:Clean /p:Configuration=$configuration /v:quiet "/p:OutDir=$build_artifacts_dir\" } if (Test-Path $build_artifacts_dir){ Remove-Item $build_artifacts_dir -recurse } if (Test-Path $package_dir){ Remove-Item $package_dir -recurse } } Task BuildPackage -depends Clean -description "Builds a package on 'build'. git needs to be on the path " { if (-not (Test-Path $build_artifacts_dir)){ mkdir $build_artifacts_dir } if (-not (Test-Path $package_dir)){ mkdir $package_dir } $version, $commits, $hash = $(git describe --tags --long) -split "-" $version = $version -replace "v","" # remove the v because the correct format for assemblies does not include include $hash = $hash.Substring(1) # the hash starts with g, for git, remove it $date_tag = $(get-date -Uformat "%Y%m%d_%H%M") $version_cs_content = @" // Do not commit the changes to this file. using System.Reflection; [assembly: AssemblyVersionAttribute("$version")] [assembly: AssemblyInformationalVersionAttribute("$version-$commits-$hash-$date_tag")] [assembly: AssemblyFileVersionAttribute("$version")] "@ $version_cs_content | set-content .\src\SolutionVersionAssemblyInfo.cs Write-Host "Building" -ForegroundColor Green Exec { msbuild "$solution" /t:Build /p:Configuration=$configuration /v:quiet "/p:OutDir=$build_artifacts_dir" } foreach($filename in @('Net.Sf.Dbdeploy.ilmerge.dll', 'dbdeploy.ilmerge.exe', 'dbdeploy.NAnt.ilmerge.dll','dbdeploy.Powershell.ilmerge.dll','msbuild.dbdeploy.task.ilmerge.dll')){ $original = $filename.Replace(".ilmerge.",".") Move-Item $build_artifacts_dir\$original $build_artifacts_dir\$filename } tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\Net.Sf.Dbdeploy.dll Net.Sf.Dbdeploy.ilmerge.dll nvelocity.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:exe /out:$build_artifacts_dir\dbdeploy.exe dbdeploy.ilmerge.exe Net.Sf.Dbdeploy.dll NDesk.Options.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\dbdeploy.NAnt.dll dbdeploy.NAnt.ilmerge.dll NAnt.Core.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\dbdeploy.Powershell.dll dbdeploy.Powershell.ilmerge.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt tools\ilmerge.exe /v4 /lib:$build_artifacts_dir /target:library /out:$build_artifacts_dir\msbuild.dbdeploy.task.dll msbuild.dbdeploy.task.ilmerge.dll Net.Sf.Dbdeploy.dll /internalize:internalize_exclusions.txt mkdir $build_artifacts_dir\console mkdir $build_artifacts_dir\powershell mkdir $build_artifacts_dir\nant mkdir $build_artifacts_dir\msbuild mkdir $build_artifacts_dir\lib mkdir $build_artifacts_dir\scripts Copy-Item -Path $build_artifacts_dir\dbdeploy.exe -Destination $build_artifacts_dir\console Copy-Item -Path $build_artifacts_dir\dbdeploy.Powershell.dll -Destination $build_artifacts_dir\powershell Copy-Item -Path $build_artifacts_dir\dbdeploy.NAnt.dll -Destination $build_artifacts_dir\nant Copy-Item -Path $build_artifacts_dir\msbuild.dbdeploy.task.dll -Destination $build_artifacts_dir\msbuild Copy-Item -Path $build_artifacts_dir\Net.Sf.Dbdeploy.dll -Destination $build_artifacts_dir\lib Copy-Item -Path $scripts_dir\*.sql -Destination $build_artifacts_dir\scripts Get-ChildItem build -Exclude console,msbuild,nant,powershell,scripts,lib |Remove-Item -recurse Write-Host "Creating packages" -ForegroundColor Green Get-ChildItem $build_artifacts_dir\ -recurse | Write-Zip -IncludeEmptyDirectories -EntryPathRoot "build" -OutputPath $package_dir\dbdeploy.net-$version.zip nuget pack dbdeploy.net.nuspec -version $version -OutputDirectory $package_dir -Verbosity quiet git checkout .\src\SolutionVersionAssemblyInfo.cs Write-Host "Package created at $package_dir\dbdeploy.net-$version.zip" -ForegroundColor Green Write-Host "Nuget package created at $package_dir\dbdeploy.net-$version.nuget" -ForegroundColor Green } Task PublishPackage -description "Publish last packaged version " { if (-not (Test-Path $api_key_file)){ throw "Missing api username and key for bintray at '$api_key_file'. Needs to a file containing just . Grab it at https://bintray.com/profile/edit" } $latest_package = (Get-ChildItem $package_dir)[0] $version = $latest_package.BaseName.Split("-")[1] $root_api_url = "https://api.bintray.com" $api_key_contents = (Get-Content $api_key_file).Trim() $api_username = $api_key_contents.split(" ")[0] $api_key = $api_key_contents.split(" ")[1] $web_client = new-object System.Net.WebClient # force the basic auth header to avoid two trips (one for the 401 and another with the header) $basic_auth_header= [Convert]::ToBase64String([System.Text.Encoding]::Utf8.GetBytes($api_username+":"+$api_key)) $web_client.Headers["Authorization"] = "Basic "+$basic_auth_header $web_client.Uploadfile("$root_api_url/content/brunomlopes/generic/dbdeploy.NET/$version/$($latest_package.Name)", "PUT", $latest_package.FullName) $web_client.UploadData("$root_api_url/content/brunomlopes/generic/dbdeploy.NET/$version/publish", "POST", [System.Text.Encoding]::Utf8.GetBytes("{'discard':false}")) } Task Help { Write-Documentation } Task default -depends Help \ No newline at end of file diff --git a/example_scripts/Tools/nant/bin/NAnt.CompressionTasks.xml b/example_scripts/Tools/nant/bin/NAnt.CompressionTasks.xml index 9d90cb8..50c698a 100644 --- a/example_scripts/Tools/nant/bin/NAnt.CompressionTasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.CompressionTasks.xml @@ -5,9 +5,9 @@ - - Summary description for ExpandTask. - + + Summary description for ExpandTask. + @@ -42,85 +42,85 @@ - - Overwrite files, even if they are newer than the corresponding - entries in the archive. The default is . - + + Overwrite files, even if they are newer than the corresponding + entries in the archive. The default is . + - - Expands a file packed using GZip compression. - - - Expands "test.tar.gz" to "test2.tar". - - - ]]> - - + + Expands a file packed using GZip compression. + + + Expands "test.tar.gz" to "test2.tar". + + + ]]> + + - - Extracts the file from the gzip archive. - + + Extracts the file from the gzip archive. + - - The file to expand. - + + The file to expand. + - - The destination file. - + + The destination file. + - - Creates a tar file from the specified filesets. - - - Uses #ziplib (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. - - - - Tar all files in ${build.dir} and ${doc.dir} into a file - called "backup.tar.gz", and apply gzip compression to it. - - - - - - - - - - - ]]> - - + + Creates a tar file from the specified filesets. + + + Uses #ziplib (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. + + + + Tar all files in ${build.dir} and ${doc.dir} into a file + called "backup.tar.gz", and apply gzip compression to it. + + + + + + + + + + + ]]> + + - - Creates the tar file. - + + Creates the tar file. + - - The tar file to create. - + + The tar file to create. + - - Include empty directories in the generated tar file. The default is - . - + + Include empty directories in the generated tar file. The default is + . + - - The set of files to be included in the archive. - + + The set of files to be included in the archive. + @@ -128,39 +128,39 @@ - - Extracts files from a tar archive. - - - - Uses #ziplib - (SharpZipLib), an open source Zip/GZip library written entirely in C#. - - - - Extracts all files from a gzipped tar, preserving the directory structure. - - - ]]> - - + + Extracts files from a tar archive. + + + + Uses #ziplib + (SharpZipLib), an open source Zip/GZip library written entirely in C#. + + + + Extracts all files from a gzipped tar, preserving the directory structure. + + + ]]> + + - - Extracts the files from the archive. - + + Extracts the files from the archive. + - - The archive file to expand. - + + The archive file to expand. + - - The directory where to store the expanded file(s). The default is - the project base directory. - + + The directory where to store the expanded file(s). The default is + the project base directory. + @@ -168,143 +168,143 @@ - - Extracts files from a zip archive. - - - - Uses #ziplib - (SharpZipLib), an open source Zip/GZip library written entirely in C#. - - - - Extracts all the file from the zip, preserving the directory structure. - - - ]]> - - + + Extracts files from a zip archive. + + + + Uses #ziplib + (SharpZipLib), an open source Zip/GZip library written entirely in C#. + + + + Extracts all the file from the zip, preserving the directory structure. + + + ]]> + + - - Extracts the files from the zip file. - + + Extracts the files from the zip file. + - - The archive file to expand. - + + The archive file to expand. + - - The directory where the expanded files should be stored. The - default is the project base directory. - + + The directory where the expanded files should be stored. The + default is the project base directory. + - - The character encoding that has been used for filenames inside the - zip file. The default is the system's OEM code page. - + + The character encoding that has been used for filenames inside the + zip file. The default is the system's OEM code page. + - - Creates a zip file from the specified filesets. - - - - Uses #ziplib - (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. - - - - - Zip all files in ${build.dir} and ${doc.dir} into a file - called "backup.zip". - - - - - - - - - - - ]]> - - + + Creates a zip file from the specified filesets. + + + + Uses #ziplib + (SharpZipLib), an open source Tar/Zip/GZip library written entirely in C#. + + + + + Zip all files in ${build.dir} and ${doc.dir} into a file + called "backup.zip". + + + + + + + + + + + ]]> + + - - Creates the zip file. - + + Creates the zip file. + - - The zip file to create. - + + The zip file to create. + - - The comment for the file. - + + The comment for the file. + - - Date/time stamp for the files in the format MM/DD/YYYY HH:MM:SS. - + + Date/time stamp for the files in the format MM/DD/YYYY HH:MM:SS. + - - Desired level of compression. Possible values are 0 (STORE only) - to 9 (highest). The default is 6. - + + Desired level of compression. Possible values are 0 (STORE only) + to 9 (highest). The default is 6. + - - Include empty directories in the generated zip file. The default is - . - + + Include empty directories in the generated zip file. The default is + . + - - The set of files to be included in the archive. - + + The set of files to be included in the archive. + - - Specifies the behaviour when a duplicate file is found. The default - is . - + + Specifies the behaviour when a duplicate file is found. The default + is . + - - The character encoding to use for filenames and comment inside the - zip file. The default is the system's OEM code page. - + + The character encoding to use for filenames and comment inside the + zip file. The default is the system's OEM code page. + - - Specifies how entries with the same name should be processed. - + + Specifies how entries with the same name should be processed. + - - Overwrite existing entry with same name. - + + Overwrite existing entry with same name. + - - Preserve existing entry with the same name. - + + Preserve existing entry with the same name. + - - Report failure when two entries have the same name. - + + Report failure when two entries have the same name. + @@ -337,19 +337,19 @@ - - No compression. - + + No compression. + - - GZIP compression. - + + GZIP compression. + - - BZIP2 compression. - + + BZIP2 compression. + @@ -382,45 +382,45 @@ - - A 3 digit octal string, specify the user, group and other modes - in the standard Unix fashion. Only applies to plain files. The - default is 644. - + + A 3 digit octal string, specify the user, group and other modes + in the standard Unix fashion. Only applies to plain files. The + default is 644. + - - A 3 digit octal string, specify the user, group and other modes - in the standard Unix fashion. Only applies to directories. The - default is 755. - + + A 3 digit octal string, specify the user, group and other modes + in the standard Unix fashion. Only applies to directories. The + default is 755. + - - The username for the tar entry. - + + The username for the tar entry. + - - The user identifier (UID) for the tar entry. - + + The user identifier (UID) for the tar entry. + - - The groupname for the tar entry. - + + The groupname for the tar entry. + - - The group identifier (GID) for the tar entry. - + + The group identifier (GID) for the tar entry. + - - The top level directory prefix. If set, all file and directory paths - in the fileset will have this value prepended. Can either be a single - directory name or a "/" separated path. - + + The top level directory prefix. If set, all file and directory paths + in the fileset will have this value prepended. Can either be a single + directory name or a "/" separated path. + @@ -474,11 +474,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -511,16 +511,16 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. - - Get the total number of files that are represented by the - filesets in this collection. - + + Get the total number of files that are represented by the + filesets in this collection. + @@ -535,28 +535,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -565,11 +565,11 @@ - - The top level directory prefix. If set, all file and directory paths - in the fileset will have this value prepended. Can either be a single - directory name or a "/" separated path. - + + The top level directory prefix. If set, all file and directory paths + in the fileset will have this value prepended. Can either be a single + directory name or a "/" separated path. + @@ -623,11 +623,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -660,16 +660,16 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. - - Get the total number of files that are represented by the - filesets in this collection. - + + Get the total number of files that are represented by the + filesets in this collection. + @@ -684,28 +684,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + diff --git a/example_scripts/Tools/nant/bin/NAnt.Core.xml b/example_scripts/Tools/nant/bin/NAnt.Core.xml index b203ddf..07efaeb 100644 --- a/example_scripts/Tools/nant/bin/NAnt.Core.xml +++ b/example_scripts/Tools/nant/bin/NAnt.Core.xml @@ -11,9 +11,9 @@ - - Base class for all validator attributes. - + + Base class for all validator attributes. + @@ -36,50 +36,50 @@ cannot be converted to a . - - Indicates that property should be treated as a XML attribute for the - task. - - - Examples of how to specify task attributes - - #region Public Instance Properties - - [BuildAttribute("out", Required=true)] - public string Output { - get { return _out; } - set { _out = value; } - } - [BuildAttribute("optimize")] - [BooleanValidator()] - public bool Optimize { - get { return _optimize; } - set { _optimize = value; } - } - [BuildAttribute("warnlevel")] - [Int32Validator(0,4)] // limit values to 0-4 - public int WarnLevel { - get { return _warnLevel; } - set { _warnLevel = value; } - } - [BuildElement("sources")] - public FileSet Sources { - get { return _sources; } - set { _sources = value; } - } - - #endregion Public Instance Properties - - #region Private Instance Fields - - private string _out = null; - private bool _optimize = false; - private int _warnLevel = 4; - private FileSet _sources = new FileSet(); - - #endregion Private Instance Fields - - + + Indicates that property should be treated as a XML attribute for the + task. + + + Examples of how to specify task attributes + + #region Public Instance Properties + + [BuildAttribute("out", Required=true)] + public string Output { + get { return _out; } + set { _out = value; } + } + [BuildAttribute("optimize")] + [BooleanValidator()] + public bool Optimize { + get { return _optimize; } + set { _optimize = value; } + } + [BuildAttribute("warnlevel")] + [Int32Validator(0,4)] // limit values to 0-4 + public int WarnLevel { + get { return _warnLevel; } + set { _warnLevel = value; } + } + [BuildElement("sources")] + public FileSet Sources { + get { return _sources; } + set { _sources = value; } + } + + #endregion Public Instance Properties + + #region Private Instance Fields + + private string _out = null; + private bool _optimize = false; + private int _warnLevel = 4; + private FileSet _sources = new FileSet(); + + #endregion Private Instance Fields + + @@ -91,85 +91,85 @@ is a zero-length . - - Gets or sets the name of the XML attribute. - - - The name of the XML attribute. - + + Gets or sets the name of the XML attribute. + + + The name of the XML attribute. + - - Gets or sets a value indicating whether the attribute is required. - - - if the attribute is required; otherwise, - . The default is . - + + Gets or sets a value indicating whether the attribute is required. + + + if the attribute is required; otherwise, + . The default is . + - - Gets or sets a value indicating whether property references should - be expanded. - - - if properties should be expanded; otherwise - . The default is . - + + Gets or sets a value indicating whether property references should + be expanded. + + + if properties should be expanded; otherwise + . The default is . + - - Used to specify how this attribute will be handled as the XML is - parsed and given to the element. - - - if XML should be processed; otherwise - . The default is . - + + Used to specify how this attribute will be handled as the XML is + parsed and given to the element. + + + if XML should be processed; otherwise + . The default is . + - - Indicates that property should be treated as a XML arrayList - - - - Should only be applied to properties exposing strongly typed arrays or - strongly typed collections. - - - The XML format is like this: - - - - - - - - ]]> - - - + + Indicates that property should be treated as a XML arrayList + + + + Should only be applied to properties exposing strongly typed arrays or + strongly typed collections. + + + The XML format is like this: + + + + + + + + ]]> + + + - - Indicates that the property should be treated as an XML element and - further processing should be done. - - - - The XML format is like this: - - - - - - - ]]> - - - + + Indicates that the property should be treated as an XML element and + further processing should be done. + + + + The XML format is like this: + + + + + + + ]]> + + + @@ -181,31 +181,31 @@ is a zero-length . - - Gets or sets the name of the attribute. - - - The name of the attribute. - + + Gets or sets the name of the attribute. + + + The name of the attribute. + - - Gets or sets a value indicating whether the attribute is required. - - - if the attribute is required; otherwise, - . The default is . - + + Gets or sets a value indicating whether the attribute is required. + + + if the attribute is required; otherwise, + . The default is . + - - Used to specify how this element will be handled as the XML is parsed - and given to the element. - - - if XML should be processed; otherwise - . The default is . - + + Used to specify how this element will be handled as the XML is parsed + and given to the element. + + + if XML should be processed; otherwise + . The default is . + @@ -235,31 +235,31 @@ is . - - Indicates that the property should be treated as a container for a - collection of build elements. - - - - Should only be applied to properties exposing strongly typed arrays or - strongly typed collections. - - - The XML format is like this: - - - - - - - - - - ]]> - - - + + Indicates that the property should be treated as a container for a + collection of build elements. + + + + Should only be applied to properties exposing strongly typed arrays or + strongly typed collections. + + + The XML format is like this: + + + + + + + + + + ]]> + + + @@ -272,15 +272,15 @@ is a zero-length . - - The name of the child element within the collection. - - - The name to check for in the XML of the elements in the collection. - - - This can be used for validation and schema generation. - + + The name of the child element within the collection. + + + The name to check for in the XML of the elements in the collection. + + + This can be used for validation and schema generation. + @@ -302,14 +302,14 @@ cannot be converted to a . - - Indicates that class should be treated as a NAnt element. - - - Attach this attribute to a subclass of Element to have NAnt be able - to recognize it. The name should be short but must not confict - with any other element already in use. - + + Indicates that class should be treated as a NAnt element. + + + Attach this attribute to a subclass of Element to have NAnt be able + to recognize it. The name should be short but must not confict + with any other element already in use. + @@ -321,18 +321,18 @@ is a zero-length . - - Gets or sets the name of the element. - - - The name of the element. - + + Gets or sets the name of the element. + + + The name of the element. + - - Indicates that a property should be treated as a XML file set for the - task. - + + Indicates that a property should be treated as a XML file set for the + task. + @@ -344,24 +344,24 @@ is a zero-length . - - Indicates that the value of the property to which the attribute is - assigned, can be configured on the framework-level in the NAnt application - configuration file. - - - - The following example shows a property of which the value can be - configured for a specific framework in the NAnt configuration file. - - - [FrameworkConfigurable("exename", Required=true)] - public virtual string ExeName { - get { return _exeName; } - set { _exeName = value; } - } - - + + Indicates that the value of the property to which the attribute is + assigned, can be configured on the framework-level in the NAnt application + configuration file. + + + + The following example shows a property of which the value can be + configured for a specific framework in the NAnt configuration file. + + + [FrameworkConfigurable("exename", Required=true)] + public virtual string ExeName { + get { return _exeName; } + set { _exeName = value; } + } + + @@ -373,30 +373,30 @@ is a zero-length . - - Gets or sets the name of the framework configuration attribute. - - The name of the framework configuration attribute. + + Gets or sets the name of the framework configuration attribute. + + The name of the framework configuration attribute. - - Gets or sets a value indicating whether the configuration attribute - is required. - - - if the configuration attribute is required; - otherwise, . The default is . - + + Gets or sets a value indicating whether the configuration attribute + is required. + + + if the configuration attribute is required; + otherwise, . The default is . + - - Gets or sets a value indicating whether property references should - be expanded. - - - if properties should be expanded; otherwise - . The default is . - + + Gets or sets a value indicating whether property references should + be expanded. + + + if properties should be expanded; otherwise + . The default is . + @@ -418,12 +418,12 @@ is a zero-length . - - Gets or sets the name of the function. - - - The name of the function. - + + Gets or sets the name of the function. + + + The name of the function. + @@ -453,23 +453,23 @@ - - Gets or sets the category of the function set. - - - The name of the category of the function set. - - - This will be displayed in the user docs. - + + Gets or sets the category of the function set. + + + The name of the category of the function set. + + + This will be displayed in the user docs. + - - Gets or sets the prefix of all functions in this function set. - - - The prefix of the functions in this function set. - + + Gets or sets the prefix of all functions in this function set. + + + The prefix of the functions in this function set. + @@ -526,30 +526,30 @@ - - The base of the number to validate, which must be 2, 8, 10, or 16. - - - The base of the number to validate. - - - The default is 10. - + + The base of the number to validate, which must be 2, 8, 10, or 16. + + + The base of the number to validate. + + + The default is 10. + - - Defines possible locations in which a task executable can be located. - + + Defines possible locations in which a task executable can be located. + - - Locates the task executable in the current Framework directory. - + + Locates the task executable in the current Framework directory. + - - Locates the task executable in the current Framework SDK directory. - + + Locates the task executable in the current Framework SDK directory. + @@ -605,15 +605,15 @@ is an empty string value and is set to . - - Gets or sets a value indicating whether an empty string or - should be a considered a valid value. - - - if an empty string or - should be considered a valid value; otherwise, . - The default is . - + + Gets or sets a value indicating whether an empty string or + should be a considered a valid value. + + + if an empty string or + should be considered a valid value; otherwise, . + The default is . + @@ -625,38 +625,38 @@ - - An optional error message that can be used to better describe the - regular expression error. - + + An optional error message that can be used to better describe the + regular expression error. + - - Indicates that property should be treated as a XML attribute for the - task. - - - Examples of how to specify task attributes - - // task XmlType default is string - [TaskAttribute("out", Required=true)] - string _out = null; // assign default value here - [TaskAttribute("optimize")] - [BooleanValidator()] - // during ExecuteTask you can safely use Convert.ToBoolean(_optimize) - string _optimize = Boolean.FalseString; - [TaskAttribute("warnlevel")] - [Int32Validator(0,4)] // limit values to 0-4 - // during ExecuteTask you can safely use Convert.ToInt32(_optimize) - string _warnlevel = "0"; - [BuildElement("sources")] - FileSet _sources = new FileSet(); - - NOTE: Attribute values must be of type of string if you want - to be able to have macros. The field stores the exact value during - Initialize. Just before ExecuteTask is called NAnt will expand - all the macros with the current values. - + + Indicates that property should be treated as a XML attribute for the + task. + + + Examples of how to specify task attributes + + // task XmlType default is string + [TaskAttribute("out", Required=true)] + string _out = null; // assign default value here + [TaskAttribute("optimize")] + [BooleanValidator()] + // during ExecuteTask you can safely use Convert.ToBoolean(_optimize) + string _optimize = Boolean.FalseString; + [TaskAttribute("warnlevel")] + [Int32Validator(0,4)] // limit values to 0-4 + // during ExecuteTask you can safely use Convert.ToInt32(_optimize) + string _warnlevel = "0"; + [BuildElement("sources")] + FileSet _sources = new FileSet(); + + NOTE: Attribute values must be of type of string if you want + to be able to have macros. The field stores the exact value during + Initialize. Just before ExecuteTask is called NAnt will expand + all the macros with the current values. + @@ -668,14 +668,14 @@ is a zero-length . - - Indicates that class should be treated as a task. - - - Attach this attribute to a subclass of Task to have NAnt be able - to recognize it. The name should be short but must not confict - with any other task already in use. - + + Indicates that class should be treated as a task. + + + Attach this attribute to a subclass of Task to have NAnt be able + to recognize it. The name should be short but must not confict + with any other task already in use. + @@ -687,15 +687,15 @@ is a zero-length . - - Models a NAnt XML element in the build file. - - - - Automatically validates attributes in the element based on attributes - applied to members in derived classes. - - + + Models a NAnt XML element in the build file. + + + + Automatically validates attributes in the element based on attributes + applied to members in derived classes. + + @@ -710,30 +710,30 @@ The element that should be used to create a new instance of the class. - - Performs default initialization. - - - Derived classes that wish to add custom initialization should override - the method. - + + Performs default initialization. + + + Derived classes that wish to add custom initialization should override + the method. + - - Retrieves the location in the build file where the element is - defined. - - The element's build file location + + Retrieves the location in the build file where the element is + defined. + + The element's build file location - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the project. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the project. + @@ -747,11 +747,11 @@ - - Derived classes should override to this method to provide extra - initialization and validation not covered by the base class. - - The XML node of the element to use for initialization. + + Derived classes should override to this method to provide extra + initialization and validation not covered by the base class. + + The XML node of the element to use for initialization. @@ -770,33 +770,33 @@ - - Performs initialization using the given set of properties. - + + Performs initialization using the given set of properties. + - - Initializes all build attributes and child elements. - + + Initializes all build attributes and child elements. + - - Locates the XML node for the specified attribute in the project - configuration node. - - The name of attribute for which the XML configuration node should be located. - The framework to use to obtain framework specific information, or if no framework specific information should be used. - - The XML configuration node for the specified attribute, or - if no corresponding XML node could be - located. - - - If there's a valid current framework, the configuration section for - that framework will first be searched. If no corresponding - configuration node can be located in that section, the framework-neutral - section of the project configuration node will be searched. - + + Locates the XML node for the specified attribute in the project + configuration node. + + The name of attribute for which the XML configuration node should be located. + The framework to use to obtain framework specific information, or if no framework specific information should be used. + + The XML configuration node for the specified attribute, or + if no corresponding XML node could be + located. + + + If there's a valid current framework, the configuration section for + that framework will first be searched. If no corresponding + configuration node can be located in that section, the framework-neutral + section of the project configuration node will be searched. + @@ -824,12 +824,12 @@ - - Gets the name of the XML element used to initialize this element. - - - The name of the XML element used to initialize this element. - + + Gets the name of the XML element used to initialize this element. + + + The name of the XML element used to initialize this element. + @@ -861,21 +861,21 @@ - - Gets or sets the XML node of the element. - - - The XML node of the element. - + + Gets or sets the XML node of the element. + + + The XML node of the element. + - - Gets or sets the location in the build file where the element is - defined. - - - The location in the build file where the element is defined. - + + Gets or sets the location in the build file where the element is + defined. + + + The location in the build file where the element is defined. + @@ -955,10 +955,10 @@ - - Holds the dictionary that should be used for property - expansion. - + + Holds the dictionary that should be used for property + expansion. + @@ -969,21 +969,21 @@ - - Holds the names of the attributes that still need to be - processed. - + + Holds the names of the attributes that still need to be + processed. + - - Holds the names of the child nodes that still need to be - processed. - + + Holds the names of the child nodes that still need to be + processed. + - - Holds the logger for the current class. - + + Holds the logger for the current class. + @@ -1003,9 +1003,9 @@ - - Internal interface used for setting element attributes. - + + Internal interface used for setting element attributes. + @@ -1017,27 +1017,27 @@ - - The base of the directory of this dirlist. The default is the project - base directory. - + + The base of the directory of this dirlist. The default is the project + base directory. + - - Gets the collection of environment variables that should be passed - to external programs that are launched. - - - - The collection of environment variables that should be passed - to external programs that are launched. - - + + Gets the collection of environment variables that should be passed + to external programs that are launched. + + + + The collection of environment variables that should be passed + to external programs that are launched. + + - - The command-line arguments for the runtime engine. - + + The command-line arguments for the runtime engine. + @@ -1140,81 +1140,81 @@ is . - - Functions as a chainable TextReader - - - Implements a abstraction over a TextReader that allows the class to represent - either a TextReader or another ChainableReader to which it is chained. - By passing a ChainableReader as a constructor paramater it is possiable to - chain many ChainableReaders together. The last ChainableReader in the chain must - be based on a TextReader. - + + Functions as a chainable TextReader + + + Implements a abstraction over a TextReader that allows the class to represent + either a TextReader or another ChainableReader to which it is chained. + By passing a ChainableReader as a constructor paramater it is possiable to + chain many ChainableReaders together. The last ChainableReader in the chain must + be based on a TextReader. + - - Makes it so all calls to Read and Peek are passed the ChainableReader - passed as a parameter. - - ChainableReader to forward calls to + + Makes it so all calls to Read and Peek are passed the ChainableReader + passed as a parameter. + + ChainableReader to forward calls to - - Makes it so all calls to Read and Peek are passed the TextReader - passed as a parameter. - - TextReader to forward calls to + + Makes it so all calls to Read and Peek are passed the TextReader + passed as a parameter. + + TextReader to forward calls to - - Forwards Peek calls to the TextReader or ChainableReader passed in the corresponding constructor. - - Character or -1 if end of stream + + Forwards Peek calls to the TextReader or ChainableReader passed in the corresponding constructor. + + Character or -1 if end of stream - - Forwards Read calls to the TextReader or ChainableReader passed in the corresponding constructor. - - - Character or -1 if end of stream. - + + Forwards Read calls to the TextReader or ChainableReader passed in the corresponding constructor. + + + Character or -1 if end of stream. + - - Closes the reader. - + + Closes the reader. + - - Calls close and supresses the finalizer for the object. - + + Calls close and supresses the finalizer for the object. + - - Gets a value indicating if the reader is backed by a stream in the - chain. - - - if the reader is backed by a stream; - otherwise, . - + + Gets a value indicating if the reader is backed by a stream in the + chain. + + + if the reader is backed by a stream; + otherwise, . + - - Allows a file's content to be modified while performing an operation. - + + Allows a file's content to be modified while performing an operation. + - - Called after construction and after properties are set. Allows - for filter initialization. - + + Called after construction and after properties are set. Allows + for filter initialization. + - - If then the filter will be used; otherwise, - skipped. The default is . - + + If then the filter will be used; otherwise, + skipped. The default is . + @@ -1329,11 +1329,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -1366,10 +1366,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -1390,28 +1390,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -1470,15 +1470,15 @@ - - Provides the abstract base class for types. - + + Provides the abstract base class for types. + - - Should be overridden by derived classes. clones the referenced types - data into the current instance. - + + Should be overridden by derived classes. clones the referenced types + data into the current instance. + @@ -1487,14 +1487,14 @@ - - The ID used to be referenced later. - + + The ID used to be referenced later. + - - The ID to use as the reference. - + + The ID to use as the reference. + @@ -1507,12 +1507,12 @@ - - Gets the name of the datatype. - - - The name of the datatype. - + + Gets the name of the datatype. + + + The name of the datatype. + @@ -1537,21 +1537,21 @@ - - The filters to apply. - + + The filters to apply. + - - The encoding to assume when filter-copying files. The default is - system's current ANSI code page. - + + The encoding to assume when filter-copying files. The default is + system's current ANSI code page. + - - Configurator that initializes filters in the order in which they've - been specified in the build file. - + + Configurator that initializes filters in the order in which they've + been specified in the build file. + @@ -1605,11 +1605,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -1642,10 +1642,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -1660,28 +1660,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -1718,43 +1718,43 @@ - - Holds data for expression expansion between input and output. - + + Holds data for expression expansion between input and output. + - - Called after construction and after properties are set. Allows - for filter initialization. - + + Called after construction and after properties are set. Allows + for filter initialization. + - - Reads the next character applying the filter logic. - - Char as an int or -1 if at the end of the stream + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream - - Reads the next character applying the filter logic without advancing the current position in the stream. - - Char as an int or -1 if at the end of the stream + + Reads the next character applying the filter logic without advancing the current position in the stream. + + Char as an int or -1 if at the end of the stream - - Moves to the next character. - + + Moves to the next character. + - - Refills the buffer, running our input through - .) - + + Refills the buffer, running our input through + .) + - - Determines whether we've passed the end of our data. - + + Determines whether we've passed the end of our data. + @@ -1799,46 +1799,46 @@ - - Construct that allows this filter to be chained to the one - in the parameter chainedReader. - - Filter that the filter will be chained to + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to - - Reads the next character applying the filter logic. - - Char as an int or -1 if at the end of the stream + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream - - Reads the next character applying the filter logic without - advancing the current position in the stream. - Peek currently is not supported. - - - Char as an int or -1 if at the end of the stream. - + + Reads the next character applying the filter logic without + advancing the current position in the stream. + Peek currently is not supported. + + + Char as an int or -1 if at the end of the stream. + - - - Helper function used to search for the filter's traget string. If the string - is found the result is true. If the string was not found false is returned and - nonMatchingChars contains the characters that were read to determine if the - string is present. - - - - It is assumed the stream is positioned at the character after the first character - in the target string. - - - First character in target string - Ture if the stream ended while search for the string. - Characters that were read while searching for the string. - + + + Helper function used to search for the filter's traget string. If the string + is found the result is true. If the string was not found false is returned and + nonMatchingChars contains the characters that were read to determine if the + string is present. + + + + It is assumed the stream is positioned at the character after the first character + in the target string. + + + First character in target string + Ture if the stream ended while search for the string. + Characters that were read while searching for the string. + @@ -1849,35 +1849,35 @@ Char as an int or -1 if at the end of the stream - - Compares to characters taking into account the _ignoreCase flag. - - - - + + Compares to characters taking into account the _ignoreCase flag. + + + + - - The string to be replaced. - + + The string to be replaced. + - - The new value for the replaced string. - Am empty string is permissible. - + + The new value for the replaced string. + Am empty string is permissible. + - - Determines if case will be ignored. - The default is . - + + Determines if case will be ignored. + The default is . + - - Delegate for Read and Peek. Allows the same implementation - to be used for both methods. - + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + @@ -1929,42 +1929,42 @@ - - Construct that allows this filter to be chained to the one - in the parameter chainedReader. - - Filter that the filter will be chained to + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to - - Reads the next character applying the filter logic. - - Char as an int or -1 if at the end of the stream + + Reads the next character applying the filter logic. + + Char as an int or -1 if at the end of the stream - - Reads the next character applying the filter logic without - advancing the current position in the stream. - Peek currently is not supported. - - - Char as an int or -1 if at the end of the stream. - + + Reads the next character applying the filter logic without + advancing the current position in the stream. + Peek currently is not supported. + + + Char as an int or -1 if at the end of the stream. + - - Initialize the filter by setting its parameters. - + + Initialize the filter by setting its parameters. + - - Finds a token give that we are positioned at a beginning token character. Either a - token replacement is returned or the characters that were read looking for the token. - - A token was not found - A token was found by there is no replacement - The stream ended while looking for the token - Either the replacement token or the characters that were read looking for the token + + Finds a token give that we are positioned at a beginning token character. Either a + token replacement is returned or the characters that were read looking for the token. + + A token was not found + A token was found by there is no replacement + The stream ended while looking for the token + Either the replacement token or the characters that were read looking for the token @@ -1984,31 +1984,31 @@ - - Marks the beginning of a token. The default is "@". - + + Marks the beginning of a token. The default is "@". + - - Marks the end of a token. The default is "@". - + + Marks the end of a token. The default is "@". + - - Tokens and replacement values. - + + Tokens and replacement values. + - - Determines if case will be ignored. - The default is . - + + Determines if case will be ignored. + The default is . + - - Delegate for Read and Peek. Allows the same implementation - to be used for both methods. - + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + @@ -2033,24 +2033,24 @@ - - Construct that allows this filter to be chained to the one - in the parameter chainedReader. - - Filter that the filter will be chained to + + Construct that allows this filter to be chained to the one + in the parameter chainedReader. + + Filter that the filter will be chained to - - Retrieves the next character with moving the position in the stream. - This method is not implemented - - -1 if end of stream otherwise a character + + Retrieves the next character with moving the position in the stream. + This method is not implemented + + -1 if end of stream otherwise a character - - Retrieves the next character in the stream. - - -1 if end of stream otherwise a character + + Retrieves the next character in the stream. + + -1 if end of stream otherwise a character @@ -2061,21 +2061,21 @@ Char as an int or -1 if at the end of the stream - - The number of spaces used when converting a tab. The default is - "8". - + + The number of spaces used when converting a tab. The default is + "8". + - - Delegate for Read and Peek. Allows the same implementation - to be used for both methods. - + + Delegate for Read and Peek. Allows the same implementation + to be used for both methods. + - - Functions to return information for a given assembly. - + + Functions to return information for a given assembly. + @@ -2124,13 +2124,13 @@ - - Gets the full name of the assembly, also known as the display name. - - The assembly to get the full name for. - - The full name of the assembly, also known as the display name. - + + Gets the full name of the assembly, also known as the display name. + + The assembly to get the full name for. + + The full name of the assembly, also known as the display name. + @@ -2143,19 +2143,19 @@ - - Gets the physical location, in codebase format, of the loaded file - that contains the manifest. - - The assembly to get the location for. - - The location of the specified assembly. - + + Gets the physical location, in codebase format, of the loaded file + that contains the manifest. + + The assembly to get the location for. + + The location of the specified assembly. + - - Functions that return information about an assembly's identity. - + + Functions that return information about an assembly's identity. + @@ -2291,49 +2291,49 @@ - - Converts the argument to an integer. - - value to be converted - converted to integer. The function fails with an exception when the conversion is not possible. + + Converts the argument to an integer. + + value to be converted + converted to integer. The function fails with an exception when the conversion is not possible. - - Converts the argument to double - - The value to be converted. - converted to double. The function fails with an exception when the conversion is not possible. + + Converts the argument to double + + The value to be converted. + converted to double. The function fails with an exception when the conversion is not possible. - - Converts the argument to a string. - - The value to be converted. - - converted to string. The function fails - with an exception when the conversion is not possible. - - - Named method ConvertToString as a static ToString method would break - CLS compliance. - + + Converts the argument to a string. + + The value to be converted. + + converted to string. The function fails + with an exception when the conversion is not possible. + + + Named method ConvertToString as a static ToString method would break + CLS compliance. + - - Converts the argument to a datetime. - - value to be converted - converted to datetime. The function fails with an exception when the conversion is not possible. + + Converts the argument to a datetime. + + value to be converted + converted to datetime. The function fails with an exception when the conversion is not possible. - - Converts the argument to a boolean - - The string value to be converted to boolean. Must be 'true' or 'false'. - - converted to boolean. The function fails - with an exception when the conversion is not possible. - + + Converts the argument to a boolean + + The string value to be converted to boolean. Must be 'true' or 'false'. + + converted to boolean. The function fails + with an exception when the conversion is not possible. + @@ -2345,96 +2345,96 @@ - - Gets the year component of the specified date. - - The date of which to get the year component. - - The year, between 1 and 9999. - + + Gets the year component of the specified date. + + The date of which to get the year component. + + The year, between 1 and 9999. + - - Gets the month component of the specified date. - - The date of which to get the month component. - - The month, between 1 and 12. - + + Gets the month component of the specified date. + + The date of which to get the month component. + + The month, between 1 and 12. + - - Gets the day of the month represented by the specified date. - - The date of which to get the day of the month. - - The day value, between 1 and 31. - + + Gets the day of the month represented by the specified date. + + The date of which to get the day of the month. + + The day value, between 1 and 31. + - - Gets the hour component of the specified date. - - The date of which to get the hour component. - - The hour, between 0 and 23. - + + Gets the hour component of the specified date. + + The date of which to get the hour component. + + The hour, between 0 and 23. + - - Gets the minute component of the specified date. - - The date of which to get the minute component. - - The minute, between 0 and 59. - + + Gets the minute component of the specified date. + + The date of which to get the minute component. + + The minute, between 0 and 59. + - - Gets the seconds component of the specified date. - - The date of which to get the seconds component. - - The seconds, between 0 and 59. - + + Gets the seconds component of the specified date. + + The date of which to get the seconds component. + + The seconds, between 0 and 59. + - - Gets the milliseconds component of the specified date. - - The date of which to get the milliseconds component. - - The millisecond, between 0 and 999. - + + Gets the milliseconds component of the specified date. + + The date of which to get the milliseconds component. + + The millisecond, between 0 and 999. + - - Gets the number of ticks that represent the specified date. - - The date of which to get the number of ticks. - - The number of ticks that represent the date and time of the - specified date. - + + Gets the number of ticks that represent the specified date. + + The date of which to get the number of ticks. + + The number of ticks that represent the date and time of the + specified date. + - - Gets the day of the week represented by the specified date. - - The date of which to get the day of the week. - - The day of the week, ranging from zero, indicating Sunday, to six, - indicating Saturday. - + + Gets the day of the week represented by the specified date. + + The date of which to get the day of the week. + + The day of the week, ranging from zero, indicating Sunday, to six, + indicating Saturday. + - - Gets the day of the year represented by the specified date. - - The date of which to get the day of the year. - - The day of the year, between 1 and 366. - + + Gets the day of the year represented by the specified date. + + The date of which to get the day of the year. + + The day of the year, between 1 and 366. + @@ -2450,14 +2450,14 @@ is less than 1 or greater than 12. - - Returns an indication whether the specified year is a leap year. - - A 4-digit year. - - if is a leap year; - otherwise, . - + + Returns an indication whether the specified year is a leap year. + + A 4-digit year. + + if is a leap year; + otherwise, . + @@ -2491,9 +2491,9 @@ - - Groups a set of functions for dealing with directories. - + + Groups a set of functions for dealing with directories. + @@ -2583,28 +2583,28 @@ The specified path, file name, or both exceed the system-defined maximum length. - - Determines whether the given path refers to an existing directory - on disk. - - The path to test. - - if refers to an - existing directory; otherwise, . - - - Remove directory "test", if it exists. - - - ]]> - - + + Determines whether the given path refers to an existing directory + on disk. + + The path to test. + + if refers to an + existing directory; otherwise, . + + + Remove directory "test", if it exists. + + + ]]> + + - - Functions for requesting information from DNS. - + + Functions for requesting information from DNS. + @@ -2648,9 +2648,9 @@ - - Provide information about the current environment and platform. - + + Provide information about the current environment and platform. + @@ -2710,27 +2710,27 @@ - - Gets the user name of the person who started the current thread. - - - The name of the person logged on to the system who started the - current thread. - - - - Modify the home directory of the current user on unix-based systems. - - - - - - - - ]]> - - + + Gets the user name of the person who started the current thread. + + + The name of the person logged on to the system who started the + current thread. + + + + Modify the home directory of the current user on unix-based systems. + + + + + + + + ]]> + + @@ -2743,28 +2743,28 @@ Environment variable does not exist. - - Gets a value indicating whether the specified environment variable - exists. - - The environment variable that should be checked. - - if the environment variable exists; otherwise, - . - - - - Execute a set of tasks only if the "BUILD_DEBUG" environment - variable is set. - - - - ... - - ]]> - - + + Gets a value indicating whether the specified environment variable + exists. + + The environment variable that should be checked. + + if the environment variable exists; otherwise, + . + + + + Execute a set of tasks only if the "BUILD_DEBUG" environment + variable is set. + + + + ... + + ]]> + + @@ -2784,26 +2784,26 @@ - - Gets the newline string defined for this environment. - - - A string containing CRLF for non-Unix platforms, or LF for Unix - platforms. - - - Output two lines in a log file. - - - ]]> - - + + Gets the newline string defined for this environment. + + + A string containing CRLF for non-Unix platforms, or LF for Unix + platforms. + + + Output two lines in a log file. + + + ]]> + + - - Groups a set of functions for dealing with files. - + + Groups a set of functions for dealing with files. + @@ -2844,24 +2844,24 @@ The parameter is in an invalid format. - - Determines whether the specified file exists. - - The file to check. - - if refers to an - existing file; otherwise, . - - - Execute a set of tasks, if file "output.xml" does not exist. - - - ... - - ]]> - - + + Determines whether the specified file exists. + + The file to check. + + if refers to an + existing file; otherwise, . + + + Execute a set of tasks, if file "output.xml" does not exist. + + + ... + + ]]> + + @@ -2900,9 +2900,9 @@ The caller does not have path discovery permission. - - Functions that provide version information for a physical file on disk. - + + Functions that provide version information for a physical file on disk. + @@ -2954,14 +2954,14 @@ - - Checks whether the specified framework exists, and is valid. - - The framework to test. - - if the specified framework exists ; otherwise, - . - + + Checks whether the specified framework exists, and is valid. + + The framework to test. + + if the specified framework exists ; otherwise, + . + @@ -2976,20 +2976,20 @@ - - Gets the identifier of the current target framework. - - - The identifier of the current target framework. - + + Gets the identifier of the current target framework. + + + The identifier of the current target framework. + - - Gets the identifier of the runtime framework. - - - The identifier of the runtime framework. - + + Gets the identifier of the runtime framework. + + + The identifier of the runtime framework. + @@ -3257,58 +3257,58 @@ - - Rounds the value to the nearest whole number - - Number to be rounded, can be anything convertible to a double. - - Rounded value. - + + Rounds the value to the nearest whole number + + Number to be rounded, can be anything convertible to a double. + + Rounded value. + - - Returns the largest whole number less than or equal to the specified - number. - - value to be , can be anything convertible to a double - - The largest whole number less than or equal to the specified number. - + + Returns the largest whole number less than or equal to the specified + number. + + value to be , can be anything convertible to a double + + The largest whole number less than or equal to the specified number. + - - Returns the smallest whole number greater than or equal to the specified number - - value - - The smallest whole number greater than or equal to the specified number. - + + Returns the smallest whole number greater than or equal to the specified number + + value + + The smallest whole number greater than or equal to the specified number. + - - Returns the absolute value of the specified number - - value to take the absolute value from - - when is greater - than or equal to zero; otherwise, -. - + + Returns the absolute value of the specified number + + value to take the absolute value from + + when is greater + than or equal to zero; otherwise, -. + - - Gets the base directory of the appdomain in which NAnt is running. - - - The base directory of the appdomain in which NAnt is running. - + + Gets the base directory of the appdomain in which NAnt is running. + + + The base directory of the appdomain in which NAnt is running. + - - Gets the NAnt assembly. - - - The NAnt assembly. - + + Gets the NAnt assembly. + + + The NAnt assembly. + @@ -3440,34 +3440,34 @@ - - Gets the base directory of the current project. - - - The base directory of the current project. - + + Gets the base directory of the current project. + + + The base directory of the current project. + - - Checks whether the specified target exists. - - The target to test. - - if the specified target exists; otherwise, - . - - - - Execute target "clean", if it exists. - - - - - - ]]> - - + + Checks whether the specified target exists. + + The target to test. + + if the specified target exists; otherwise, + . + + + + Execute target "clean", if it exists. + + + + + + ]]> + + @@ -3491,14 +3491,14 @@ Target does not exist. - - Checks whether the specified task exists. - - The task to test. - - if the specified task exists; otherwise, - . - + + Checks whether the specified task exists. + + The task to test. + + if the specified task exists; otherwise, + . + @@ -3512,29 +3512,29 @@ Task is not available. - - Checks whether the specified property exists. - - The property to test. - - if the specified property exists; otherwise, - . - - - - Execute a set of tasks if the "build.debug" property - exists. - - - - - - - - ]]> - - + + Checks whether the specified property exists. + + The property to test. + + if the specified property exists; otherwise, + . + + + + Execute a set of tasks if the "build.debug" property + exists. + + + + + + + + ]]> + + @@ -3569,45 +3569,45 @@ - - Gets the name of the platform on which NAnt is running. - - - The name of the platform on which NAnt is running. - + + Gets the name of the platform on which NAnt is running. + + + The name of the platform on which NAnt is running. + - - Checks whether NAnt is running on Windows (and not just 32-bit Windows - as the name may lead you to believe). - - - if NAnt is running on Windows; - otherwise, . - + + Checks whether NAnt is running on Windows (and not just 32-bit Windows + as the name may lead you to believe). + + + if NAnt is running on Windows; + otherwise, . + - - Checks whether NAnt is running on Windows. - - - if NAnt is running on Windows; - otherwise, . - + + Checks whether NAnt is running on Windows. + + + if NAnt is running on Windows; + otherwise, . + - - Checks whether NAnt is running on Unix. - - - if NAnt is running on Unix; - otherwise, . - + + Checks whether NAnt is running on Unix. + + + if NAnt is running on Unix; + otherwise, . + - - Functions that return information about an operating system. - + + Functions that return information about an operating system. + @@ -3952,26 +3952,26 @@ - - Factory method to return a new instance of ExecTask - - - + + Factory method to return a new instance of ExecTask + + + - - Returns the length of the specified string. - - input string - - The string's length. - - - string::get-length('foo') ==> 3 - - - string::get-length('') ==> 0 - + + Returns the length of the specified string. + + input string + + The string's length. + + + string::get-length('foo') ==> 3 + + + string::get-length('') ==> 0 + @@ -4015,108 +4015,108 @@ - - Tests whether the specified string starts with the specified prefix - string. - - test string - prefix string - - when is a prefix for - the string . Meaning, the characters at the - beginning of are identical to - ; otherwise, . - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::starts-with('testing string', 'test') ==> true - - - string::starts-with('testing string', 'testing') ==> true - - - string::starts-with('testing string', 'string') ==> false - - - string::starts-with('test', 'testing string') ==> false - + + Tests whether the specified string starts with the specified prefix + string. + + test string + prefix string + + when is a prefix for + the string . Meaning, the characters at the + beginning of are identical to + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::starts-with('testing string', 'test') ==> true + + + string::starts-with('testing string', 'testing') ==> true + + + string::starts-with('testing string', 'string') ==> false + + + string::starts-with('test', 'testing string') ==> false + - - Tests whether the specified string ends with the specified suffix - string. - - test string - suffix string - - when is a suffix for - the string . Meaning, the characters at the - end of are identical to - ; otherwise, . - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::ends-with('testing string', 'string') ==> true - - - string::ends-with('testing string', '') ==> true - - - string::ends-with('testing string', 'bring') ==> false - - - string::ends-with('string', 'testing string') ==> false - + + Tests whether the specified string ends with the specified suffix + string. + + test string + suffix string + + when is a suffix for + the string . Meaning, the characters at the + end of are identical to + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::ends-with('testing string', 'string') ==> true + + + string::ends-with('testing string', '') ==> true + + + string::ends-with('testing string', 'bring') ==> false + + + string::ends-with('string', 'testing string') ==> false + - - Returns the specified string converted to lowercase. - - input string - - The string in lowercase. - - - The casing rules of the invariant culture are used to convert the - to lowercase. - - - string::to-lower('testing string') ==> 'testing string' - - - string::to-lower('Testing String') ==> 'testing string' - - - string::to-lower('Test 123') ==> 'test 123' - + + Returns the specified string converted to lowercase. + + input string + + The string in lowercase. + + + The casing rules of the invariant culture are used to convert the + to lowercase. + + + string::to-lower('testing string') ==> 'testing string' + + + string::to-lower('Testing String') ==> 'testing string' + + + string::to-lower('Test 123') ==> 'test 123' + - - Returns the specified string converted to uppercase. - - input string - - The string in uppercase. - - - The casing rules of the invariant culture are used to convert the - to uppercase. - - - string::to-upper('testing string') ==> 'TESTING STRING' - - - string::to-upper('Testing String') ==> 'TESTING STRING' - - - string::to-upper('Test 123') ==> 'TEST 123' - + + Returns the specified string converted to uppercase. + + input string + + The string in uppercase. + + + The casing rules of the invariant culture are used to convert the + to uppercase. + + + string::to-upper('testing string') ==> 'TESTING STRING' + + + string::to-upper('Testing String') ==> 'TESTING STRING' + + + string::to-upper('Test 123') ==> 'TEST 123' + @@ -4150,101 +4150,101 @@ - - Tests whether the specified string contains the given search string. - - The string to search. - The string to locate within . - - if is found in - ; otherwise, . - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::contains('testing string', 'test') ==> true - - - string::contains('testing string', '') ==> true - - - string::contains('testing string', 'Test') ==> false - - - string::contains('testing string', 'foo') ==> false - + + Tests whether the specified string contains the given search string. + + The string to search. + The string to locate within . + + if is found in + ; otherwise, . + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::contains('testing string', 'test') ==> true + + + string::contains('testing string', '') ==> true + + + string::contains('testing string', 'Test') ==> false + + + string::contains('testing string', 'foo') ==> false + - - Returns the position of the first occurrence in the specified string - of the given search string. - - The string to search. - The string to locate within . - - - The lowest-index position of in - if it is found, or -1 if - does not contain . - - - If is an empty string, the return value - will always be 0. - - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::index-of('testing string', 'test') ==> 0 - - - string::index-of('testing string', '') ==> 0 - - - string::index-of('testing string', 'Test') ==> -1 - - - string::index-of('testing string', 'ing') ==> 4 - + + Returns the position of the first occurrence in the specified string + of the given search string. + + The string to search. + The string to locate within . + + + The lowest-index position of in + if it is found, or -1 if + does not contain . + + + If is an empty string, the return value + will always be 0. + + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::index-of('testing string', 'test') ==> 0 + + + string::index-of('testing string', '') ==> 0 + + + string::index-of('testing string', 'Test') ==> -1 + + + string::index-of('testing string', 'ing') ==> 4 + - - Returns the position of the last occurrence in the specified string - of the given search string. - - The string to search. - The string to locate within . - - - The highest-index position of in - if it is found, or -1 if - does not contain . - - - If is an empty string, the return value - is the last index position in . - - - - This function performs a case-sensitive word search using the - invariant culture. - - - string::last-index-of('testing string', 'test') ==> 0 - - - string::last-index-of('testing string', '') ==> 13 - - - string::last-index-of('testing string', 'Test') ==> -1 - - - string::last-index-of('testing string', 'ing') ==> 11 - + + Returns the position of the last occurrence in the specified string + of the given search string. + + The string to search. + The string to locate within . + + + The highest-index position of in + if it is found, or -1 if + does not contain . + + + If is an empty string, the return value + is the last index position in . + + + + This function performs a case-sensitive word search using the + invariant culture. + + + string::last-index-of('testing string', 'test') ==> 0 + + + string::last-index-of('testing string', '') ==> 13 + + + string::last-index-of('testing string', 'Test') ==> -1 + + + string::last-index-of('testing string', 'ing') ==> 11 + @@ -4311,52 +4311,52 @@ - - Returns the given string trimmed of whitespace. - - input string - - The string with any leading or trailing - white space characters removed. - - - string::trim(' test ') ==> 'test' - - - string::trim('\t\tfoo \r\n') ==> 'foo' - + + Returns the given string trimmed of whitespace. + + input string + + The string with any leading or trailing + white space characters removed. + + + string::trim(' test ') ==> 'test' + + + string::trim('\t\tfoo \r\n') ==> 'foo' + - - Returns the given string trimmed of leading whitespace. - - input string - - The string with any leading - whites pace characters removed. - - - string::trim-start(' test ') ==> 'test ' - - - string::trim-start('\t\tfoo \r\n') ==> 'foo \r\n' - + + Returns the given string trimmed of leading whitespace. + + input string + + The string with any leading + whites pace characters removed. + + + string::trim-start(' test ') ==> 'test ' + + + string::trim-start('\t\tfoo \r\n') ==> 'foo \r\n' + - - Returns the given string trimmed of trailing whitespace. - - input string - - The string with any trailing - white space characters removed. - - - string::trim-end(' test ') ==> ' test' - - - string::trim-end('\t\tfoo \r\n') ==> '\t\tfoo' - + + Returns the given string trimmed of trailing whitespace. + + input string + + The string with any trailing + white space characters removed. + + + string::trim-end(' test ') ==> ' test' + + + string::trim-end('\t\tfoo \r\n') ==> '\t\tfoo' + @@ -4703,17 +4703,17 @@ - - Provides the abstract base class for tasks. - - - A task is a piece of code that can be executed. - + + Provides the abstract base class for tasks. + + + A task is a piece of code that can be executed. + - - Executes the task unless it is skipped. - + + Executes the task unless it is skipped. + @@ -4785,61 +4785,61 @@ - - Initializes the configuration of the task using configuration - settings retrieved from the NAnt configuration file. - - - TO-DO : Remove this temporary hack when a permanent solution is - available for loading the default values from the configuration - file if a build element is constructed from code. - + + Initializes the configuration of the task using configuration + settings retrieved from the NAnt configuration file. + + + TO-DO : Remove this temporary hack when a permanent solution is + available for loading the default values from the configuration + file if a build element is constructed from code. + - Initializes the task. + Initializes the task. - Initializes the task. + Initializes the task. - Executes the task. + Executes the task. - - Locates the XML node for the specified attribute in either the - configuration section of the extension assembly or the.project. - - The name of attribute for which the XML configuration node should be located. - The framework to use to obtain framework specific information, or if no framework specific information should be used. - - The XML configuration node for the specified attribute, or - if no corresponding XML node could be - located. - - - If there's a valid current framework, the configuration section for - that framework will first be searched. If no corresponding - configuration node can be located in that section, the framework-neutral - section of the project configuration node will be searched. - + + Locates the XML node for the specified attribute in either the + configuration section of the extension assembly or the.project. + + The name of attribute for which the XML configuration node should be located. + The framework to use to obtain framework specific information, or if no framework specific information should be used. + + The XML configuration node for the specified attribute, or + if no corresponding XML node could be + located. + + + If there's a valid current framework, the configuration section for + that framework will first be searched. If no corresponding + configuration node can be located in that section, the framework-neutral + section of the project configuration node will be searched. + - - Determines if task failure stops the build, or is just reported. - The default is . - + + Determines if task failure stops the build, or is just reported. + The default is . + - - Determines whether the task should report detailed build log messages. - The default is . - + + Determines whether the task should report detailed build log messages. + The default is . + - - If then the task will be executed; otherwise, - skipped. The default is . - + + If then the task will be executed; otherwise, + skipped. The default is . + @@ -4849,14 +4849,14 @@ - - The name of the task. - + + The name of the task. + - - The prefix used when sending messages to the log. - + + The prefix used when sending messages to the log. + @@ -4880,42 +4880,42 @@ - - The name of the file which will have its attributes set. This is - provided as an alternate to using the task's fileset. - + + The name of the file which will have its attributes set. This is + provided as an alternate to using the task's fileset. + - - All the matching files and directories in this fileset will have - their attributes set. - + + All the matching files and directories in this fileset will have + their attributes set. + - - Set the archive attribute. The default is . - + + Set the archive attribute. The default is . + - - Set the hidden attribute. The default is . - - + + Set the hidden attribute. The default is . + + - - Set the normal file attributes. This attribute is only valid if used - alone. The default is . - + + Set the normal file attributes. This attribute is only valid if used + alone. The default is . + - - Set the read-only attribute. The default is . - + + Set the read-only attribute. The default is . + - - Set the system attribute. The default is . - + + Set the system attribute. The default is . + @@ -5064,44 +5064,44 @@ - - The resource which must be available. - + + The resource which must be available. + - - The type of resource which must be present. - + + The type of resource which must be present. + - - The property that must be set if the resource is available. - + + The property that must be set if the resource is available. + - - Defines the possible resource checks. - + + Defines the possible resource checks. + - - Determines whether a given file exists. - + + Determines whether a given file exists. + - - Determines whether a given directory exists. - + + Determines whether a given directory exists. + - - Determines whether a given framework is available. - + + Determines whether a given framework is available. + - - Determines whether a given SDK is available. - + + Determines whether a given SDK is available. + @@ -5221,9 +5221,9 @@ - - Executes the specified target. - + + Executes the specified target. + @@ -5232,21 +5232,21 @@ - - NAnt target to call. - + + NAnt target to call. + - - Force an execute even if the target has already been executed. The - default is . - + + Force an execute even if the target has already been executed. The + default is . + - - Execute the specified targets dependencies -- even if they have been - previously executed. The default is . - + + Execute the specified targets dependencies -- even if they have been + previously executed. The default is . + @@ -5354,9 +5354,9 @@ - - Checks whether the task is initialized with valid attributes. - + + Checks whether the task is initialized with valid attributes. + @@ -5365,30 +5365,30 @@ A file that has to be copied does not exist or could not be copied. - - Actually does the file copies. - + + Actually does the file copies. + - - The file to copy. - + + The file to copy. + - - The file to copy to. - + + The file to copy to. + - - The directory to copy to. - + + The directory to copy to. + - - Overwrite existing files even if the destination files are newer. - The default is . - + + Overwrite existing files even if the destination files are newer. + The default is . + @@ -5410,21 +5410,21 @@ - - Chain of filters used to alter the file's content as it is copied. - + + Chain of filters used to alter the file's content as it is copied. + - - The encoding to use when reading files. The default is the system's - current ANSI code page. - + + The encoding to use when reading files. The default is the system's + current ANSI code page. + - - The encoding to use when writing the files. The default is - the encoding of the input file. - + + The encoding to use when writing the files. The default is + the encoding of the input file. + @@ -5444,9 +5444,9 @@ - - Holds the absolute paths and last write time of a given file. - + + Holds the absolute paths and last write time of a given file. + @@ -5457,20 +5457,20 @@ The last write time of the file. - - Gets the absolute path of the current file. - - - The absolute path of the current file. - + + Gets the absolute path of the current file. + + + The absolute path of the current file. + - - Gets the time when the current file was last written to. - - - The time when the current file was last written to. - + + Gets the time when the current file was last written to. + + + The time when the current file was last written to. + @@ -5532,19 +5532,19 @@ - - Ensures the supplied attributes are valid. - + + Ensures the supplied attributes are valid. + - - The file to delete. - + + The file to delete. + - - The directory to delete. - + + The directory to delete. + @@ -5553,28 +5553,28 @@ - - All the files in the file set will be deleted. - + + All the files in the file set will be deleted. + - - Controls whether to show the name of each deleted file or directory. - The default is . - + + Controls whether to show the name of each deleted file or directory. + The default is . + - - An empty task that allows a build file to contain a description. - - - Set a description. - - This is a description. - ]]> - - + + An empty task that allows a build file to contain a description. + + + Set a description. + + This is a description. + ]]> + + @@ -5663,33 +5663,33 @@ - - Outputs the message to the build log or the specified file. - + + Outputs the message to the build log or the specified file. + - - The encoding to use when writing message to a file. The default is - UTF-8 encoding without a Byte Order Mark (BOM). - + + The encoding to use when writing message to a file. The default is + UTF-8 encoding without a Byte Order Mark (BOM). + - - The message to output. - + + The message to output. + - - Gets or sets the inline content that should be output. - - - The inline content that should be output. - + + Gets or sets the inline content that should be output. + + + The inline content that should be output. + - - The file to write the message to. - + + The file to write the message to. + @@ -5791,9 +5791,9 @@ - - Will be used to ensure thread-safe operations. - + + Will be used to ensure thread-safe operations. + @@ -5819,14 +5819,14 @@ The that was started. - - Reads from the stream until the external program is ended. - + + Reads from the stream until the external program is ended. + - - Reads from the stream until the external program is ended. - + + Reads from the stream until the external program is ended. + @@ -5838,53 +5838,53 @@ The task is not available or not configured for the current framework. - - The name of the executable that should be used to launch the - external program. - - - The name of the executable that should be used to launch the external - program, or if no name is specified. - - - If available, the configured value in the NAnt configuration - file will be used if no name is specified. - + + The name of the executable that should be used to launch the + external program. + + + The name of the executable that should be used to launch the external + program, or if no name is specified. + + + If available, the configured value in the NAnt configuration + file will be used if no name is specified. + - - Gets the filename of the external program to start. - - - The filename of the external program. - - - Override in derived classes to explicitly set the location of the - external tool. - + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Gets the file to which the standard output should be redirected. - - - The file to which the standard output should be redirected, or - if the standard output should not be - redirected. - - - The default implementation will never allow the standard output - to be redirected to a file. Deriving classes should override this - property to change this behaviour. - + + Gets the file to which the standard output should be redirected. + + + The file to which the standard output should be redirected, or + if the standard output should not be + redirected. + + + The default implementation will never allow the standard output + to be redirected to a file. Deriving classes should override this + property to change this behaviour. + @@ -5897,23 +5897,23 @@ - - Gets the working directory for the application. - - - The working directory for the application. - + + Gets the working directory for the application. + + + The working directory for the application. + - - The maximum amount of time the application is allowed to execute, - expressed in milliseconds. Defaults to no time-out. - + + The maximum amount of time the application is allowed to execute, + expressed in milliseconds. Defaults to no time-out. + - - The command-line arguments for the external program. - + + The command-line arguments for the external program. + @@ -5992,31 +5992,31 @@ - - Gets the value that the process specified when it terminated. - - - The code that the associated process specified when it terminated, - or -1000 if the process could not be started or did not - exit (in time). - + + Gets the value that the process specified when it terminated. + + + The code that the associated process specified when it terminated, + or -1000 if the process could not be started or did not + exit (in time). + - - Gets the unique identifier for the spawned application. - + + Gets the unique identifier for the spawned application. + - - Gets or sets a value indicating whether the application should be - spawned. If you spawn an application, its output will not be logged - by NAnt. The default is . - + + Gets or sets a value indicating whether the application should be + spawned. If you spawn an application, its output will not be logged + by NAnt. The default is . + - - Gets the command-line arguments, separated by spaces. - + + Gets the command-line arguments, separated by spaces. + @@ -6025,18 +6025,18 @@ does not hold a valid file name. - - Executes the external program. - + + Executes the external program. + - - The program to execute without command arguments. - - - The path will not be evaluated to a full path using the project - base directory. - + + The program to execute without command arguments. + + + The path will not be evaluated to a full path using the project + base directory. + @@ -6047,24 +6047,24 @@ - - Environment variables to pass to the program. - + + Environment variables to pass to the program. + - - The directory in which the command will be executed. - - - The directory in which the command will be executed. The default - is the project's base directory. - - - - The working directory will be evaluated relative to the project's - base directory if it is relative. - - + + The directory in which the command will be executed. + + + The directory in which the command will be executed. The default + is the project's base directory. + + + + The working directory will be evaluated relative to the project's + base directory if it is relative. + + @@ -6080,64 +6080,64 @@ - - Specifies whether the external program should be executed using a - runtime engine, if configured. The default is . - - - if the external program should be executed - using a runtime engine; otherwise, . - + + Specifies whether the external program should be executed using a + runtime engine, if configured. The default is . + + + if the external program should be executed + using a runtime engine; otherwise, . + - - Specifies whether the external program is a managed application - which should be executed using a runtime engine, if configured. - The default is . - - - if the external program should be executed - using a runtime engine; otherwise, . - + + Specifies whether the external program is a managed application + which should be executed using a runtime engine, if configured. + The default is . + + + if the external program should be executed + using a runtime engine; otherwise, . + - - Gets the filename of the external program to start. - - - The filename of the external program. - + + Gets the filename of the external program to start. + + + The filename of the external program. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - The directory the program is in. - - - - The directory the program is in. The default is the project's base - directory. - - - The basedir will be evaluated relative to the project's base - directory if it is relative. - - + + The directory the program is in. + + + + The directory the program is in. The default is the project's base + directory. + + + The basedir will be evaluated relative to the project's base + directory if it is relative. + + - - The file to which the standard output will be redirected. - - - By default, the standard output is redirected to the console. - + + The file to which the standard output will be redirected. + + + By default, the standard output is redirected to the console. + @@ -6150,11 +6150,11 @@ - - Gets or sets a value indicating whether the application should be - spawned. If you spawn an application, its output will not be logged - by NAnt. The default is . - + + Gets or sets a value indicating whether the application should be + spawned. If you spawn an application, its output will not be logged + by NAnt. The default is . + @@ -6275,69 +6275,69 @@ - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Sets the timestamp of a given file to a specified time. - + + Sets the timestamp of a given file to a specified time. + - - The URL from which to retrieve a file. - + + The URL from which to retrieve a file. + - - The file where to store the retrieved file. - + + The file where to store the retrieved file. + - - If inside a firewall, proxy server/port information - Format: {proxy server name}:{port number} - Example: proxy.mycompany.com:8080 - + + If inside a firewall, proxy server/port information + Format: {proxy server name}:{port number} + Example: proxy.mycompany.com:8080 + - - The network proxy to use to access the Internet resource. - + + The network proxy to use to access the Internet resource. + - - The network credentials used for authenticating the request with - the Internet resource. - + + The network credentials used for authenticating the request with + the Internet resource. + - - Log errors but don't treat as fatal. The default is . - + + Log errors but don't treat as fatal. The default is . + - - Conditionally download a file based on the timestamp of the local - copy. HTTP only. The default is . - + + Conditionally download a file based on the timestamp of the local + copy. HTTP only. The default is . + - - The length of time, in milliseconds, until the request times out. - The default is 100000 milliseconds. - + + The length of time, in milliseconds, until the request times out. + The default is 100000 milliseconds. + - - The security certificates to associate with the request. - + + The security certificates to associate with the request. + @@ -6491,16 +6491,16 @@ - - Executes embedded tasks in the order in which they are defined. - + + Executes embedded tasks in the order in which they are defined. + - - Automatically exclude build elements that are defined on the task - from things that get executed, as they are evaluated normally during - XML task initialization. - + + Automatically exclude build elements that are defined on the task + from things that get executed, as they are evaluated normally during + XML task initialization. + @@ -6523,14 +6523,14 @@ - - The file to compare if uptodate. - + + The file to compare if uptodate. + - - The file to check against for the uptodate file. - + + The file to check against for the uptodate file. + @@ -6545,188 +6545,188 @@ - - Used to test whether a property is true. - + + Used to test whether a property is true. + - - Used to test whether a property exists. - + + Used to test whether a property exists. + - - Used to test whether a target exists. - + + Used to test whether a target exists. + - - Used to test arbitrary boolean expression. - + + Used to test arbitrary boolean expression. + - - The opposite of the if task. - - - Check that a property does not exist. - - - - - ]]> - - Check that a property value is not true. - - - - - ]]> - - - - Check that a target does not exist. - - - - - ]]> - - + + The opposite of the if task. + + + Check that a property does not exist. + + + + + ]]> + + Check that a property value is not true. + + + + + ]]> + + + + Check that a target does not exist. + + + + + ]]> + + - - Includes an external build file. - - - - This task is used to break your build file into smaller chunks. You - can load a partial build file and have it included into the build file. - - - Any global (project level) tasks in the included build file are executed - when this task is executed. Tasks in target elements are only executed - if that target is executed. - - - The project element attributes are ignored. - - - This task can only be in the global (project level) section of the - build file. - - - This task can only include files from the file system. - - - - - Include a task that fetches the project version from the - GetProjectVersion.include build file. - - - - ]]> - - - - - - Used to check for recursived includes. - - - - - Verifies parameters. - - - - - Build file to include. - - - - - Load a text file into a single property. - - - - Unless an encoding is specified, the encoding associated with the - system's current ANSI code page is used. - - - An UTF-8, little-endian Unicode, and big-endian Unicode encoded text - file is automatically recognized, if the file starts with the appropriate - byte order marks. - - - - - Load file message.txt into property "message". - - - - ]]> - - - - - Load a file using the "latin-1" encoding. - - - - ]]> - - - - - Load a file, replacing all @NOW@ tokens with the current - date/time. - - - - - - - - - - ]]> - - - - - - The file to load. - + + Includes an external build file. + + + + This task is used to break your build file into smaller chunks. You + can load a partial build file and have it included into the build file. + + + Any global (project level) tasks in the included build file are executed + when this task is executed. Tasks in target elements are only executed + if that target is executed. + + + The project element attributes are ignored. + + + This task can only be in the global (project level) section of the + build file. + + + This task can only include files from the file system. + + + + + Include a task that fetches the project version from the + GetProjectVersion.include build file. + + + + ]]> + + + + + + Used to check for recursived includes. + + + + + Verifies parameters. + + + + + Build file to include. + + + + + Load a text file into a single property. + + + + Unless an encoding is specified, the encoding associated with the + system's current ANSI code page is used. + + + An UTF-8, little-endian Unicode, and big-endian Unicode encoded text + file is automatically recognized, if the file starts with the appropriate + byte order marks. + + + + + Load file message.txt into property "message". + + + + ]]> + + + + + Load a file using the "latin-1" encoding. + + + + ]]> + + + + + Load a file, replacing all @NOW@ tokens with the current + date/time. + + + + + + + + + + ]]> + + + + + + The file to load. + - - The name of the property to save the content to. - + + The name of the property to save the content to. + - - The encoding to use when loading the file. The default is the encoding - associated with the system's current ANSI code page. - + + The encoding to use when loading the file. The default is the encoding + associated with the system's current ANSI code page. + - - The filterchain definition to use. - + + The filterchain definition to use. + @@ -6783,128 +6783,128 @@ Both and are set. - - An assembly to load tasks from. - + + An assembly to load tasks from. + - - A directory to scan for task assemblies. - + + A directory to scan for task assemblies. + - - Used to select which directories or individual assemblies to scan. - + + Used to select which directories or individual assemblies to scan. + - - Loops over a set of items. - - - - Can loop over files in directory, lines in a file, etc. - - - The property value is stored before the loop is done, and restored - when the loop is finished. - - - The property is returned to its normal value once it is used. Read-only - parameters cannot be overridden in this loop. - - - - Loops over the files in c:\. - - - - - ]]> - - - - Loops over all files in the project directory. - - - - - - - - - - - - ]]> - - - - Loops over the folders in c:\. - - - - - ]]> - - - - Loops over all folders in the project directory. - - - - - - - - - - - - ]]> - - - - Loops over a list. - - - - - ]]> - - - - - Loops over lines in the file properties.csv, where each line - is of the format name,value. - - - - - - ]]> - - + + Loops over a set of items. + + + + Can loop over files in directory, lines in a file, etc. + + + The property value is stored before the loop is done, and restored + when the loop is finished. + + + The property is returned to its normal value once it is used. Read-only + parameters cannot be overridden in this loop. + + + + Loops over the files in c:\. + + + + + ]]> + + + + Loops over all files in the project directory. + + + + + + + + + + + + ]]> + + + + Loops over the folders in c:\. + + + + + ]]> + + + + Loops over all folders in the project directory. + + + + + + + + + + + + ]]> + + + + Loops over a list. + + + + + ]]> + + + + + Loops over lines in the file properties.csv, where each line + is of the format name,value. + + + + + + ]]> + + - - The NAnt property name(s) that should be used for the current - iterated item. - - - If specifying multiple properties, separate them with a comma. - + + The NAnt property name(s) that should be used for the current + iterated item. + + + If specifying multiple properties, separate them with a comma. + - - The type of iteration that should be done. - + + The type of iteration that should be done. + @@ -6913,14 +6913,14 @@ - - The source of the iteration. - + + The source of the iteration. + - - The deliminator char. - + + The deliminator char. + @@ -6934,126 +6934,126 @@ - - Tasks to execute for each matching item. - + + Tasks to execute for each matching item. + - - Do not remove any white space characters. - + + Do not remove any white space characters. + - - Remove all white space characters from the end of the current - item. - + + Remove all white space characters from the end of the current + item. + - - Remove all white space characters from the beginning of the - current item. - + + Remove all white space characters from the beginning of the + current item. + - - Remove all white space characters from the beginning and end of - the current item. - + + Remove all white space characters from the beginning and end of + the current item. + - - Sends an SMTP message. - - - - Text and text files to include in the message body may be specified as - well as binary attachments. - - - - - Sends an email from nant@sourceforge.net to three recipients - with a subject about the attachments. The body of the message will be - the combined contents of all .txt files in the base directory. - All zip files in the base directory will be included as attachments. - The message will be sent using the smtpserver.anywhere.com SMTP - server. - - - - - - - - - - - ]]> - - + + Sends an SMTP message. + + + + Text and text files to include in the message body may be specified as + well as binary attachments. + + + + + Sends an email from nant@sourceforge.net to three recipients + with a subject about the attachments. The body of the message will be + the combined contents of all .txt files in the base directory. + All zip files in the base directory will be included as attachments. + The message will be sent using the smtpserver.anywhere.com SMTP + server. + + + + + + + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done. - + + This is where the work is done. + - - Reads a text file and returns the content - in a string. - - The file to read content of. - - The content of the specified file. - + + Reads a text file and returns the content + in a string. + + The file to read content of. + + The content of the specified file. + - - Email address of sender. - + + Email address of sender. + - - Semicolon-separated list of recipient email addresses. - + + Semicolon-separated list of recipient email addresses. + - - Semicolon-separated list of CC: recipient email addresses. - + + Semicolon-separated list of CC: recipient email addresses. + - - Semicolon-separated list of BCC: recipient email addresses. - + + Semicolon-separated list of BCC: recipient email addresses. + - - Host name of mail server. The default is localhost. - + + Host name of mail server. The default is localhost. + - - Text to send in body of email message. - + + Text to send in body of email message. + - - Text to send in subject line of email message. - + + Text to send in subject line of email message. + @@ -7061,35 +7061,35 @@ - - Files that are transmitted as part of the body of the email message. - + + Files that are transmitted as part of the body of the email message. + - - Attachments that are transmitted with the message. - + + Attachments that are transmitted with the message. + - - Creates a directory and any non-existent parent directory if necessary. - - - Create the directory build. - - - ]]> - - - - Create the directory tree one/two/three. - - - ]]> - - + + Creates a directory and any non-existent parent directory if necessary. + + + Create the directory build. + + + ]]> + + + + Create the directory tree one/two/three. + + + ]]> + + @@ -7098,9 +7098,9 @@ The directory could not be created. - - The directory to create. - + + The directory to create. + @@ -7195,24 +7195,24 @@ - - Actually does the file moves. - + + Actually does the file moves. + - - The file to move. - + + The file to move. + - - The file to move to. - + + The file to move to. + - - The directory to move to. - + + The directory to move to. + @@ -7228,38 +7228,38 @@ - - Chain of filters used to alter the file's content as it is moved. - + + Chain of filters used to alter the file's content as it is moved. + - - Creates an XSD File for all available tasks. - - - - This can be used in conjuntion with the command-line option to do XSD - Schema validation on the build file. - - - - Creates a NAnt.xsd file in the current project directory. - - - ]]> - - + + Creates an XSD File for all available tasks. + + + + This can be used in conjuntion with the command-line option to do XSD + Schema validation on the build file. + + + + Creates a NAnt.xsd file in the current project directory. + + + ]]> + + - - Creates a NAnt Schema for given types - - The output stream to save the schema to. If , writing is ignored, no exception generated. - The list of tasks to generate XML Schema for. - The list of datatypes to generate XML Schema for. - The target namespace to output. - The new NAnt Schema. + + Creates a NAnt Schema for given types + + The output stream to save the schema to. If , writing is ignored, no exception generated. + The list of tasks to generate XML Schema for. + The list of datatypes to generate XML Schema for. + The target namespace to output. + The new NAnt Schema. @@ -7278,14 +7278,14 @@ The new instance. - - The name of the output file to which the XSD should be written. - + + The name of the output file to which the XSD should be written. + - - The target namespace for the output. Defaults to "http://tempuri.org/nant-donotuse.xsd" - + + The target namespace for the output. Defaults to "http://tempuri.org/nant-donotuse.xsd" + @@ -7378,133 +7378,133 @@ - - The build file to build. - + + The build file to build. + - - The target to execute. To specify more than one target seperate - targets with a space. Targets are executed in order if possible. - The default is to use target specified in the project's default - attribute. - + + The target to execute. To specify more than one target seperate + targets with a space. Targets are executed in order if possible. + The default is to use target specified in the project's default + attribute. + - - Used to specify a set of build files to process. - + + Used to specify a set of build files to process. + - - Specifies whether current property values should be inherited by - the executed project. The default is . - + + Specifies whether current property values should be inherited by + the executed project. The default is . + - - Specifies whether all references will be copied to the new project. - The default is . - + + Specifies whether all references will be copied to the new project. + The default is . + - - Specifies a collection of properties that should be created in the - executed project. Note, existing properties with identical names - that are not read-only will be overwritten. - + + Specifies a collection of properties that should be created in the + executed project. Note, existing properties with identical names + that are not read-only will be overwritten. + - - Sets a property in the current project. - - - NAnt uses a number of predefined properties. - - - - Define a debug property with value . - - - - ]]> - - - - - Use the user-defined debug property. - - - - ]]> - - - - - Define a read-only property. This is just like passing in the param - on the command line. - - - - ]]> - - - - - Define a property, but do not overwrite the value if the property already exists (eg. it was specified on the command line). - - - - - - - ]]> - - - Executing this build file with the command line option -D:debug=false, - would cause the value specified on the command line to remain unaltered. - - - - - + + Sets a property in the current project. + + + NAnt uses a number of predefined properties. + + + + Define a debug property with value . + + + + ]]> + + + + + Use the user-defined debug property. + + + + ]]> + + + + + Define a read-only property. This is just like passing in the param + on the command line. + + + + ]]> + + + + + Define a property, but do not overwrite the value if the property already exists (eg. it was specified on the command line). + + + + + + + ]]> + + + Executing this build file with the command line option -D:debug=false, + would cause the value specified on the command line to remain unaltered. + + + + + - - The name of the NAnt property to set. - + + The name of the NAnt property to set. + - - The value to assign to the NAnt property. - + + The value to assign to the NAnt property. + - - Specifies whether the property is read-only or not. - The default is . - + + Specifies whether the property is read-only or not. + The default is . + - - Specifies whether references to other properties should not be - expanded when the value of the property is set, but expanded when - the property is actually used. By default, properties will be - expanded when set. - + + Specifies whether references to other properties should not be + expanded when the value of the property is set, but expanded when + the property is actually used. By default, properties will be + expanded when set. + - - Specifies whether the value of a property should be overwritten if - the property already exists (unless the property is read-only). - The default is . - + + Specifies whether the value of a property should be overwritten if + the property already exists (unless the property is read-only). + The default is . + @@ -7565,21 +7565,21 @@ - - Executes the task. - + + Executes the task. + - - Represents the regular expression to be evalued. - - - The regular expression to be evalued. - - - The pattern must contain one or more named constructs, which may - not contain any punctuation and cannot begin with a number. - + + Represents the regular expression to be evalued. + + + The regular expression to be evalued. + + + The pattern must contain one or more named constructs, which may + not contain any punctuation and cannot begin with a number. + @@ -7588,12 +7588,12 @@ - - Represents the input for the regular expression. - - - The input for the regular expression. - + + Represents the input for the regular expression. + + + The input for the regular expression. + @@ -7659,218 +7659,218 @@ - - Win32 DllImport for the SetEnvironmentVariable function. - - - - + + Win32 DllImport for the SetEnvironmentVariable function. + + + + - - *nix dllimport for the setenv function. - - - - - - 0 if the execution is successful; otherwise, -1. - + + *nix dllimport for the setenv function. + + + + + + 0 if the execution is successful; otherwise, -1. + - - Deletes all instances of the variable name. - - The variable to unset. - - 0 if the execution is successful; otherwise, -1. - + + Deletes all instances of the variable name. + + The variable to unset. + + 0 if the execution is successful; otherwise, -1. + - - Checks whether the task is initialized with valid attributes. - + + Checks whether the task is initialized with valid attributes. + - - Set the environment variables - + + Set the environment variables + - - Do the actual work here. - - The name of the environment variable. - The value of the environment variable. + + Do the actual work here. + + The name of the environment variable. + The value of the environment variable. - - The name of a single Environment variable to set - + + The name of a single Environment variable to set + - - The literal value for the environment variable. - + + The literal value for the environment variable. + - - The value for a file-based environment variable. NAnt will convert - it to an absolute filename. - + + The value for a file-based environment variable. NAnt will convert + it to an absolute filename. + - - The value for a directory-based environment variable. NAnt will - convert it to an absolute path. - + + The value for a directory-based environment variable. NAnt will + convert it to an absolute path. + - - The value for a PATH like environment variable. You can use - : or ; as path separators and NAnt will convert it to - the platform's local conventions. - + + The value for a PATH like environment variable. You can use + : or ; as path separators and NAnt will convert it to + the platform's local conventions. + - - A task for sleeping a specified period of time, useful when a build or deployment process - requires an interval between tasks. - - - Sleep 1 hour, 2 minutes, 3 seconds and 4 milliseconds. - - - ]]> - - - - Sleep 123 milliseconds. - - - ]]> - - + + A task for sleeping a specified period of time, useful when a build or deployment process + requires an interval between tasks. + + + Sleep 1 hour, 2 minutes, 3 seconds and 4 milliseconds. + + + ]]> + + + + Sleep 123 milliseconds. + + + ]]> + + - - Verify parameters. - + + Verify parameters. + - - Return time to sleep. - + + Return time to sleep. + - - Sleeps for the specified number of milliseconds. - - Number of milliseconds to sleep. + + Sleeps for the specified number of milliseconds. + + Number of milliseconds to sleep. - - Hours to add to the sleep time. - + + Hours to add to the sleep time. + - - Minutes to add to the sleep time. - + + Minutes to add to the sleep time. + - - Seconds to add to the sleep time. - + + Seconds to add to the sleep time. + - - Milliseconds to add to the sleep time. - + + Milliseconds to add to the sleep time. + - - Processes a document via XSLT. - - - Create a report in HTML. - - - ]]> - - - - Create a report in HTML, with a param. - - - - - - - ]]> - - - - Create a report in HTML, with a expanded param. - - - - - - - ]]> - - - - Create some code based on a directory of templates. - - - - - - - - - - ]]> - - + + Processes a document via XSLT. + + + Create a report in HTML. + + + ]]> + + + + Create a report in HTML, with a param. + + + + + + + ]]> + + + + Create a report in HTML, with a expanded param. + + + + + + + ]]> + + + + Create some code based on a directory of templates. + + + + + + + + + + ]]> + + - - Directory in which to store the results. The default is the project - base directory. - + + Directory in which to store the results. The default is the project + base directory. + - - Desired file extension to be used for the targets. The default is - html. - + + Desired file extension to be used for the targets. The default is + html. + - - URI or path that points to the stylesheet to use. If given as path, it can - be relative to the project's basedir or absolute. - + + URI or path that points to the stylesheet to use. If given as path, it can + be relative to the project's basedir or absolute. + @@ -7885,24 +7885,24 @@ - - Specifies a group of input files to which to apply the stylesheet. - + + Specifies a group of input files to which to apply the stylesheet. + - - XSLT parameters to be passed to the XSLT transformation. - + + XSLT parameters to be passed to the XSLT transformation. + - - XSLT extension objects to be passed to the XSLT transformation. - + + XSLT extension objects to be passed to the XSLT transformation. + - - The network proxy to use to access the Internet resource. - + + The network proxy to use to access the Internet resource. + @@ -8026,70 +8026,70 @@ - - The string to prefix the property names with. The default is "sys.". - + + The string to prefix the property names with. The default is "sys.". + - - Touches a file or set of files -- corresponds to the Unix touch command. - - - - If the file specified does not exist, the task will create it. - - - - Touch the Main.cs file. The current time is used. - - - ]]> - - - - - Touch all executable files in the project base directory and its - subdirectories. - - - - - - - - - ]]> - - + + Touches a file or set of files -- corresponds to the Unix touch command. + + + + If the file specified does not exist, the task will create it. + + + + Touch the Main.cs file. The current time is used. + + + ]]> + + + + + Touch all executable files in the project base directory and its + subdirectories. + + + + + + + + + ]]> + + - - Ensures the supplied attributes are valid. - + + Ensures the supplied attributes are valid. + - - The file to touch. - + + The file to touch. + - - Specifies the new modification time of the file(s) in milliseconds - since midnight Jan 1 1970. - + + Specifies the new modification time of the file(s) in milliseconds + since midnight Jan 1 1970. + - - Specifies the new modification time of the file in the format - MM/DD/YYYY HH:MM:SS. - + + Specifies the new modification time of the file in the format + MM/DD/YYYY HH:MM:SS. + - - Used to select files that should be touched. - + + Used to select files that should be touched. + @@ -8141,77 +8141,77 @@ - - The property to receive the date/time string in the given pattern. - + + The property to receive the date/time string in the given pattern. + - The date/time pattern to be used. - - The following table lists the standard format characters for each standard pattern. The format characters are case-sensitive; for example, 'g' and 'G' represent slightly different patterns. - - - Format Character - Description Example Format Pattern (en-US) - - dMM/dd/yyyy - Ddddd, dd MMMM yyyy - fdddd, dd MMMM yyyy HH:mm - Fdddd, dd MMMM yyyy HH:mm:ss - gMM/dd/yyyy HH:mm - GMM/dd/yyyy HH:mm:ss - m, MMMMM dd - r, Rddd, dd MMM yyyy HH':'mm':'ss 'GMT' - syyyy'-'MM'-'dd'T'HH':'mm':'ss - tHH:mm - THH:mm:ss - uyyyy'-'MM'-'dd HH':'mm':'ss'Z' - Udddd, dd MMMM yyyy HH:mm:ss - y, Yyyyy MMMM - - The following table lists the patterns that can be combined to construct custom patterns. The patterns are case-sensitive; for example, "MM" is recognized, but "mm" is not. If the custom pattern contains white-space characters or characters enclosed in single quotation marks, the output string will also contain those characters. Characters not defined as part of a format pattern or as format characters are reproduced literally. - - - Format - Pattern Description - - dThe day of the month. Single-digit days will not have a leading zero. - ddThe day of the month. Single-digit days will have a leading zero. - dddThe abbreviated name of the day of the week. - ddddThe full name of the day of the week. - MThe numeric month. Single-digit months will not have a leading zero. - MMThe numeric month. Single-digit months will have a leading zero. - MMMThe abbreviated name of the month. - MMMMThe full name of the month. - yThe year without the century. If the year without the century is less than 10, the year is displayed with no leading zero. - yyThe year without the century. If the year without the century is less than 10, the year is displayed with a leading zero. - yyyyThe year in four digits, including the century. - ggThe period or era. This pattern is ignored if the date to be formatted does not have an associated period or era string. - hThe hour in a 12-hour clock. Single-digit hours will not have a leading zero. - hhThe hour in a 12-hour clock. Single-digit hours will have a leading zero. - HThe hour in a 24-hour clock. Single-digit hours will not have a leading zero. - HHThe hour in a 24-hour clock. Single-digit hours will have a leading zero. - mThe minute. Single-digit minutes will not have a leading zero. - mmThe minute. Single-digit minutes will have a leading zero. - sThe second. Single-digit seconds will not have a leading zero. - ssThe second. Single-digit seconds will have a leading zero. - fThe fraction of a second in single-digit precision. The remaining digits are truncated. - ffThe fraction of a second in double-digit precision. The remaining digits are truncated. - fffThe fraction of a second in three-digit precision. The remaining digits are truncated. - ffffThe fraction of a second in four-digit precision. The remaining digits are truncated. - fffffThe fraction of a second in five-digit precision. The remaining digits are truncated. - ffffffThe fraction of a second in six-digit precision. The remaining digits are truncated. - fffffffThe fraction of a second in seven-digit precision. The remaining digits are truncated. - tThe first character in the AM/PM designator. - ttThe AM/PM designator. - zThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will not have a leading zero. For example, Pacific Standard Time is "-8". - zzThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will have a leading zero. For example, Pacific Standard Time is "-08". - zzzThe full time zone offset ("+" or "-" followed by the hour and minutes). Single-digit hours and minutes will have leading zeros. For example, Pacific Standard Time is "-08:00". - :The default time separator. - /The default date separator. - \ cPattern Where c is any character. Displays the character literally. To display the backslash character, use "\\". - - + The date/time pattern to be used. + + The following table lists the standard format characters for each standard pattern. The format characters are case-sensitive; for example, 'g' and 'G' represent slightly different patterns. + + + Format Character + Description Example Format Pattern (en-US) + + dMM/dd/yyyy + Ddddd, dd MMMM yyyy + fdddd, dd MMMM yyyy HH:mm + Fdddd, dd MMMM yyyy HH:mm:ss + gMM/dd/yyyy HH:mm + GMM/dd/yyyy HH:mm:ss + m, MMMMM dd + r, Rddd, dd MMM yyyy HH':'mm':'ss 'GMT' + syyyy'-'MM'-'dd'T'HH':'mm':'ss + tHH:mm + THH:mm:ss + uyyyy'-'MM'-'dd HH':'mm':'ss'Z' + Udddd, dd MMMM yyyy HH:mm:ss + y, Yyyyy MMMM + + The following table lists the patterns that can be combined to construct custom patterns. The patterns are case-sensitive; for example, "MM" is recognized, but "mm" is not. If the custom pattern contains white-space characters or characters enclosed in single quotation marks, the output string will also contain those characters. Characters not defined as part of a format pattern or as format characters are reproduced literally. + + + Format + Pattern Description + + dThe day of the month. Single-digit days will not have a leading zero. + ddThe day of the month. Single-digit days will have a leading zero. + dddThe abbreviated name of the day of the week. + ddddThe full name of the day of the week. + MThe numeric month. Single-digit months will not have a leading zero. + MMThe numeric month. Single-digit months will have a leading zero. + MMMThe abbreviated name of the month. + MMMMThe full name of the month. + yThe year without the century. If the year without the century is less than 10, the year is displayed with no leading zero. + yyThe year without the century. If the year without the century is less than 10, the year is displayed with a leading zero. + yyyyThe year in four digits, including the century. + ggThe period or era. This pattern is ignored if the date to be formatted does not have an associated period or era string. + hThe hour in a 12-hour clock. Single-digit hours will not have a leading zero. + hhThe hour in a 12-hour clock. Single-digit hours will have a leading zero. + HThe hour in a 24-hour clock. Single-digit hours will not have a leading zero. + HHThe hour in a 24-hour clock. Single-digit hours will have a leading zero. + mThe minute. Single-digit minutes will not have a leading zero. + mmThe minute. Single-digit minutes will have a leading zero. + sThe second. Single-digit seconds will not have a leading zero. + ssThe second. Single-digit seconds will have a leading zero. + fThe fraction of a second in single-digit precision. The remaining digits are truncated. + ffThe fraction of a second in double-digit precision. The remaining digits are truncated. + fffThe fraction of a second in three-digit precision. The remaining digits are truncated. + ffffThe fraction of a second in four-digit precision. The remaining digits are truncated. + fffffThe fraction of a second in five-digit precision. The remaining digits are truncated. + ffffffThe fraction of a second in six-digit precision. The remaining digits are truncated. + fffffffThe fraction of a second in seven-digit precision. The remaining digits are truncated. + tThe first character in the AM/PM designator. + ttThe AM/PM designator. + zThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will not have a leading zero. For example, Pacific Standard Time is "-8". + zzThe time zone offset ("+" or "-" followed by the hour only). Single-digit hours will have a leading zero. For example, Pacific Standard Time is "-08". + zzzThe full time zone offset ("+" or "-" followed by the hour and minutes). Single-digit hours and minutes will have leading zeros. For example, Pacific Standard Time is "-08:00". + :The default time separator. + /The default date separator. + \ cPattern Where c is any character. Displays the character literally. To display the backslash character, use "\\". + + @@ -8241,10 +8241,10 @@ - - Property that will be set to or depending on the - result of the date check. - + + Property that will be set to or depending on the + result of the date check. + @@ -8257,55 +8257,55 @@ - - Extracts text from an XML file at the location specified by an XPath - expression. - - - - If the XPath expression specifies multiple nodes the node index is used - to determine which of the nodes' text is returned. - - - - - The example provided assumes that the following XML file (App.config) - exists in the current build directory. - - - - - - - - - ]]> - - - - - The example will read the server value from the above - configuration file. - - - - - - - - ]]> - - + + Extracts text from an XML file at the location specified by an XPath + expression. + + + + If the XPath expression specifies multiple nodes the node index is used + to determine which of the nodes' text is returned. + + + + + The example provided assumes that the following XML file (App.config) + exists in the current build directory. + + + + + + + + + ]]> + + + + + The example will read the server value from the above + configuration file. + + + + + + + + ]]> + + - - Executes the XML peek task. - + + Executes the XML peek task. + @@ -8318,126 +8318,126 @@ - - Gets the contents of the node specified by the XPath expression. - - The XPath expression used to determine which nodes to choose from. - The XML document to select the nodes from. - The node index in the case where multiple nodes satisfy the expression. - - The contents of the node specified by the XPath expression. - + + Gets the contents of the node specified by the XPath expression. + + The XPath expression used to determine which nodes to choose from. + The XML document to select the nodes from. + The node index in the case where multiple nodes satisfy the expression. + + The contents of the node specified by the XPath expression. + - - The name of the file that contains the XML document - that is going to be peeked at. - + + The name of the file that contains the XML document + that is going to be peeked at. + - - The index of the node that gets its text returned when the query - returns multiple nodes. - + + The index of the node that gets its text returned when the query + returns multiple nodes. + - - The property that receives the text representation of the XML inside - the node returned from the XPath expression. - + + The property that receives the text representation of the XML inside + the node returned from the XPath expression. + - - The XPath expression used to select which node to read. - + + The XPath expression used to select which node to read. + - - Namespace definitions to resolve prefixes in the XPath expression. - + + Namespace definitions to resolve prefixes in the XPath expression. + - - Replaces text in an XML file at the location specified by an XPath - expression. - - - - The location specified by the XPath expression must exist, it will - not create the parent elements for you. However, provided you have - a root element you could use a series of the tasks to build the - XML file up if necessary. - - - - - Change the server setting in the configuration from testhost.somecompany.com - to productionhost.somecompany.com. - - XML file: - - - - - - - - ]]> - - Build fragment: - - - ]]> - - - - - Modify the noNamespaceSchemaLocation in an XML file. - - XML file: - - - - - ]]> - - Build fragment: - - - - - - - ]]> - - + + Replaces text in an XML file at the location specified by an XPath + expression. + + + + The location specified by the XPath expression must exist, it will + not create the parent elements for you. However, provided you have + a root element you could use a series of the tasks to build the + XML file up if necessary. + + + + + Change the server setting in the configuration from testhost.somecompany.com + to productionhost.somecompany.com. + + XML file: + + + + + + + + ]]> + + Build fragment: + + + ]]> + + + + + Modify the noNamespaceSchemaLocation in an XML file. + + XML file: + + + + + ]]> + + Build fragment: + + + + + + + ]]> + + - - Executes the XML poke task. - + + Executes the XML poke task. + - - Loads an XML document from a file on disk. - - - The file name of the file to load the XML document from. - - - Value for XmlDocument.PreserveWhitespace that is set before the xml is loaded. - - - An containing - the document object model representing the file. - + + Loads an XML document from a file on disk. + + + The file name of the file to load the XML document from. + + + Value for XmlDocument.PreserveWhitespace that is set before the xml is loaded. + + + An containing + the document object model representing the file. + @@ -8460,48 +8460,48 @@ - - Given a node list, replaces the XML within those nodes. - - - The list of nodes to replace the contents of. - - - The text to replace the contents with. - + + Given a node list, replaces the XML within those nodes. + + + The list of nodes to replace the contents of. + + + The text to replace the contents with. + - - Saves the XML document to a file. - - The XML document to be saved. - The file name to save the XML document under. + + Saves the XML document to a file. + + The XML document to be saved. + The file name to save the XML document under. - - The name of the file that contains the XML document that is going - to be poked. - + + The name of the file that contains the XML document that is going + to be poked. + - - The XPath expression used to select which nodes are to be modified. - + + The XPath expression used to select which nodes are to be modified. + - - The value that replaces the contents of the selected nodes. - + + The value that replaces the contents of the selected nodes. + - - Namespace definitions to resolve prefixes in the XPath expression. - + + Namespace definitions to resolve prefixes in the XPath expression. + - - Namespace definitions to resolve prefixes in the XPath expression. - + + Namespace definitions to resolve prefixes in the XPath expression. + @@ -8581,76 +8581,76 @@ - - Quotes a command line argument if it contains a single quote or a - space. - - The command line argument. - - A quoted command line argument if - contains a single quote or a space; otherwise, - . - + + Quotes a command line argument if it contains a single quote or a + space. + + The command line argument. + + A quoted command line argument if + contains a single quote or a space; otherwise, + . + - - A single command-line argument; can contain space characters. - + + A single command-line argument; can contain space characters. + - - The name of a file as a single command-line argument; will be - replaced with the absolute filename of the file. - + + The name of a file as a single command-line argument; will be + replaced with the absolute filename of the file. + - - The value for a directory-based command-line argument; will be - replaced with the absolute path of the directory. - + + The value for a directory-based command-line argument; will be + replaced with the absolute path of the directory. + - - The value for a PATH-like command-line argument; you can use - : or ; as path separators and NAnt will convert it - to the platform's local conventions, while resolving references to - environment variables. - - - Individual parts will be replaced with the absolute path, resolved - relative to the project base directory. - + + The value for a PATH-like command-line argument; you can use + : or ; as path separators and NAnt will convert it + to the platform's local conventions, while resolving references to + environment variables. + + + Individual parts will be replaced with the absolute path, resolved + relative to the project base directory. + - - Sets a single command-line argument and treats it like a PATH - ensures - the right separator for the local platform is used. - + + Sets a single command-line argument and treats it like a PATH - ensures + the right separator for the local platform is used. + - - List of command-line arguments; will be passed to the executable - as is. - + + List of command-line arguments; will be passed to the executable + as is. + - - Indicates if the argument should be passed to the external program. - If then the argument will be passed; - otherwise, skipped. The default is . - + + Indicates if the argument should be passed to the external program. + If then the argument will be passed; + otherwise, skipped. The default is . + - - Indicates if the argument should not be passed to the external - program. If then the argument will be - passed; otherwise, skipped. The default is . - + + Indicates if the argument should not be passed to the external + program. If then the argument will be + passed; otherwise, skipped. The default is . + - - Gets string value corresponding with the argument. - + + Gets string value corresponding with the argument. + @@ -8716,11 +8716,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -8753,10 +8753,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -8777,33 +8777,33 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Provides credentials for password-based authentication schemes. - + + Provides credentials for password-based authentication schemes. + @@ -8823,35 +8823,35 @@ - - The domain or computer name that verifies the credentials. - + + The domain or computer name that verifies the credentials. + - - The password for the user name associated with the credentials. - + + The password for the user name associated with the credentials. + - - The user name associated with the credentials. - + + The user name associated with the credentials. + - - Indicates if the credentials should be used to provide authentication - information to the external resource. If then - the credentials will be passed; otherwise, not. The default is - . - + + Indicates if the credentials should be used to provide authentication + information to the external resource. If then + the credentials will be passed; otherwise, not. The default is + . + - - Indicates if the credentials should not be used to provide authentication - information to the external resource. If then the - credentials will be passed; otherwise, not. The default is - . - + + Indicates if the credentials should not be used to provide authentication + information to the external resource. If then the + credentials will be passed; otherwise, not. The default is + . + @@ -9065,10 +9065,10 @@ - - copy constructor - - + + copy constructor + + @@ -9079,9 +9079,9 @@ - - Adds a nested set of patterns, or references a standalone patternset. - + + Adds a nested set of patterns, or references a standalone patternset. + @@ -9090,37 +9090,37 @@ - - Determines if a file has a more recent last write time than the - given time, or no longer exists. - - A file to check the last write time against. - The datetime to compare against. - - The name of the file that has a last write time greater than - or that no longer exists; - otherwise, . - + + Determines if a file has a more recent last write time than the + given time, or no longer exists. + + A file to check the last write time against. + The datetime to compare against. + + The name of the file that has a last write time greater than + or that no longer exists; + otherwise, . + - - Determines if one of the given files has a more recent last write - time than the given time. If one of the given files no longer exists, - the target will be considered out-of-date. - - A collection of filenames to check the last write time against. - The datetime to compare against. - - The name of the first file that has a last write time greater than - ; otherwise, null. - + + Determines if one of the given files has a more recent last write + time than the given time. If one of the given files no longer exists, + the target will be considered out-of-date. + + A collection of filenames to check the last write time against. + The datetime to compare against. + + The name of the first file that has a last write time greater than + ; otherwise, null. + - - Indicates whether include and exclude patterns must be treated in a - case-sensitive way. The default is on Unix; - otherwise, . - + + Indicates whether include and exclude patterns must be treated in a + case-sensitive way. The default is on Unix; + otherwise, . + @@ -9130,26 +9130,26 @@ - - Indicates whether default excludes should be used or not. - The default is . - + + Indicates whether default excludes should be used or not. + The default is . + - - The base of the directory of this fileset. The default is the project - base directory. - + + The base of the directory of this fileset. The default is the project + base directory. + - - Gets the collection of include patterns. - + + Gets the collection of include patterns. + - - Gets the collection of exclude patterns. - + + Gets the collection of exclude patterns. + @@ -9177,51 +9177,51 @@ - - Gets the collection of directory names that were scanned for files. - - - A collection that contains the directory names that were scanned for - files. - + + Gets the collection of directory names that were scanned for files. + + + A collection that contains the directory names that were scanned for + files. + - - The items to include in the fileset. - + + The items to include in the fileset. + - - The items to include in the fileset. - + + The items to include in the fileset. + - - The items to exclude from the fileset. - + + The items to exclude from the fileset. + - - The items to exclude from the fileset. - + + The items to exclude from the fileset. + - - The files from which a list of patterns or files to include should - be obtained. - + + The files from which a list of patterns or files to include should + be obtained. + - - The files from which a list of patterns or files to include should - be obtained. - + + The files from which a list of patterns or files to include should + be obtained. + - - The files from which a list of patterns or files to exclude should - be obtained. - + + The files from which a list of patterns or files to exclude should + be obtained. + @@ -9232,15 +9232,15 @@ - - The pattern or file name to exclude. - + + The pattern or file name to exclude. + - - If then the pattern will be excluded; - otherwise, skipped. The default is . - + + If then the pattern will be excluded; + otherwise, skipped. The default is . + @@ -9257,21 +9257,21 @@ - - If then the file will be searched for - on the path. The default is . - + + If then the file will be searched for + on the path. The default is . + - - The pattern or file name to include. - + + The pattern or file name to include. + - - If then the pattern will be included; - otherwise, skipped. The default is . - + + If then the pattern will be included; + otherwise, skipped. The default is . + @@ -9286,10 +9286,10 @@ - - If then the patterns will be excluded; - otherwise, skipped. The default is . - + + If then the patterns will be excluded; + otherwise, skipped. The default is . + @@ -9299,10 +9299,10 @@ - - The name of a file; each line of this file is taken to be a - pattern. - + + The name of a file; each line of this file is taken to be a + pattern. + @@ -9313,16 +9313,16 @@ - - If then the patterns in the include file - will be searched for on the path. The default is . - + + If then the patterns in the include file + will be searched for on the path. The default is . + - - If then the patterns will be included; - otherwise, skipped. The default is . - + + If then the patterns will be included; + otherwise, skipped. The default is . + @@ -9345,9 +9345,9 @@ A instance to create a from. - - Represents an environment variable. - + + Represents an environment variable. + @@ -9363,75 +9363,75 @@ - - The name of the environment variable. - + + The name of the environment variable. + - - The literal value for the environment variable. - + + The literal value for the environment variable. + - - The value for a file-based environment variable. NAnt will convert - it to an absolute filename. - + + The value for a file-based environment variable. NAnt will convert + it to an absolute filename. + - - The value for a directory-based environment variable. NAnt will - convert it to an absolute path. - + + The value for a directory-based environment variable. NAnt will + convert it to an absolute path. + - - The value for a PATH like environment variable. You can use - : or ; as path separators and NAnt will convert it to - the platform's local conventions. - + + The value for a PATH like environment variable. You can use + : or ; as path separators and NAnt will convert it to + the platform's local conventions. + - - Sets a single environment variable and treats it like a PATH - - ensures the right separator for the local platform is used. - + + Sets a single environment variable and treats it like a PATH - + ensures the right separator for the local platform is used. + - - Gets the value of the environment variable. - + + Gets the value of the environment variable. + - - Indicates if the environment variable should be passed to the - external program. If then the environment - variable will be passed; otherwise, skipped. The default is - . - + + Indicates if the environment variable should be passed to the + external program. If then the environment + variable will be passed; otherwise, skipped. The default is + . + - - Indicates if the environment variable should not be passed to the - external program. If then the environment - variable will be passed; otherwise, skipped. The default is - . - + + Indicates if the environment variable should not be passed to the + external program. If then the environment + variable will be passed; otherwise, skipped. The default is + . + - - A set of environment variables. - + + A set of environment variables. + - - Environment variable to pass to a program. - + + Environment variable to pass to a program. + - - Environment variable to pass to a program. - + + Environment variable to pass to a program. + @@ -9497,11 +9497,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -9534,10 +9534,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -9558,52 +9558,52 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - The name of the NAnt property to set. - + + The name of the NAnt property to set. + - - The string pattern to use to format the property. - + + The string pattern to use to format the property. + - - Indicates if the formatter should be used to format the timestamp. - If then the formatter will be used; - otherwise, skipped. The default is . - + + Indicates if the formatter should be used to format the timestamp. + If then the formatter will be used; + otherwise, skipped. The default is . + - - Indicates if the formatter should be not used to format the - timestamp. If then the formatter will be - used; otherwise, skipped. The default is . - + + Indicates if the formatter should be not used to format the + timestamp. If then the formatter will be + used; otherwise, skipped. The default is . + @@ -9657,11 +9657,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -9694,10 +9694,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -9712,28 +9712,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -9769,21 +9769,21 @@ - - Do not threat the program as a managed application. - + + Do not threat the program as a managed application. + - - Leave it up to the CLR to determine which specific version of - the CLR will be used to run the application. - + + Leave it up to the CLR to determine which specific version of + the CLR will be used to run the application. + - - Forces an application to run against the currently targeted - version of a given CLR. - + + Forces an application to run against the currently targeted + version of a given CLR. + @@ -9812,45 +9812,45 @@ - - Represents an option. - + + Represents an option. + - - name, value constructor - - - + + name, value constructor + + + - - Default constructor - + + Default constructor + - - Name of the option. - + + Name of the option. + - - Value of the option. The default is . - + + Value of the option. The default is . + - - Indicates if the option should be passed to the task. - If then the option will be passed; - otherwise, skipped. The default is . - + + Indicates if the option should be passed to the task. + If then the option will be passed; + otherwise, skipped. The default is . + - - Indicates if the option should not be passed to the task. - If then the option will be passed; - otherwise, skipped. The default is . - + + Indicates if the option should not be passed to the task. + If then the option will be passed; + otherwise, skipped. The default is . + @@ -9915,11 +9915,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -9952,10 +9952,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -9976,59 +9976,59 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Represents a nested path element. - + + Represents a nested path element. + - - The name of a file to add to the path. Will be replaced with - the absolute path of the file. - + + The name of a file to add to the path. Will be replaced with + the absolute path of the file. + - - The name of a directory to add to the path. Will be replaced with - the absolute path of the directory. - + + The name of a directory to add to the path. Will be replaced with + the absolute path of the directory. + - - A string that will be treated as a path-like string. You can use - : or ; as path separators and NAnt will convert it - to the platform's local conventions, while resolving references - to environment variables. - + + A string that will be treated as a path-like string. You can use + : or ; as path separators and NAnt will convert it + to the platform's local conventions, while resolving references + to environment variables. + - - If then the entry will be added to the - path; otherwise, skipped. The default is . - + + If then the entry will be added to the + path; otherwise, skipped. The default is . + @@ -10047,27 +10047,27 @@ - - - Paths are groups of files and/or directories that need to be passed as a single - unit. The order in which parts of the path are specified in the build file is - retained, and duplicate parts are automatically suppressed. - - - - - Define a global <path> that can be referenced by other - tasks or types. - - - - - - - ]]> - - + + + Paths are groups of files and/or directories that need to be passed as a single + unit. The order in which parts of the path are specified in the build file is + retained, and duplicate parts are automatically suppressed. + + + + + Define a global <path> that can be referenced by other + tasks or types. + + + + + + + ]]> + + @@ -10083,13 +10083,13 @@ The string representing a path. - - Returns a textual representation of the path, which can be used as - PATH environment variable definition. - - - A textual representation of the path. - + + Returns a textual representation of the path, which can be used as + PATH environment variable definition. + + + A textual representation of the path. + @@ -10104,12 +10104,12 @@ The to add. - - Returns all path elements defined by this path object. - - - A list of path elements. - + + Returns all path elements defined by this path object. + + + A list of path elements. + @@ -10129,21 +10129,21 @@ - - The name pattern to include/exclude. - + + The name pattern to include/exclude. + - - If then the pattern will be used; - otherwise, skipped. The default is . - + + If then the pattern will be used; + otherwise, skipped. The default is . + - - If then the pattern will be used; - otherwise, skipped. The default is . - + + If then the pattern will be used; + otherwise, skipped. The default is . + @@ -10190,12 +10190,12 @@ - - Copies the entire collection to a compatible one-dimensional array, - starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, + starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -10228,10 +10228,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -10246,36 +10246,36 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -10472,9 +10472,9 @@ The to add. - - Defines a single pattern for files to include. - + + Defines a single pattern for files to include. + @@ -10483,9 +10483,9 @@ - - Defines a single pattern for files to exclude. - + + Defines a single pattern for files to exclude. + @@ -10494,10 +10494,10 @@ - - Contains HTTP proxy settings used to process requests to Internet - resources. - + + Contains HTTP proxy settings used to process requests to Internet + resources. + @@ -10516,9 +10516,9 @@ - - The name of the proxy host. - + + The name of the proxy host. + @@ -10526,40 +10526,40 @@ - - Specifies whether to bypass the proxy server for local addresses. - The default is . - + + Specifies whether to bypass the proxy server for local addresses. + The default is . + - - The credentials to submit to the proxy server for authentication. - + + The credentials to submit to the proxy server for authentication. + - - Indicates if the proxy should be used to connect to the external - resource. If then the proxy will be used; - otherwise, not. The default is . - + + Indicates if the proxy should be used to connect to the external + resource. If then the proxy will be used; + otherwise, not. The default is . + - - Indicates if the proxy should not be used to connect to the external - resource. If then the proxy will be used; - otherwise, not. The default is . - + + Indicates if the proxy should not be used to connect to the external + resource. If then the proxy will be used; + otherwise, not. The default is . + - - Represents an element of which the XML is processed by its parent task - or type. - + + Represents an element of which the XML is processed by its parent task + or type. + - - Gets the XML that this element represents. - + + Gets the XML that this element represents. + @@ -10573,48 +10573,48 @@ - - ReplaceTokens filter token. - + + ReplaceTokens filter token. + - - Token to be replaced. - + + Token to be replaced. + - - New value of token. - + + New value of token. + - - Indicates if the token should be used to replace values. - If then the token will be used; - otherwise, not. The default is . - + + Indicates if the token should be used to replace values. + If then the token will be used; + otherwise, not. The default is . + - - Indicates if the token should not be used to replace values. - If then the token will be used; - otherwise, not. The default is . - + + Indicates if the token should not be used to replace values. + If then the token will be used; + otherwise, not. The default is . + - - Represents an XML namespace. - + + Represents an XML namespace. + - - The prefix to associate with the namespace. - + + The prefix to associate with the namespace. + - - The associated XML namespace URI. - + + The associated XML namespace URI. + @@ -10694,11 +10694,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -10731,10 +10731,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -10755,35 +10755,35 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Represents an XSLT extension object. The object should have a default - parameterless constructor and the return value should be one of the - four basic XPath data types of number, string, Boolean or node set. - + + Represents an XSLT extension object. The object should have a default + parameterless constructor and the return value should be one of the + four basic XPath data types of number, string, Boolean or node set. + @@ -10801,28 +10801,28 @@ - - The full type name of the XSLT extension object. - + + The full type name of the XSLT extension object. + - - The assembly which contains the XSLT extension object. - + + The assembly which contains the XSLT extension object. + - - Indicates if the extension object should be added to the XSLT argument - list. If then the extension object will be - added; otherwise, skipped. The default is . - + + Indicates if the extension object should be added to the XSLT argument + list. If then the extension object will be + added; otherwise, skipped. The default is . + - - Indicates if the extension object should not be added to the XSLT argument - list. If then the extension object will be - added; otherwise, skipped. The default is . - + + Indicates if the extension object should not be added to the XSLT argument + list. If then the extension object will be + added; otherwise, skipped. The default is . + @@ -10899,15 +10899,15 @@ - - Copies the entire collection to a compatible one-dimensional array, - starting at the specified index of the target array. - - The one-dimensional array that is the - destination of the elements copied from the collection. The array - must have zero-based indexing. - The zero-based index in - at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, + starting at the specified index of the target array. + + The one-dimensional array that is the + destination of the elements copied from the collection. The array + must have zero-based indexing. + The zero-based index in + at which copying begins. @@ -10949,11 +10949,11 @@ from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get - or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get + or set. @@ -10978,33 +10978,33 @@ enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Represents an XSLT parameter. - + + Represents an XSLT parameter. + @@ -11040,18 +11040,18 @@ - - Indicates if the parameter should be added to the XSLT argument list. - If then the parameter will be added; - otherwise, skipped. The default is . - + + Indicates if the parameter should be added to the XSLT argument list. + If then the parameter will be added; + otherwise, skipped. The default is . + - - Indicates if the parameter should not be added to the XSLT argument - list. If then the parameter will be - added; otherwise, skipped. The default is . - + + Indicates if the parameter should not be added to the XSLT argument + list. If then the parameter will be + added; otherwise, skipped. The default is . + @@ -11117,11 +11117,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -11154,10 +11154,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -11178,33 +11178,33 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Resolves assemblies by caching assemblies that were loaded. - + + Resolves assemblies by caching assemblies that were loaded. + @@ -11225,9 +11225,9 @@ - - Uninstalls the assembly resolver. - + + Uninstalls the assembly resolver. + @@ -11261,9 +11261,9 @@ - - Holds the loaded assemblies. - + + Holds the loaded assemblies. + @@ -11277,9 +11277,9 @@ - - Represents a valid command-line argument. - + + Represents a valid command-line argument. + @@ -11346,12 +11346,12 @@ - - Gets the property that backs the argument. - - - The property that backs the arguments. - + + Gets the property that backs the argument. + + + The property that backs the arguments. + @@ -11366,61 +11366,61 @@ - - Gets the long name of the argument. - - The long name of the argument. + + Gets the long name of the argument. + + The long name of the argument. - - Gets the short name of the argument. - - The short name of the argument. + + Gets the short name of the argument. + + The short name of the argument. - - Gets the description of the argument. - - The description of the argument. + + Gets the description of the argument. + + The description of the argument. - - Gets a value indicating whether the argument is required. - - - if the argument is required; otherwise, - . - + + Gets a value indicating whether the argument is required. + + + if the argument is required; otherwise, + . + - - Gets a value indicating whether a mathing command-line argument - was already found. - - - if a matching command-line argument was - already found; otherwise, . - + + Gets a value indicating whether a mathing command-line argument + was already found. + + + if a matching command-line argument was + already found; otherwise, . + - - Gets a value indicating whether the argument can be specified multiple - times. - - - if the argument may be specified multiple - times; otherwise, . - + + Gets a value indicating whether the argument can be specified multiple + times. + + + if the argument may be specified multiple + times; otherwise, . + - - Gets a value indicating whether the argument can only be specified once - with a certain value. - - - if the argument should always have a unique - value; otherwise, . - + + Gets a value indicating whether the argument can only be specified once + with a certain value. + + + if the argument should always have a unique + value; otherwise, . + @@ -11455,37 +11455,37 @@ - - Gets a value indicating whether the argument is array-based. - - - if the argument is backed by an array; - otherwise, . - + + Gets a value indicating whether the argument is array-based. + + + if the argument is backed by an array; + otherwise, . + - - Gets a value indicating whether the argument is the default argument. - - - if the argument is the default argument; - otherwise, . - + + Gets a value indicating whether the argument is the default argument. + + + if the argument is the default argument; + otherwise, . + - - Gets a value indicating whether the argument cannot be combined with - other arguments. - - - if the argument cannot be combined with other - arguments; otherwise, . - + + Gets a value indicating whether the argument cannot be combined with + other arguments. + + + if the argument cannot be combined with other + arguments; otherwise, . + - - Allows control of command line parsing. - + + Allows control of command line parsing. + @@ -11495,28 +11495,28 @@ Specifies the checking to be done on the argument. - - Gets or sets the checking to be done on the argument. - - The checking that should be done on the argument. + + Gets or sets the checking to be done on the argument. + + The checking that should be done on the argument. - - Gets or sets the long name of the argument. - - The long name of the argument. + + Gets or sets the long name of the argument. + + The long name of the argument. - - Gets or sets the short name of the argument. - - The short name of the argument. + + Gets or sets the short name of the argument. + + The short name of the argument. - - Gets or sets the description of the argument. - - The description of the argument. + + Gets or sets the description of the argument. + + The description of the argument. @@ -11570,11 +11570,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -11607,10 +11607,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -11631,34 +11631,34 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - The exception that is thrown when one of the command-line arguments provided - is not valid. - + + The exception that is thrown when one of the command-line arguments provided + is not valid. + @@ -11689,50 +11689,50 @@ The that contains contextual information about the source or destination. - - Used to control parsing of command-line arguments. - + + Used to control parsing of command-line arguments. + - - Indicates that this field is required. An error will be displayed - if it is not present when parsing arguments. - + + Indicates that this field is required. An error will be displayed + if it is not present when parsing arguments. + - - Only valid in conjunction with Multiple. - Duplicate values will result in an error. - + + Only valid in conjunction with Multiple. + Duplicate values will result in an error. + - - Inidicates that the argument may be specified more than once. - Only valid if the argument is a collection - + + Inidicates that the argument may be specified more than once. + Only valid if the argument is a collection + - - Inidicates that if this argument is specified, no other arguments may be specified. - + + Inidicates that if this argument is specified, no other arguments may be specified. + - - The default type for non-collection arguments. - The argument is not required, but an error will be reported if it is specified more than once. - + + The default type for non-collection arguments. + The argument is not required, but an error will be reported if it is specified more than once. + - - The default type for collection arguments. - The argument is permitted to occur multiple times, but duplicate - values will cause an error to be reported. - + + The default type for collection arguments. + The argument is permitted to occur multiple times, but duplicate + values will cause an error to be reported. + - - Commandline parser. - + + Commandline parser. + @@ -11753,27 +11753,27 @@ The of does not match the argument specification that was used to initialize the parser. - - Splits a string and removes any empty strings from the - result. Same functionality as the - public string[] Split(char[] separator, StringSplitOptions options) - method in .Net 2.0. Replace with that call when 2.0 is standard. - - - - the array of strings + + Splits a string and removes any empty strings from the + result. Same functionality as the + public string[] Split(char[] separator, StringSplitOptions options) + method in .Net 2.0. Replace with that call when 2.0 is standard. + + + + the array of strings - - Read a response file and parse the arguments as usual. - - The response file to load arguments + + Read a response file and parse the arguments as usual. + + The response file to load arguments - - Parse the argument list using the - - + + Parse the argument list using the + + @@ -11797,22 +11797,22 @@ - - Gets the usage instructions. - - The usage instructions. + + Gets the usage instructions. + + The usage instructions. - - Gets a value indicating whether no arguments were specified on the - command line. - + + Gets a value indicating whether no arguments were specified on the + command line. + - - Marks a command-line option as being the default option. When the name of - a command-line argument is not specified, this option will be assumed. - + + Marks a command-line option as being the default option. When the name of + a command-line argument is not specified, this option will be assumed. + @@ -11822,42 +11822,42 @@ Specifies the checking to be done on the argument. - - Provides modified version for Copy and Move from the File class that - allow for filter chain processing. - + + Provides modified version for Copy and Move from the File class that + allow for filter chain processing. + - - Copies a file filtering its content through the filter chain. - - The file to copy - The file to copy to - Chain of filters to apply when copying, or is no filters should be applied. - The encoding used to read the soure file. - The encoding used to write the destination file. + + Copies a file filtering its content through the filter chain. + + The file to copy + The file to copy to + Chain of filters to apply when copying, or is no filters should be applied. + The encoding used to read the soure file. + The encoding used to write the destination file. - - Moves a file filtering its content through the filter chain. - - The file to move. - The file to move move to. - Chain of filters to apply when moving, or is no filters should be applied. - The encoding used to read the soure file. - The encoding used to write the destination file. + + Moves a file filtering its content through the filter chain. + + The file to move. + The file to move move to. + Chain of filters to apply when moving, or is no filters should be applied. + The encoding used to read the soure file. + The encoding used to write the destination file. - - Reads a file filtering its content through the filter chain. - - The file to read. - Chain of filters to apply when reading, or is no filters should be applied. - The encoding used to read the file. - - If is , - then the system's ANSI code page will be used to read the file. - + + Reads a file filtering its content through the filter chain. + + The file to read. + Chain of filters to apply when reading, or is no filters should be applied. + The encoding used to read the file. + + If is , + then the system's ANSI code page will be used to read the file. + @@ -11899,33 +11899,33 @@ is . - - Returns the home directory of the current user. - - - The home directory of the current user. - + + Returns the home directory of the current user. + + + The home directory of the current user. + - - Scans a list of directories for the specified filename. - - The list of directories to search. - The name of the file to look for. - Specifies whether the directory should be searched recursively. - - The directories are scanned in the order in which they are defined. - - - The absolute path to the specified file, or null if the file was - not found. - + + Scans a list of directories for the specified filename. + + The list of directories to search. + The name of the file to look for. + Specifies whether the directory should be searched recursively. + + The directories are scanned in the order in which they are defined. + + + The absolute path to the specified file, or null if the file was + not found. + - - Helper class for determining whether assemblies are located in the - Global Assembly Cache. - + + Helper class for determining whether assemblies are located in the + Global Assembly Cache. + @@ -11985,9 +11985,9 @@ - - Holds a value indicating whether the object has been disposed. - + + Holds a value indicating whether the object has been disposed. + @@ -12010,21 +12010,21 @@ - - Determines whether an assembly is installed in the Global - Assembly Cache given its file name or path. - - The name or path of the file that contains the manifest of the assembly. - - if is - installed in the Global Assembly Cache; otherwise, - . - + + Determines whether an assembly is installed in the Global + Assembly Cache given its file name or path. + + The name or path of the file that contains the manifest of the assembly. + + if is + installed in the Global Assembly Cache; otherwise, + . + - - Provides a set of helper methods related to reflection. - + + Provides a set of helper methods related to reflection. + @@ -12056,10 +12056,10 @@ - - Provides resource support to NAnt assemblies. This class cannot - be inherited from. - + + Provides resource support to NAnt assemblies. This class cannot + be inherited from. + @@ -12068,142 +12068,142 @@ - - Registers the assembly to be used as the fallback if resources - aren't found in the local satellite assembly. - - - A that represents the - assembly to register. - - - The following example shows how to register a shared satellite - assembly. - - - - + + Registers the assembly to be used as the fallback if resources + aren't found in the local satellite assembly. + + + A that represents the + assembly to register. + + + The following example shows how to register a shared satellite + assembly. + + + + - - Returns the value of the specified string resource. - - - A that contains the name of the - resource to get. - - - A that contains the value of the - resource localized for the current culture. - - - The returned resource is localized for the cultural settings of the - current . - - The GetString method is thread-safe. - - - - The following example demonstrates the GetString method using - the cultural settings of the current . - - - - + + Returns the value of the specified string resource. + + + A that contains the name of the + resource to get. + + + A that contains the value of the + resource localized for the current culture. + + + The returned resource is localized for the cultural settings of the + current . + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + the cultural settings of the current . + + + + - - Returns the value of the specified string resource localized for - the specified culture. - - - - - A that contains the value of the - resource localized for the specified culture. - - - - The GetString method is thread-safe. - - - - The following example demonstrates the GetString method using - a specific culture. - - - - + + Returns the value of the specified string resource localized for + the specified culture. + + + + + A that contains the value of the + resource localized for the specified culture. + + + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + a specific culture. + + + + - - Returns the value of the specified string resource localized for - the specified culture for the specified assembly. - - - A that contains the name of the - resource to get. - - - A that represents - the culture for which the resource is localized. - - - A - - - A that contains the value of the - resource localized for the specified culture. - - - - The GetString method is thread-safe. - - - - The following example demonstrates the GetString method using - specific culture and assembly. - - - - + + Returns the value of the specified string resource localized for + the specified culture for the specified assembly. + + + A that contains the name of the + resource to get. + + + A that represents + the culture for which the resource is localized. + + + A + + + A that contains the value of the + resource localized for the specified culture. + + + + The GetString method is thread-safe. + + + + The following example demonstrates the GetString method using + specific culture and assembly. + + + + - - Registers the specified assembly. - - - A that represents the - assembly to register. - + + Registers the specified assembly. + + + A that represents the + assembly to register. + - - Determines the manifest resource name of the resource holding the - localized strings. - - The name of the assembly. - - The manifest resource name of the resource holding the localized - strings for the specified assembly. - - - The manifest resource name of the resource holding the localized - strings should match the name of the assembly, minus Tasks - suffix. - + + Determines the manifest resource name of the resource holding the + localized strings. + + The name of the assembly. + + The manifest resource name of the resource holding the localized + strings for the specified assembly. + + + The manifest resource name of the resource holding the localized + strings should match the name of the assembly, minus Tasks + suffix. + @@ -12244,24 +12244,24 @@ - - Converts an empty string ("") to . - - The value to convert. - - if is an empty - string ("") or ; otherwise, . - + + Converts an empty string ("") to . + + The value to convert. + + if is an empty + string ("") or ; otherwise, . + - - Converts to an empty string. - - The value to convert. - - An empty string if is ; - otherwise, . - + + Converts to an empty string. + + The value to convert. + + An empty string if is ; + otherwise, . + @@ -12298,14 +12298,14 @@ - - Thrown whenever an error occurs during the build. - + + Thrown whenever an error occurs during the build. + - - The location of the exception in the build document (xml file). - + + The location of the exception in the build document (xml file). + @@ -12362,155 +12362,155 @@ The destination for this serialization. - - Creates and returns a string representation of the current - exception. - - - A string representation of the current exception. - + + Creates and returns a string representation of the current + exception. + + + A string representation of the current exception. + - - Gets the raw message as specified when the exception was - constructed. - - - The raw message as specified when the exception was - constructed. - + + Gets the raw message as specified when the exception was + constructed. + + + The raw message as specified when the exception was + constructed. + - - Gets the location in the build file of the element from which the - exception originated. - - - The location in the build file of the element from which the - exception originated. - + + Gets the location in the build file of the element from which the + exception originated. + + + The location in the build file of the element from which the + exception originated. + - - Gets a message that describes the current exception. - - - The error message that explains the reason for the exception. - - - Adds location information to the message, if available. - + + Gets a message that describes the current exception. + + + The error message that explains the reason for the exception. + + + Adds location information to the message, if available. + - - Represents the set of command-line options supported by NAnt. - + + Represents the set of command-line options supported by NAnt. + - - Gets or sets the target framework to use (overrides - NAnt.exe.config settings) - - - The framework that should be used. - - - For a list of possible frameworks, see NAnt.exe.config, possible - values include "net-1.0", "net-1.1", etc. - + + Gets or sets the target framework to use (overrides + NAnt.exe.config settings) + + + The framework that should be used. + + + For a list of possible frameworks, see NAnt.exe.config, possible + values include "net-1.0", "net-1.1", etc. + - - Gets or sets the target framework to use (overrides - NAnt.exe.config settings) - - - The framework that should be used. - - - For a list of possible frameworks, see NAnt.exe.config, possible - values include "net-1.0", "net-1.1", etc. - + + Gets or sets the target framework to use (overrides + NAnt.exe.config settings) + + + The framework that should be used. + + + For a list of possible frameworks, see NAnt.exe.config, possible + values include "net-1.0", "net-1.1", etc. + - - Gets or sets the buildfile that should be executed. - - - The buildfile that should be executed. - - - Can be both a file or an URI. - + + Gets or sets the buildfile that should be executed. + + + The buildfile that should be executed. + + + Can be both a file or an URI. + - - Gets or sets a value indicating whether more information should be - displayed during the build process. - - - if more information should be displayed; - otherwise, . The default is . - + + Gets or sets a value indicating whether more information should be + displayed during the build process. + + + if more information should be displayed; + otherwise, . The default is . + - - Gets or sets a value indicating whether debug information should be - displayed during the build process. - - - if debug information should be displayed; - otherwise, . The default is . - + + Gets or sets a value indicating whether debug information should be + displayed during the build process. + + + if debug information should be displayed; + otherwise, . The default is . + - - Gets or sets a value indicating whether only error and debug debug messages should be - displayed during the build process. - - - if only error or warning messages should be - displayed; otherwise, . The default is - . - + + Gets or sets a value indicating whether only error and debug debug messages should be + displayed during the build process. + + + if only error or warning messages should be + displayed; otherwise, . The default is + . + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - if output is to be unadorned so that emacs - and other editors can parse files names, etc. The default is - . - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + - - Gets a value indicating whether parent directories should be searched - for a buildfile. - - - if parent directories should be searched for - a build file; otherwise, . The default is - . - + + Gets a value indicating whether parent directories should be searched + for a buildfile. + + + if parent directories should be searched for + a build file; otherwise, . The default is + . + - - Gets or sets the indentation level of the build output. - - - The indentation level of the build output. The default is 0. - + + Gets or sets the indentation level of the build output. + + + The indentation level of the build output. The default is 0. + - - Gets or sets the list of properties that should be set. - - - The list of properties that should be set. - + + Gets or sets the list of properties that should be set. + + + The list of properties that should be set. + @@ -12526,12 +12526,12 @@ - - Gets or sets the name of the file to log output to. - - - The name of the file to log output to. - + + Gets or sets the name of the file to log output to. + + + The name of the file to log output to. + @@ -12545,12 +12545,12 @@ - - Gets a collection of assemblies to load extensions from. - - - A collection of assemblies to load extensions from. - + + Gets a collection of assemblies to load extensions from. + + + A collection of assemblies to load extensions from. + @@ -12564,75 +12564,75 @@ - - Gets or sets a value indicating whether the logo banner should be - printed. - - - if the logo banner should be printed; otherwise, - . The default is . - + + Gets or sets a value indicating whether the logo banner should be + printed. + + + if the logo banner should be printed; otherwise, + . The default is . + - - Gets or sets a value indicating whether the NAnt help should be - printed. - - - if NAnt help should be printed; otherwise, - . The default is . - + + Gets or sets a value indicating whether the NAnt help should be + printed. + + + if NAnt help should be printed; otherwise, + . The default is . + - - Gets a collection containing the targets that should be executed. - - - A collection that contains the targets that should be executed. - + + Gets a collection containing the targets that should be executed. + + + A collection that contains the targets that should be executed. + - - Custom configuration section handler for the element. - + + Custom configuration section handler for the element. + - - This just passed things through. Return the node read from the config file. - + + This just passed things through. Return the node read from the config file. + - - Main entry point to NAnt that is called by the ConsoleStub. - + + Main entry point to NAnt that is called by the ConsoleStub. + - - Starts NAnt. This is the Main entry point. - - Command Line args, or whatever you want to pass it. They will treated as Command Line args. - - The exit code. - + + Starts NAnt. This is the Main entry point. + + Command Line args, or whatever you want to pass it. They will treated as Command Line args. + + The exit code. + - - Prints the projecthelp to the console. - - The build file to show help for. - - is loaded and transformed with - ProjectHelp.xslt, which is an embedded resource. - + + Prints the projecthelp to the console. + + The build file to show help for. + + is loaded and transformed with + ProjectHelp.xslt, which is an embedded resource. + - - Gets the file name for the build file in the specified directory. - - The directory to look for a build file. When in doubt use Environment.CurrentDirectory for directory. - Look for a build file with this pattern or name. If null look for a file that matches the default build pattern (*.build). - Whether or not to search the parent directories for a build file. - The path to the build file or null if no build file could be found. + + Gets the file name for the build file in the specified directory. + + The directory to look for a build file. When in doubt use Environment.CurrentDirectory for directory. + Look for a build file with this pattern or name. If null look for a file that matches the default build pattern (*.build). + Whether or not to search the parent directories for a build file. + The path to the build file or null if no build file could be found. @@ -12681,9 +12681,9 @@ The to add listeners to. - - Spits out generic help info to the console. - + + Spits out generic help info to the console. + @@ -12798,11 +12798,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -12835,10 +12835,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -12859,28 +12859,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -12894,45 +12894,45 @@ - - Inherits Properties from an existing property - dictionary Instance - - DataType list to inherit + + Inherits Properties from an existing property + dictionary Instance + + DataType list to inherit - - Used for searching filesystem based on given include/exclude rules. - - - Simple client code for testing the class. - - while (true) { - DirectoryScanner scanner = new DirectoryScanner(); - Console.Write("Scan Basedirectory : "); - string s = Console.ReadLine(); - if (s.Length == 0) break; - scanner.BaseDirectory = s; - while(true) { - Console.Write("Include pattern : "); - s = Console.ReadLine(); - if (s.Length == 0) break; - scanner.Includes.Add(s); - } - while(true) { - Console.Write("Exclude pattern : "); - s = Console.ReadLine(); - if (s.Length == 0) break; - scanner.Excludes.Add(s); - } - foreach (string name in scanner.FileNames) - Console.WriteLine("file:" + name); - foreach (string name in scanner.DirectoryNames) - Console.WriteLine("dir :" + name); - Console.WriteLine(""); - } - - + + Used for searching filesystem based on given include/exclude rules. + + + Simple client code for testing the class. + + while (true) { + DirectoryScanner scanner = new DirectoryScanner(); + Console.Write("Scan Basedirectory : "); + string s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.BaseDirectory = s; + while(true) { + Console.Write("Include pattern : "); + s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.Includes.Add(s); + } + while(true) { + Console.Write("Exclude pattern : "); + s = Console.ReadLine(); + if (s.Length == 0) break; + scanner.Excludes.Add(s); + } + foreach (string name in scanner.FileNames) + Console.WriteLine("file:" + name); + foreach (string name in scanner.DirectoryNames) + Console.WriteLine("dir :" + name); + Console.WriteLine(""); + } + + @@ -12965,57 +12965,57 @@ - - Parses specified NAnt search patterns for search directories and - corresponding regex patterns. - - In. NAnt patterns. Absolute or relative paths. - Out. Regex patterns. Absolute canonical paths. - Out. Non-regex files. Absolute canonical paths. - In. Whether to allow a pattern to add search directories. + + Parses specified NAnt search patterns for search directories and + corresponding regex patterns. + + In. NAnt patterns. Absolute or relative paths. + Out. Regex patterns. Absolute canonical paths. + Out. Non-regex files. Absolute canonical paths. + In. Whether to allow a pattern to add search directories. - - Given a NAnt search pattern returns a search directory and an regex - search pattern. - - Whether this pattern is an include or exclude pattern - NAnt searh pattern (relative to the Basedirectory OR absolute, relative paths refering to parent directories ( ../ ) also supported) - Out. Absolute canonical path to the directory to be searched - Out. Whether the pattern is potentially recursive or not - Out. Whether this is a regex pattern or not - Out. Regex search pattern (absolute canonical path) + + Given a NAnt search pattern returns a search directory and an regex + search pattern. + + Whether this pattern is an include or exclude pattern + NAnt searh pattern (relative to the Basedirectory OR absolute, relative paths refering to parent directories ( ../ ) also supported) + Out. Absolute canonical path to the directory to be searched + Out. Whether the pattern is potentially recursive or not + Out. Whether this is a regex pattern or not + Out. Regex search pattern (absolute canonical path) - - Searches a directory recursively for files and directories matching - the search criteria. - - Directory in which to search (absolute canonical path) - Whether to scan recursively or not + + Searches a directory recursively for files and directories matching + the search criteria. + + Directory in which to search (absolute canonical path) + Whether to scan recursively or not - - Converts search pattern to a regular expression pattern. - - Search pattern relative to the search directory. - Regular expresssion + + Converts search pattern to a regular expression pattern. + + Search pattern relative to the search directory. + Regular expresssion - - Gets or set a value indicating whether or not to use case-sensitive - pattern matching. - + + Gets or set a value indicating whether or not to use case-sensitive + pattern matching. + - - Gets the collection of include patterns. - + + Gets the collection of include patterns. + - - Gets the collection of exclude patterns. - + + Gets the collection of exclude patterns. + @@ -13024,19 +13024,19 @@ - - Gets the list of files that match the given patterns. - + + Gets the list of files that match the given patterns. + - - Gets the list of directories that match the given patterns. - + + Gets the list of directories that match the given patterns. + - - Gets the list of directories that were scanned for files. - + + Gets the list of directories that were scanned for files. + @@ -13047,12 +13047,12 @@ - - Creates a string representing a list of the strings in the collection. - - - A string that represents the contents. - + + Creates a string representing a list of the strings in the collection. + + + A string that represents the contents. + @@ -13102,53 +13102,53 @@ - - Gets a value indicating whether string comparison is case-sensitive. - - - A value indicating whether string comparison is case-sensitive. - + + Gets a value indicating whether string comparison is case-sensitive. + + + A value indicating whether string comparison is case-sensitive. + - - Gets the value of the specified property. - - The name of the property to get the value of. - - The value of the specified property. - + + Gets the value of the specified property. + + The name of the property to get the value of. + + The value of the specified property. + - - Splits an input string into a sequence of tokens used during parsing. - + + Splits an input string into a sequence of tokens used during parsing. + - - Available tokens - + + Available tokens + - - Encalsulates information about installed frameworks incuding version - information and directory locations for finding tools. - + + Encalsulates information about installed frameworks incuding version + information and directory locations for finding tools. + - - Resolves the specified assembly to a full path by matching it - against the reference assemblies. - - The file name of the assembly to resolve (without path information). - - An absolute path to the assembly, or if the - assembly could not be found or no reference assemblies are configured - for the current framework. - - - Whether the file name is matched case-sensitively depends on the - operating system. - + + Resolves the specified assembly to a full path by matching it + against the reference assemblies. + + The file name of the assembly to resolve (without path information). + + An absolute path to the assembly, or if the + assembly could not be found or no reference assemblies are configured + for the current framework. + + + Whether the file name is matched case-sensitively depends on the + operating system. + @@ -13172,47 +13172,47 @@ - - Gets the value of the specified attribute from the specified node. - - The node of which the attribute value should be retrieved. - The attribute of which the value should be returned. - - The value of the attribute with the specified name or - if the attribute does not exist or has no value. - + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + - - Gets the name of the framework. - - - The name of the framework. - + + Gets the name of the framework. + + + The name of the framework. + - - Gets the family of the framework. - - - The family of the framework. - + + Gets the family of the framework. + + + The family of the framework. + - - Gets the description of the framework. - - - The description of the framework. - + + Gets the description of the framework. + + + The description of the framework. + - - Gets the vendor of the framework. - - - The vendor of the framework. - + + Gets the vendor of the framework. + + + The vendor of the framework. + @@ -13322,13 +13322,13 @@ The framework is not valid. - - Returns a value indicating whether the current framework is valid. - - - if the framework is installed and correctly - configured; otherwise, . - + + Returns a value indicating whether the current framework is valid. + + + if the framework is installed and correctly + configured; otherwise, . + @@ -13372,134 +13372,134 @@ - - Defines the types of frameworks. - + + Defines the types of frameworks. + - - Frameworks that are supported on the current platform, but are not - installed. - + + Frameworks that are supported on the current platform, but are not + installed. + - - Frameworks that are installed on the current system. - + + Frameworks that are installed on the current system. + - - Retrieves installation state attributes. - + + Retrieves installation state attributes. + - - Frameworks that typically target full desktop devices. - + + Frameworks that typically target full desktop devices. + - - Frameworks that target compact devices. - + + Frameworks that target compact devices. + - - Frameworks that run in a browser. - + + Frameworks that run in a browser. + - - Retrieves device attributes. - + + Retrieves device attributes. + - - Frameworks released as part of the open-source Mono - project. - + + Frameworks released as part of the open-source Mono + project. + - - Frameworks released by Microsoft. - + + Frameworks released by Microsoft. + - - Retrieves vendor attributes. - + + Retrieves vendor attributes. + - - All frameworks supported on the current platform, regarless of their - installation state, target device or vendor. - + + All frameworks supported on the current platform, regarless of their + installation state, target device or vendor. + - - Stores the file name, line number and column number to record a position - in a text file. - + + Stores the file name, line number and column number to record a position + in a text file. + - - Creates a location consisting of a file name, line number and - column number. - - - can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. - + + Creates a location consisting of a file name, line number and + column number. + + + can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. + - - Creates a location consisting of a file name. - - - can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. - + + Creates a location consisting of a file name. + + + can be a local URI resource, e.g., file:///C:/WINDOWS/setuplog.txt. + - - Creates an "unknown" location. - + + Creates an "unknown" location. + - Private Init function. + Private Init function. - - Returns the file name, line number and a trailing space. An error - message can be appended easily. For unknown locations, returns - an empty string. - + + Returns the file name, line number and a trailing space. An error + message can be appended easily. For unknown locations, returns + an empty string. + - - Gets a string containing the file name for the location. - - - The file name includes both the file path and the extension. - + + Gets a string containing the file name for the location. + + + The file name includes both the file path and the extension. + - - Gets the line number for the location. - - - Lines start at 1. Will be zero if not specified. - + + Gets the line number for the location. + + + Lines start at 1. Will be zero if not specified. + - - Gets the column number for the location. - - - Columns start a 1. Will be zero if not specified. - + + Gets the column number for the location. + + + Columns start a 1. Will be zero if not specified. + - - Maps XML nodes to the text positions from their original source. - + + Maps XML nodes to the text positions from their original source. + @@ -13507,14 +13507,14 @@ - - Determines if a file has been loaded by the current project. - - The file to check. - - if the specified file has already been loaded - by the current project; otherwise, . - + + Determines if a file has been loaded by the current project. + + The file to check. + + if the specified file has already been loaded + by the current project; otherwise, . + @@ -13534,9 +13534,9 @@ - - Represents a position in the build file. - + + Represents a position in the build file. + @@ -13547,47 +13547,47 @@ The column coordinate of the position. - - The line coordinate of the position. - + + The line coordinate of the position. + - - The column coordinate of the position. - + + The column coordinate of the position. + - - Defines the set of levels recognised by the NAnt logging system. - + + Defines the set of levels recognised by the NAnt logging system. + - - Designates fine-grained informational events that are most useful - to debug a build process. - + + Designates fine-grained informational events that are most useful + to debug a build process. + - - Designates events that offer a more detailed view of the build - process. - + + Designates events that offer a more detailed view of the build + process. + - - Designates informational events that are useful for getting a - high-level view of the build process. - + + Designates informational events that are useful for getting a + high-level view of the build process. + - - Designates potentionally harmful events. - + + Designates potentionally harmful events. + - - Designates error events. - + + Designates error events. + @@ -13671,20 +13671,20 @@ The that emitted the event. - - Gets or sets the message associated with this event. - - - The message associated with this event. - + + Gets or sets the message associated with this event. + + + The message associated with this event. + - - Gets or sets the priority level associated with this event. - - - The priority level associated with this event. - + + Gets or sets the priority level associated with this event. + + + The priority level associated with this event. + @@ -13729,10 +13729,10 @@ A that contains the event data. - - Instances of classes that implement this interface can register to be - notified when things happen during a build. - + + Instances of classes that implement this interface can register to be + notified when things happen during a build. + @@ -13806,30 +13806,30 @@ - - Flushes buffered build events or messages to the underlying storage. - + + Flushes buffered build events or messages to the underlying storage. + - - Gets or sets the highest level of message this logger should respond - to. - - The highest level of message this logger should respond to. - - Only messages with a message level higher than or equal to the given - level should actually be written to the log. - + + Gets or sets the highest level of message this logger should respond + to. + + The highest level of message this logger should respond to. + + Only messages with a message level higher than or equal to the given + level should actually be written to the log. + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - if output is to be unadorned so that emacs - and other editors can parse files names, etc. - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. + @@ -13844,9 +13844,9 @@ - - Flushes buffered build events or messages to the underlying storage. - + + Flushes buffered build events or messages to the underlying storage. + @@ -13914,11 +13914,11 @@ - - Empty implementation which allows derived classes to receive the - output that is generated in this logger. - - The message being logged. + + Empty implementation which allows derived classes to receive the + output that is generated in this logger. + + The message being logged. @@ -13948,33 +13948,33 @@ The number of characters that the message should be indented. - - Holds a stack of reports for all running builds. - + + Holds a stack of reports for all running builds. + - - Gets or sets the highest level of message this logger should respond - to. - - - The highest level of message this logger should respond to. - - - Only messages with a message level higher than or equal to the given - level should be written to the log. - + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - if output is to be unadorned so that emacs - and other editors can parse files names, etc. The default is - . - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + @@ -13986,100 +13986,100 @@ - - Used to store information about a build, to allow better reporting to - the user. - + + Used to store information about a build, to allow better reporting to + the user. + - - Errors encountered so far. - + + Errors encountered so far. + - - Warnings encountered so far. - + + Warnings encountered so far. + - - The start time of the build process. - + + The start time of the build process. + - - Buffers log messages from DefaultLogger, and sends an e-mail with the - results. - - - The following properties are used to send the mail : - - - Property - Description - - - MailLogger.mailhost - Mail server to use. [default: localhost] - - - MailLogger.from - The address of the e-mail sender. - - - MailLogger.failure.notify - Send build failure e-mails ? [default: true] - - - MailLogger.success.notify - Send build success e-mails ? [default: true] - - - MailLogger.failure.to - The address to send build failure messages to. - - - MailLogger.success.to - The address to send build success messages to. - - - MailLogger.failure.subject - The subject of build failure messages. [default: "Build Failure"] - - - MailLogger.success.subject - The subject of build success messages. [default: "Build Success"] - - - MailLogger.success.attachments - The ID of a fileset holdng set of files to attach when the build is successful. - - - MailLogger.failure.attachments - The ID of a fileset holdng set of files to attach when the build fails. - - - MailLogger.body.encoding - The encoding type of the body of the e-mail message. [default: system's ANSI code page] - - - MailLogger.smtp.username - The name of the user to login to the SMTP server. - - - MailLogger.smtp.password - The password of the specified user. - - - MailLogger.smtp.enablessl - Specifies whether to use SSL to encrypt the connection. [default: false] - - - MailLogger.smtp.port - The SMTP server port to connect to. [default: 25] - - - + + Buffers log messages from DefaultLogger, and sends an e-mail with the + results. + + + The following properties are used to send the mail : + + + Property + Description + + + MailLogger.mailhost + Mail server to use. [default: localhost] + + + MailLogger.from + The address of the e-mail sender. + + + MailLogger.failure.notify + Send build failure e-mails ? [default: true] + + + MailLogger.success.notify + Send build success e-mails ? [default: true] + + + MailLogger.failure.to + The address to send build failure messages to. + + + MailLogger.success.to + The address to send build success messages to. + + + MailLogger.failure.subject + The subject of build failure messages. [default: "Build Failure"] + + + MailLogger.success.subject + The subject of build success messages. [default: "Build Success"] + + + MailLogger.success.attachments + The ID of a fileset holdng set of files to attach when the build is successful. + + + MailLogger.failure.attachments + The ID of a fileset holdng set of files to attach when the build fails. + + + MailLogger.body.encoding + The encoding type of the body of the e-mail message. [default: system's ANSI code page] + + + MailLogger.smtp.username + The name of the user to login to the SMTP server. + + + MailLogger.smtp.password + The password of the specified user. + + + MailLogger.smtp.enablessl + Specifies whether to use SSL to encrypt the connection. [default: false] + + + MailLogger.smtp.port + The SMTP server port to connect to. [default: 25] + + + @@ -14106,10 +14106,10 @@ A object that contains the event data. - - Receives and buffers log messages. - - The message being logged. + + Receives and buffers log messages. + + The message being logged. @@ -14126,14 +14126,14 @@ is , and the specified property is not present and no default value has been given. - - Buffer in which the message is constructed prior to sending. - + + Buffer in which the message is constructed prior to sending. + - - Holds the stack of currently executing projects. - + + Holds the stack of currently executing projects. + @@ -14189,11 +14189,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -14226,10 +14226,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -14244,28 +14244,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -14284,46 +14284,46 @@ An object that controls formatting. - - Writes a character array to the buffer. - - The character array to write to the text stream. + + Writes a character array to the buffer. + + The character array to write to the text stream. - - Writes a string to the buffer. - - + + Writes a string to the buffer. + + - - Writes an empty string to the logging infrastructure. - + + Writes an empty string to the logging infrastructure. + - - Writes a string to the logging infrastructure. - - The string to write. If is a null reference, only the line termination characters are written. + + Writes a string to the logging infrastructure. + + The string to write. If is a null reference, only the line termination characters are written. - - Writes out a formatted string using the same semantics as - . - - The formatting string. - The object array to write into format string. + + Writes out a formatted string using the same semantics as + . + + The formatting string. + The object array to write into format string. - - Causes any buffered data to be written to the logging infrastructure. - + + Causes any buffered data to be written to the logging infrastructure. + - - Closes the current writer and releases any system resources - associated with the writer. - + + Closes the current writer and releases any system resources + associated with the writer. + @@ -14353,19 +14353,19 @@ - - Used to search for files on the PATH. - - - - The local directory is not searched (since this would already be covered - by normal use of the includes element). - - - Also, advanced pattern matching isn't supported: you need to know the - exact name of the file. - - + + Used to search for files on the PATH. + + + + The local directory is not searched (since this would already be covered + by normal use of the includes element). + + + Also, advanced pattern matching isn't supported: you need to know the + exact name of the file. + + @@ -14384,28 +14384,28 @@ - - Adds a file to the list of files to be scanned for. - - The filename or search pattern to add to the list. + + Adds a file to the list of files to be scanned for. + + The filename or search pattern to add to the list. - - Scans all direcetories in the PATH environment variable for files. - - - List of matching files found in the PATH. - + + Scans all direcetories in the PATH environment variable for files. + + + List of matching files found in the PATH. + - - Scans all directories in the given environment variable for files. - - The environment variable of which the directories should be scanned. - - List of matching files found in the directory of the given - environment variable. - + + Scans all directories in the given environment variable for files. + + The environment variable of which the directories should be scanned. + + List of matching files found in the directory of the given + environment variable. + @@ -14417,35 +14417,35 @@ - - Returns a value indicating whether NAnt is running in 64-bit mode. - - - if NAnt is running in 64-bit mode; otherwise, - . - + + Returns a value indicating whether NAnt is running in 64-bit mode. + + + if NAnt is running in 64-bit mode; otherwise, + . + - - Returns a value indicating whether NAnt is running in 32-bit mode. - - - Note that even if the platform is 64-bit, NAnt may be running in - 32-bit mode. - - - if NAnt is running in 32-bit mode; otherwise, - . - + + Returns a value indicating whether NAnt is running in 32-bit mode. + + + Note that even if the platform is 64-bit, NAnt may be running in + 32-bit mode. + + + if NAnt is running in 32-bit mode; otherwise, + . + - - Returns a value indicating whether NAnt is running on Windows. - - - if NAnt is running on Windows; - otherwise, . - + + Returns a value indicating whether NAnt is running on Windows. + + + if NAnt is running on Windows; + otherwise, . + @@ -14477,26 +14477,26 @@ - - Constant for the "visiting" state, used when traversing a DFS of - target dependencies. - + + Constant for the "visiting" state, used when traversing a DFS of + target dependencies. + - - Constant for the "visited" state, used when traversing a DFS of - target dependencies. - + + Constant for the "visited" state, used when traversing a DFS of + target dependencies. + - - Holds the logger for this class. - + + Holds the logger for this class. + - - Holds the default threshold for build loggers. - + + Holds the default threshold for build loggers. + @@ -14742,33 +14742,33 @@ - - Executes a specific target, and its dependencies. - - The name of the target to execute. - - Global tasks are not executed. - + + Executes a specific target, and its dependencies. + + The name of the target to execute. + + Global tasks are not executed. + - - Executes a specific target. - - The name of the target to execute. - Whether dependencies should be forced to execute - - Global tasks are not executed. - + + Executes a specific target. + + The name of the target to execute. + Whether dependencies should be forced to execute + + Global tasks are not executed. + - - Executes the default target and wraps in error handling and time - stamping. - - - if the build was successful; otherwise, - . - + + Executes the default target and wraps in error handling and time + stamping. + + + if the build was successful; otherwise, + . + @@ -14971,20 +14971,20 @@ - - Gets or sets the indentation size of the build output. - - - The indendation size of the build output. - + + Gets or sets the indentation size of the build output. + + + The indendation size of the build output. + - - Gets or sets the default threshold level for build loggers. - - - The default threshold level for build loggers. - + + Gets or sets the default threshold level for build loggers. + + + The default threshold level for build loggers. + @@ -15031,20 +15031,20 @@ - - Gets a collection of available .NET frameworks. - - - A collection of available .NET frameworks. - + + Gets a collection of available .NET frameworks. + + + A collection of available .NET frameworks. + - - Gets the framework in which NAnt is currently running. - - - The framework in which NAnt is currently running. - + + Gets the framework in which NAnt is currently running. + + + The framework in which NAnt is currently running. + @@ -15083,22 +15083,22 @@ NAnt does not support the current platform. - - Gets the current target. - - - The current target, or if no target is - executing. - + + Gets the current target. + + + The current target, or if no target is + executing. + - - Gets the path to the build file. - - - The path to the build file, or if the build - document is not file backed. - + + Gets the path to the build file. + + + The path to the build file, or if the build + document is not file backed. + @@ -15119,70 +15119,70 @@ - - Gets the name of the target that will be executed when no other - build targets are specified. - - - The name of the target that will be executed when no other - build targets are specified, or if no - default target is specified in the build file. - + + Gets the name of the target that will be executed when no other + build targets are specified. + + + The name of the target that will be executed when no other + build targets are specified, or if no + default target is specified in the build file. + - - Gets a value indicating whether tasks should output more build log - messages. - - - if tasks should output more build log message; - otherwise, . - + + Gets a value indicating whether tasks should output more build log + messages. + + + if tasks should output more build log message; + otherwise, . + - - The list of targets to build. - - - Targets are built in the order they appear in the collection. If - the collection is empty the default target will be built. - + + The list of targets to build. + + + Targets are built in the order they appear in the collection. If + the collection is empty the default target will be built. + - - Gets the properties defined in this project. - - The properties defined in this project. - - - This is the collection of properties that are defined by the system - and property task statements. - - - These properties can be used in expansion. - - + + Gets the properties defined in this project. + + The properties defined in this project. + + + This is the collection of properties that are defined by the system + and property task statements. + + + These properties can be used in expansion. + + - - Gets the framework-neutral properties defined in the NAnt - configuration file. - - - The framework-neutral properties defined in the NAnt configuration - file. - - - - This is the collection of read-only properties that are defined in - the NAnt configuration file. - - - These properties can only be used for expansion in framework-specific - and framework-neutral configuration settings. These properties are - not available for expansion in the build file. - - + + Gets the framework-neutral properties defined in the NAnt + configuration file. + + + The framework-neutral properties defined in the NAnt configuration + file. + + + + This is the collection of read-only properties that are defined in + the NAnt configuration file. + + + These properties can only be used for expansion in framework-specific + and framework-neutral configuration settings. These properties are + not available for expansion in the build file. + + @@ -15199,51 +15199,51 @@ - - Gets the targets defined in this project. - - - The targets defined in this project. - + + Gets the targets defined in this project. + + + The targets defined in this project. + - - Gets the build listeners for this project. - - - The build listeners for this project. - + + Gets the build listeners for this project. + + + The build listeners for this project. + - - Allow the project construction to be optimized. - - - Use this with care! - + + Allow the project construction to be optimized. + + + Use this with care! + - - Do not perform any optimizations. - + + Do not perform any optimizations. + - - The project base directory must not be automatically scanned - for extension assemblies. - + + The project base directory must not be automatically scanned + for extension assemblies. + - - Do not scan the project configuration for frameworks, and - do not configure the runtime and target framework. - + + Do not scan the project configuration for frameworks, and + do not configure the runtime and target framework. + - - Holds a value indicating whether a scan for tasks, types and functions - has already been performed for the current runtime framework. - + + Holds a value indicating whether a scan for tasks, types and functions + has already been performed for the current runtime framework. + @@ -15272,15 +15272,15 @@ An representing global properties. - - Gets the value of the specified attribute from the specified node. - - The node of which the attribute value should be retrieved. - The attribute of which the value should be returned. - - The value of the attribute with the specified name or - if the attribute does not exist or has no value. - + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + @@ -15303,16 +15303,16 @@ - - Constant for the "visiting" state, used when traversing a DFS of - property references. - + + Constant for the "visiting" state, used when traversing a DFS of + property references. + - - Constant for the "visited" state, used when travesing a DFS of - property references. - + + Constant for the "visited" state, used when travesing a DFS of + property references. + @@ -15339,12 +15339,12 @@ The value of the element to remove. - - Performs additional custom processes when validating the element - with the specified key and value. - - The key of the element to validate. - The value of the element to validate. + + Performs additional custom processes when validating the element + with the specified key and value. + + The key of the element to validate. + The value of the element to validate. @@ -15358,45 +15358,45 @@ - - Marks a property as a property of which the value is expanded at - execution time. - - The name of the property to mark as dynamic. + + Marks a property as a property of which the value is expanded at + execution time. + + The name of the property to mark as dynamic. - - Adds a property to the collection. - - The name of the property. - The value to assign to the property. + + Adds a property to the collection. + + The name of the property. + The value to assign to the property. - - Determines whether the specified property is listed as read-only. - - The name of the property to check. - - if the property is listed as read-only; - otherwise, . - + + Determines whether the specified property is listed as read-only. + + The name of the property to check. + + if the property is listed as read-only; + otherwise, . + - - Determines whether the specified property is listed as dynamic. - - The name of the property to check. - - if the property is listed as dynamic; - otherwise, . - + + Determines whether the specified property is listed as dynamic. + + The name of the property to check. + + if the property is listed as dynamic; + otherwise, . + - - Inherits properties from an existing property dictionary Instance. - - Property list to inherit. - The list of properties to exclude during inheritance. + + Inherits properties from an existing property dictionary Instance. + + Property list to inherit. + The list of properties to exclude during inheritance. @@ -15407,20 +15407,20 @@ The expanded and replaced string. - - Determines whether a property already exists. - - The name of the property to check. - - if the specified property already exists; - otherwise, . - + + Determines whether a property already exists. + + The name of the property to check. + + if the specified property already exists; + otherwise, . + - - Removes the property with the specified name. - - The name of the property to remove. + + Removes the property with the specified name. + + The name of the property to remove. @@ -15433,20 +15433,20 @@ The expanded and replaced string. - - Evaluates the given expression string and returns the result - - - - - - + + Evaluates the given expression string and returns the result + + + + + + - - Checks whether the specified property is deprecated. - - The property to check. + + Checks whether the specified property is deprecated. + + The property to check. @@ -15461,33 +15461,33 @@ - - Maintains a list of the property names that are readonly. - + + Maintains a list of the property names that are readonly. + - - Maintains a list of the property names of which the value is expanded - on usage, not at initalization. - + + Maintains a list of the property names of which the value is expanded + on usage, not at initalization. + - - The project for which the dictionary holds properties. - + + The project for which the dictionary holds properties. + - - Indexer property. - + + Indexer property. + - - Gets the project for which the dictionary holds properties. - - - The project for which the dictionary holds properties. - + + Gets the project for which the dictionary holds properties. + + + The project for which the dictionary holds properties. + @@ -15511,14 +15511,14 @@ - - Executes dependent targets first, then the target. - + + Executes dependent targets first, then the target. + - - This indicates whether the target has already executed. - + + This indicates whether the target has already executed. + @@ -15536,19 +15536,19 @@ - - If then the target will be executed; - otherwise, skipped. The default is . - + + If then the target will be executed; + otherwise, skipped. The default is . + - - Gets a value indicating whether the target should be executed. - - - if the target should be executed; otherwise, - . - + + Gets a value indicating whether the target should be executed. + + + if the target should be executed; otherwise, + . + @@ -15558,29 +15558,29 @@ - - Gets a value indicating whether the target should NOT be executed. - - - if the target should NOT be executed; - otherwise, . - + + Gets a value indicating whether the target should NOT be executed. + + + if the target should NOT be executed; + otherwise, . + - - The description of the target. - + + The description of the target. + - - Space separated list of targets that this target depends on. - + + Space separated list of targets that this target depends on. + - - A collection of target names that must be executed before this - target. - + + A collection of target names that must be executed before this + target. + @@ -15719,11 +15719,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -15756,10 +15756,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -15780,34 +15780,34 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Comprises all of the loaded, and available, tasks. - Use these static methods to register, initialize and create a task. - + + Comprises all of the loaded, and available, tasks. + Use these static methods to register, initialize and create a task. + @@ -15836,11 +15836,11 @@ indicating whether scanning of the directory should halt on first error. - - Adds any task assemblies in the project base directory - and its tasks subdirectory. - - The project to work from. + + Adds any task assemblies in the project base directory + and its tasks subdirectory. + + The project to work from. @@ -15995,14 +15995,14 @@ The that contains contextual information about the source or destination. - - Used to wrap log messages in xml <message/> elements. - + + Used to wrap log messages in xml <message/> elements. + - - Holds the stack of currently executing projects. - + + Holds the stack of currently executing projects. + @@ -16026,9 +16026,9 @@ The destination for this serialization. - - Returns the contents of log captured. - + + Returns the contents of log captured. + @@ -16096,31 +16096,31 @@ - - Flushes buffered build events or messages to the underlying storage. - + + Flushes buffered build events or messages to the underlying storage. + - - Gets or sets the highest level of message this logger should respond - to. - - - The highest level of message this logger should respond to. - - - Only messages with a message level higher than or equal to the given - level should be written to the log. - + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - as it has no meaning in XML format. - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + as it has no meaning in XML format. + diff --git a/example_scripts/Tools/nant/bin/NAnt.DotNetTasks.xml b/example_scripts/Tools/nant/bin/NAnt.DotNetTasks.xml index afce140..731a070 100644 --- a/example_scripts/Tools/nant/bin/NAnt.DotNetTasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.DotNetTasks.xml @@ -63,9 +63,9 @@ - - Generates an AssemblyInfo file. - + + Generates an AssemblyInfo file. + @@ -79,66 +79,66 @@ - - Name of the AssemblyInfo file to generate. - - - The name of the AssemblyInfo file to generate. - + + Name of the AssemblyInfo file to generate. + + + The name of the AssemblyInfo file to generate. + - - The code language in which the AssemblyInfo file should be - generated. - + + The code language in which the AssemblyInfo file should be + generated. + - - The assembly-level attributes to generate. - - - The assembly-level attributes to generate. - + + The assembly-level attributes to generate. + + + The assembly-level attributes to generate. + - - The namespaces to import. - - - The namespaces to import. - + + The namespaces to import. + + + The namespaces to import. + - - Assembly files used to locate the types of the specified attributes. - + + Assembly files used to locate the types of the specified attributes. + - - Defines the supported code languages for generating an AssemblyInfo - file. - + + Defines the supported code languages for generating an AssemblyInfo + file. + - - A value for generating C# code. - + + A value for generating C# code. + - - A value for generating JScript code. - + + A value for generating JScript code. + - - A value for generating Visual Basic code. - + + A value for generating Visual Basic code. + - - Encapsulates functionality to generate a code file with imports - and assembly-level attributes. - + + Encapsulates functionality to generate a code file with imports + and assembly-level attributes. + @@ -216,66 +216,66 @@ - - Wraps al.exe, the assembly linker for the .NET Framework. - - - - All specified sources will be embedded using the /embed flag. - Other source types are not supported. - - - - - Create a library containing all icon files in the current directory. - - - - - - - - ]]> - - - - - Create an executable assembly manifest from modules. - - - - - - - - - ]]> - - + + Wraps al.exe, the assembly linker for the .NET Framework. + + + + All specified sources will be embedded using the /embed flag. + Other source types are not supported. + + + + + Create a library containing all icon files in the current directory. + + + + + + + + ]]> + + + + + Create an executable assembly manifest from modules. + + + + + + + + + ]]> + + - - Generates an assembly manifest. - + + Generates an assembly manifest. + - - Determines whether the assembly manifest needs compiling or is - uptodate. - - - if the assembly manifest needs compiling; - otherwise, . - + + Determines whether the assembly manifest needs compiling or is + uptodate. + + + if the assembly manifest needs compiling; + otherwise, . + - - Specifies an algorithm (in hexadecimal) to hash all files in a - multifile assembly except the file that contains the assembly - manifest. The default algorithm is CALG_SHA1. - + + Specifies an algorithm (in hexadecimal) to hash all files in a + multifile assembly except the file that contains the assembly + manifest. The default algorithm is CALG_SHA1. + @@ -314,21 +314,21 @@ - - The culture string associated with the output assembly. - The string must be in RFC 1766 format, such as "en-US". - - - - Corresponds with the /c[ulture]: flag. - - + + The culture string associated with the output assembly. + The string must be in RFC 1766 format, such as "en-US". + + + + Corresponds with the /c[ulture]: flag. + + - - Specifies whether the assembly should be partially signed. The default - is . - + + Specifies whether the assembly should be partially signed. The default + is . + @@ -343,199 +343,199 @@ - - Security evidence file to embed. - - - The security evidence file to embed. - - - - Corresponds with the /e[vidence] flag. - - + + Security evidence file to embed. + + + The security evidence file to embed. + + + + Corresponds with the /e[vidence] flag. + + - - Specifies a string for the File Version field in the assembly. - - - A string for the File Version field in the assembly. - + + Specifies a string for the File Version field in the assembly. + + + A string for the File Version field in the assembly. + - - Specifies a value (in hexadecimal) for the Flags field in - the assembly. - - - A value (in hexadecimal) for the Flags field in the assembly. - + + Specifies a value (in hexadecimal) for the Flags field in + the assembly. + + + A value (in hexadecimal) for the Flags field in the assembly. + - - Specifies a container that holds a key pair. - + + Specifies a container that holds a key pair. + - - Specifies a file (filename) that contains a key pair or - just a public key to sign an assembly. - - - The complete path to the key file. - - - - Corresponds with the /keyf[ile]: flag. - - + + Specifies a file (filename) that contains a key pair or + just a public key to sign an assembly. + + + The complete path to the key file. + + + + Corresponds with the /keyf[ile]: flag. + + - - Specifies the fully-qualified name (class.method) of the method to - use as an entry point when converting a module to an executable file. - - - The fully-qualified name (class.method) of the method to use as an - entry point when converting a module to an executable file. - + + Specifies the fully-qualified name (class.method) of the method to + use as an entry point when converting a module to an executable file. + + + The fully-qualified name (class.method) of the method to use as an + entry point when converting a module to an executable file. + - - One or more modules to be compiled into an assembly. - + + One or more modules to be compiled into an assembly. + - - The name of the output file for the assembly manifest. - - - The complete output path for the assembly manifest. - - - - Corresponds with the /out flag. - - + + The name of the output file for the assembly manifest. + + + The complete output path for the assembly manifest. + + + + Corresponds with the /out flag. + + - - The target type (one of lib, exe, or winexe). - - - - Corresponds with the /t[arget]: flag. - - + + The target type (one of lib, exe, or winexe). + + + + Corresponds with the /t[arget]: flag. + + - - Specifies a string for the Product field in the assembly. - - - A string for the Product field in the assembly. - + + Specifies a string for the Product field in the assembly. + + + A string for the Product field in the assembly. + - - Specifies a string for the Product Version field in the assembly. - - - A string for the Product Version field in the assembly. - + + Specifies a string for the Product Version field in the assembly. + + + A string for the Product Version field in the assembly. + - - The set of resources to embed. - + + The set of resources to embed. + - - The set of compiled resources to embed. - - - Do not yet expose this to build authors. - + + The set of compiled resources to embed. + + + Do not yet expose this to build authors. + - - Indicates whether the assembly linker for a given target framework - supports the "template" option, which takes an assembly from which - to get all options except the culture field. - The default is . - - - TODO: remove this once Mono bug #74814 is fixed. - + + Indicates whether the assembly linker for a given target framework + supports the "template" option, which takes an assembly from which + to get all options except the culture field. + The default is . + + + TODO: remove this once Mono bug #74814 is fixed. + - - Specifies an assembly from which to get all options except the - culture field. - - - The complete path to the assembly template. - - - - Corresponds with the /template: flag. - - + + Specifies an assembly from which to get all options except the + culture field. + + + The complete path to the assembly template. + + + + Corresponds with the /template: flag. + + - - Specifies a string for the Title field in the assembly. - - - A string for the Title field in the assembly. - + + Specifies a string for the Title field in the assembly. + + + A string for the Title field in the assembly. + - - Specifies a string for the Trademark field in the assembly. - - - A string for the Trademark field in the assembly. - + + Specifies a string for the Trademark field in the assembly. + + + A string for the Trademark field in the assembly. + - - Specifies version information for the assembly. The format of the - version string is major.minor.build.revision. - + + Specifies version information for the assembly. The format of the + version string is major.minor.build.revision. + - - Icon to associate with the assembly. - + + Icon to associate with the assembly. + - - Inserts a Win32 resource (.res file) in the output file. - + + Inserts a Win32 resource (.res file) in the output file. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program or - if the task is not being executed. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program or + if the task is not being executed. + - - Provides the abstract base class for compiler tasks. - + + Provides the abstract base class for compiler tasks. + - - Contains a list of extensions for all file types that should be treated as - 'code-behind' when looking for resources. Ultimately this will determine - if we use the "namespace+filename" or "namespace+classname" algorithm, since - code-behind will use the "namespace+classname" algorithm. - + + Contains a list of extensions for all file types that should be treated as + 'code-behind' when looking for resources. Ultimately this will determine + if we use the "namespace+filename" or "namespace+classname" algorithm, since + code-behind will use the "namespace+classname" algorithm. + @@ -552,9 +552,9 @@ - - Compiles the sources and resources. - + + Compiles the sources and resources. + @@ -585,14 +585,14 @@ - - Extracts the associated namespace/classname linkage found in the - given stream. - - The read-only stream of the source file to search. - - The namespace/classname of the source file matching the resource. - + + Extracts the associated namespace/classname linkage found in the + given stream. + + The read-only stream of the source file to search. + + The namespace/classname of the source file matching the resource. + @@ -654,39 +654,39 @@ - - Determines whether compilation is needed. - + + Determines whether compilation is needed. + - - Finds the correct namespace/classname for a resource file from the - given dependent source file. - - The file from which the resource linkage of the resource file should be determined. - The culture of the resource file for which the resource linkage should be determined. - - The namespace/classname of the source file matching the resource or - if the dependent source file does not exist. - - - This behaviour may be overidden by each particular compiler to - support the namespace/classname syntax for that language. - + + Finds the correct namespace/classname for a resource file from the + given dependent source file. + + The file from which the resource linkage of the resource file should be determined. + The culture of the resource file for which the resource linkage should be determined. + + The namespace/classname of the source file matching the resource or + if the dependent source file does not exist. + + + This behaviour may be overidden by each particular compiler to + support the namespace/classname syntax for that language. + - - Link a list of files into a resource assembly. - - The collection of resources. - Resource assembly to generate - Culture of the generated assembly. + + Link a list of files into a resource assembly. + + The collection of resources. + Resource assembly to generate + Culture of the generated assembly. - - Compiles a set of resx files to a .resources files. - - The set of resx files to compile. + + Compiles a set of resx files to a .resources files. + + The set of resx files to compile. @@ -701,161 +701,161 @@ - - Generate debug output. The default is . - - - Only used for <jsc> tasks, but retained for backward - compatibility (Clover.NET). - + + Generate debug output. The default is . + + + Only used for <jsc> tasks, but retained for backward + compatibility (Clover.NET). + - - The output file created by the compiler. - + + The output file created by the compiler. + - - Output type. Possible values are exe, winexe, - library or module. - + + Output type. Possible values are exe, winexe, + library or module. + - - Define conditional compilation symbol(s). - - - - Corresponds to /d[efine]: flag. - - + + Define conditional compilation symbol(s). + + + + Corresponds to /d[efine]: flag. + + - - Icon to associate with the application. - - - - Corresponds to /win32icon: flag. - - + + Icon to associate with the application. + + + + Corresponds to /win32icon: flag. + + - - Specifies a Win32 resource file (.res). - - - - Corresponds to /win32res[ource]: flag. - - + + Specifies a Win32 resource file (.res). + + + + Corresponds to /win32res[ource]: flag. + + - - Instructs the compiler to treat all warnings as errors. The default - is . - - - - Corresponds to the /warnaserror[+|-] flag of the compiler. - - - When this property is set to , any messages - that would ordinarily be reported as warnings will instead be - reported as errors. - - + + Instructs the compiler to treat all warnings as errors. The default + is . + + + + Corresponds to the /warnaserror[+|-] flag of the compiler. + + + When this property is set to , any messages + that would ordinarily be reported as warnings will instead be + reported as errors. + + - - Controls which warnings should be reported as errors. - + + Controls which warnings should be reported as errors. + - - Specifies a comma-separated list of warnings that should be suppressed - by the compiler. - - - Comma-separated list of warnings that should be suppressed by the - compiler. - - - - Corresponds with the /nowarn flag. - - + + Specifies a comma-separated list of warnings that should be suppressed + by the compiler. + + + Comma-separated list of warnings that should be suppressed by the + compiler. + + + + Corresponds with the /nowarn flag. + + - - Specifies a list of warnings that you want the compiler to suppress. - + + Specifies a list of warnings that you want the compiler to suppress. + - - Instructs NAnt to recompile the output file regardless of the file timestamps. - - - When this parameter is to , NAnt will always - run the compiler to rebuild the output file, regardless of the file timestamps. - + + Instructs NAnt to recompile the output file regardless of the file timestamps. + + + When this parameter is to , NAnt will always + run the compiler to rebuild the output file, regardless of the file timestamps. + - - Specifies which type contains the Main method that you want to use - as the entry point into the program. - - - - Corresponds to the /m[ain]: flag of the compiler. - - - Use this property when creating an executable file. If this property - is not set, the compiler searches for a valid Main method in all - public classes. - - + + Specifies which type contains the Main method that you want to use + as the entry point into the program. + + + + Corresponds to the /m[ain]: flag of the compiler. + + + Use this property when creating an executable file. If this property + is not set, the compiler searches for a valid Main method in all + public classes. + + - - Specifies the key pair container used to strongname the assembly. - + + Specifies the key pair container used to strongname the assembly. + - - Specifies a strong name key file. - + + Specifies a strong name key file. + - - Specifies whether to delay sign the assembly using only the public - portion of the strong name key. The default is - . - + + Specifies whether to delay sign the assembly using only the public + portion of the strong name key. The default is + . + - - Additional directories to search in for assembly references. - - - - Corresponds with the /lib[path]: flag. - - - - - - Reference metadata from the specified assembly files. - - - - - Specifies list of packages to reference. - - - - Resources to embed. + Additional directories to search in for assembly references. + + + + Corresponds with the /lib[path]: flag. + + + + + + Reference metadata from the specified assembly files. + + + + + Specifies list of packages to reference. + + + + + Resources to embed. @@ -881,85 +881,85 @@ - - Link the specified modules into this assembly. - + + Link the specified modules into this assembly. + - - The set of source files for compilation. - + + The set of source files for compilation. + - - Indicates whether package references are supported by compiler for - a given target framework. The default is . - + + Indicates whether package references are supported by compiler for + a given target framework. The default is . + - - Indicates whether the compiler for a given target framework supports - the "warnaserror" option that takes a list of warnings. The default - is . - + + Indicates whether the compiler for a given target framework supports + the "warnaserror" option that takes a list of warnings. The default + is . + - - Indicates whether the compiler for a given target framework supports - a command line option that allows a list of warnings to be - suppressed. The default is . - + + Indicates whether the compiler for a given target framework supports + a command line option that allows a list of warnings to be + suppressed. The default is . + - - Indicates whether the compiler for a given target framework supports - the "keycontainer" option. The default is . - + + Indicates whether the compiler for a given target framework supports + the "keycontainer" option. The default is . + - - Indicates whether the compiler for a given target framework supports - the "keyfile" option. The default is . - + + Indicates whether the compiler for a given target framework supports + the "keyfile" option. The default is . + - - Indicates whether the compiler for a given target framework supports - the "delaysign" option. The default is . - + + Indicates whether the compiler for a given target framework supports + the "delaysign" option. The default is . + - - Gets the file extension required by the current compiler. - - - The file extension required by the current compiler. - + + Gets the file extension required by the current compiler. + + + The file extension required by the current compiler. + - - Gets the class name regular expression for the language of the current compiler. - - class name regular expression for the language of the current compiler + + Gets the class name regular expression for the language of the current compiler. + + class name regular expression for the language of the current compiler - - Gets the namespace regular expression for the language of the current compiler. - - namespace regular expression for the language of the current compiler + + Gets the namespace regular expression for the language of the current compiler. + + namespace regular expression for the language of the current compiler - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Holds class and namespace information for resource (*.resx) linkage. - + + Holds class and namespace information for resource (*.resx) linkage. + @@ -970,12 +970,12 @@ The class name the resource is associated with. - - Returns the resource linkage as a string. - - - A string representation of the resource linkage. - + + Returns the resource linkage as a string. + + + A string representation of the resource linkage. + @@ -1010,29 +1010,29 @@ - - Gets the name of namespace the resource is under. - - - The name of namespace the resource is under. - + + Gets the name of namespace the resource is under. + + + The name of namespace the resource is under. + - - Gets the name of the class (most likely a form) that the resource - is associated with. - - - The name of the class the resource is associated with. - + + Gets the name of the class (most likely a form) that the resource + is associated with. + + + The name of the class the resource is associated with. + - - Gets the culture that the resource is associated with. - - - The culture that the resource is associated with. - + + Gets the culture that the resource is associated with. + + + The culture that the resource is associated with. + @@ -1079,29 +1079,29 @@ to which the compiler options should be written. - - Determines whether compilation is needed. - + + Determines whether compilation is needed. + - - The preferred base address at which to load a DLL. The default base - address for a DLL is set by the .NET Framework common language - runtime. - - - The preferred base address at which to load a DLL. - - - This address can be specified as a decimal, hexadecimal, or octal - number. - + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address can be specified as a decimal, hexadecimal, or octal + number. + - - Specifies the type of debugging information generated by the - compiler. The default is . - + + Specifies the type of debugging information generated by the + compiler. The default is . + @@ -1110,184 +1110,184 @@ - - The name of the XML documentation file to generate. - - - - Corresponds with the /doc: flag. - - + + The name of the XML documentation file to generate. + + + + Corresponds with the /doc: flag. + + - - Specifies the size of sections in the output file. Valid values are - 512, 1024, 2048, 4096, and 8192. - - - The size of sections in the output file. - + + Specifies the size of sections in the output file. Valid values are + 512, 1024, 2048, 4096, and 8192. + + + The size of sections in the output file. + - - Instructs the compiler not to import mscorlib.dll. The default is - . - - - - Corresponds with the /nostdlib[+|-] flag. - - + + Instructs the compiler not to import mscorlib.dll. The default is + . + + + + Corresponds with the /nostdlib[+|-] flag. + + - - Instructs the compiler not to use implicit references to assemblies. - The default is . - - - - Corresponds with the /noconfig flag. - - + + Instructs the compiler not to use implicit references to assemblies. + The default is . + + + + Corresponds with the /noconfig flag. + + - - Specifies whether an integer arithmetic statement that is not in - the scope of the checked or unchecked keywords and - that results in a value outside the range of the data type should - cause a run-time exception. The default is . - - - - Corresponds with the /checked[+|-] flag. - - + + Specifies whether an integer arithmetic statement that is not in + the scope of the checked or unchecked keywords and + that results in a value outside the range of the data type should + cause a run-time exception. The default is . + + + + Corresponds with the /checked[+|-] flag. + + - - Instructs the compiler to allow code that uses the unsafe - keyword. The default is . - - - - Corresponds with the /unsafe[+|-] flag. - - + + Instructs the compiler to allow code that uses the unsafe + keyword. The default is . + + + + Corresponds with the /unsafe[+|-] flag. + + - - Causes the compiler to only accept syntax that is included in a - given specification. - - - - Corresponds with the /langversion flag. - - + + Causes the compiler to only accept syntax that is included in a + given specification. + + + + Corresponds with the /langversion flag. + + - - Specifies whether the compiler should perform optimizations to the - make output files smaller, faster, and more effecient. The default - is . - - - if the compiler should perform optimizations; - otherwise, . - - - - Corresponds with the /optimize[+|-] flag. - - + + Specifies whether the compiler should perform optimizations to the + make output files smaller, faster, and more effecient. The default + is . + + + if the compiler should perform optimizations; + otherwise, . + + + + Corresponds with the /optimize[+|-] flag. + + - - Specifies which platform version of common language runtime (CLR) - can run the output file. - - - The platform version of common language runtime (CLR) that can run - the output file. - - - - Corresponds with the /platform flag. - - + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + - - Specifies the warning level for the compiler to display. Valid values - are 0-4. The default is 4. - - - The warning level for the compiler to display. - - - - Corresponds with the /warn flag. - - + + Specifies the warning level for the compiler to display. Valid values + are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn flag. + + - - Specifies the code page to use for all source code files in the - compilation. - - - - Corresponds with the /codepage flag. - - + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + - - Specifies whether the compiler for the active target framework - supports generation of XML Documentation file. The default is - . - + + Specifies whether the compiler for the active target framework + supports generation of XML Documentation file. The default is + . + - - Specifies whether the compiler for the active target framework - supports limiting the platform on which the compiled code can run. - The default is . - + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + - - Specifies whether the compiler for the active target framework - supports accepting only a specific language syntax. - The default is . - + + Specifies whether the compiler for the active target framework + supports accepting only a specific language syntax. + The default is . + - - Gets the file extension required by the current compiler. - - - For the C# compiler, the file extension is always cs. - + + Gets the file extension required by the current compiler. + + + For the C# compiler, the file extension is always cs. + - - Gets the class name regular expression for the language of the - current compiler. - - - Class name regular expression for the language of the current - compiler. - + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + - - Gets the namespace regular expression for the language of the current compiler. - - - Namespace regular expression for the language of the current - compiler. - + + Gets the namespace regular expression for the language of the current compiler. + + + Namespace regular expression for the language of the current + compiler. + @@ -1315,61 +1315,61 @@ - - Converts a single file or group of files. - + + Converts a single file or group of files. + - - List of assemblies/executables to sign. - + + List of assemblies/executables to sign. + - - Specifies the filesystem path to the signing key. - + + Specifies the filesystem path to the signing key. + - - Specifies the key container. - + + Specifies the key container. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Compiles ILASM programs. - - - - Compiles helloworld.il to helloworld.exe. - - - - - - - - ]]> - - + + Compiles ILASM programs. + + + + Compiles helloworld.il to helloworld.exe. + + + + + + + + ]]> + + - - Compiles the sources. - + + Compiles the sources. + - - Writes the compiler options. - + + Writes the compiler options. + @@ -1402,262 +1402,262 @@ - - Determines whether or not compilation is needed. - - - if compilation is needed; otherwise, - . - + + Determines whether or not compilation is needed. + + + if compilation is needed; otherwise, + . + - - Specifies whether or not the compiler should measure and report - the compilation times. - - - if the compilation times should be - measured and reported; otherwise, . The - default is . - - - - Corresponds to the /CLOCK flag. - - + + Specifies whether or not the compiler should measure and report + the compilation times. + + + if the compilation times should be + measured and reported; otherwise, . The + default is . + + + + Corresponds to the /CLOCK flag. + + - - Specifies whether or not the compiler should generate debug - information. - - - if debug information should be generated; - otherwise, . The default is - . - - - - Corresponds to the /DEBUG flag. - - + + Specifies whether or not the compiler should generate debug + information. + + + if debug information should be generated; + otherwise, . The default is + . + + + + Corresponds to the /DEBUG flag. + + - - Specifies whether or not the compiler should attempt to create a - PE file even if compilation errors have been reported. - - - if a PE file has to be created even if - compilation errors have been reported; otherwise, - . The default is . - - - - Corresponds to the /ERROR flag. - - + + Specifies whether or not the compiler should attempt to create a + PE file even if compilation errors have been reported. + + + if a PE file has to be created even if + compilation errors have been reported; otherwise, + . The default is . + + + + Corresponds to the /ERROR flag. + + - - Instructs NAnt to recompile the output file regardless of the file - timestamps. - - - if the output file should be recompiled - regardless of its timestamps; otherwise . - The default is . - + + Instructs NAnt to recompile the output file regardless of the file + timestamps. + + + if the output file should be recompiled + regardless of its timestamps; otherwise . + The default is . + - - Specifies whether or not the compiler should type a formatted - listing of the compilation result. - - - if a formatted listing of the compilation - result should be typed; otherwise, . The - default is . - - - - Corresponds to the /LISTING flag. - - + + Specifies whether or not the compiler should type a formatted + listing of the compilation result. + + + if a formatted listing of the compilation + result should be typed; otherwise, . The + default is . + + + + Corresponds to the /LISTING flag. + + - - Instructs the compiler to set the FileAlignment value in - the PE header. - - - An that represents the FileAlignment - value to set in the PE header. The value must be a power of 2, in - range from 512 to 65536. - - - - Corresponds to the /ALIGNMENT flag. - - + + Instructs the compiler to set the FileAlignment value in + the PE header. + + + An that represents the FileAlignment + value to set in the PE header. The value must be a power of 2, in + range from 512 to 65536. + + + + Corresponds to the /ALIGNMENT flag. + + - - Instructs the compiler to set the ImageBase value in - the PE header. - - - A that represents the ImageBase - value to set in the PE header. - - - - Corresponds to the /BASE flag. - - + + Instructs the compiler to set the ImageBase value in + the PE header. + + + A that represents the ImageBase + value to set in the PE header. + + + + Corresponds to the /BASE flag. + + - - Instructs the compiler to set the Flags value in the CLR - header. - - - An that represents the Flags - value to set in the CLR header. The most frequently value are 1 - (pre-IL code) and 2 (mixed code). The third bit indicating that - the PE file is strong signed, is ignored. - - - - Corresponds to the /FLAGS flag. - - + + Instructs the compiler to set the Flags value in the CLR + header. + + + An that represents the Flags + value to set in the CLR header. The most frequently value are 1 + (pre-IL code) and 2 (mixed code). The third bit indicating that + the PE file is strong signed, is ignored. + + + + Corresponds to the /FLAGS flag. + + - - Instructs the compiler to set the Subsystem value in the PE - header. - - - An that represents the Subsystem - value to set in the PE header. The most frequently value are 3 - (console application) and 2 (GUI application). - - - - Corresponds to the /SUBSYSTEM flag. - - + + Instructs the compiler to set the Subsystem value in the PE + header. + + + An that represents the Subsystem + value to set in the PE header. The most frequently value are 3 + (console application) and 2 (GUI application). + + + + Corresponds to the /SUBSYSTEM flag. + + - - Specifies which output type should be generated. - - - A that contains the target type. - Possible values are dll and exe. - - - - Corresponds to the /OUTPUT flag. - - + + Specifies which output type should be generated. + + + A that contains the target type. + Possible values are dll and exe. + + + + Corresponds to the /OUTPUT flag. + + - - Instructs the compiler to generate a strong signature of the PE - file. - - - A that contains the private - encryption key. - - - - Corresponds to the /KEY=keysource]]> - flag. - - + + Instructs the compiler to generate a strong signature of the PE + file. + + + A that contains the private + encryption key. + + + + Corresponds to the /KEY=keysource]]> + flag. + + - - Instructs the compiler to generate a strong signature of the PE - file. - - - A that represents the file - containing the private encryption key. - - - - Corresponds to the /KEY=keyfile]]> - flag. - - + + Instructs the compiler to generate a strong signature of the PE + file. + + + A that represents the file + containing the private encryption key. + + + + Corresponds to the /KEY=keyfile]]> + flag. + + - - Specifies the name of the output file created by the compiler. - - - A that represents the name of - the output file. - - - - Corresponds to the /OUTPUT flag. - - + + Specifies the name of the output file created by the compiler. + + + A that represents the name of + the output file. + + + + Corresponds to the /OUTPUT flag. + + - - Instructs the compiler to link the specified unmanaged resource - file into the resulting PE file. - - - A that represents the unmanaged - resource file to link. - - - - Corresponds to the /RESOURCE flag. - - + + Instructs the compiler to link the specified unmanaged resource + file into the resulting PE file. + + + A that represents the unmanaged + resource file to link. + + + + Corresponds to the /RESOURCE flag. + + - - Specifies the set of source files to compile. - - - A that represents the set - of source files to compile. - + + Specifies the set of source files to compile. + + + A that represents the set + of source files to compile. + - - Gets the command-line arguments for the external program. - - - A that contains the command-line - arguments for the external program. - + + Gets the command-line arguments for the external program. + + + A that contains the command-line + arguments for the external program. + - - Compiles JScript.NET programs. - - - Compile helloworld.js to helloworld.exe. - - - - - - - ]]> - - + + Compiles JScript.NET programs. + + + Compile helloworld.js to helloworld.exe. + + + + + + + ]]> + + @@ -1672,16 +1672,16 @@ to which the compiler options should be written. - - Automatically references assemblies if they have the same name as - an imported namespace or as a type annotation when declaring a - variable. The default is . - - - - Corresponds with the /autoref flag. - - + + Automatically references assemblies if they have the same name as + an imported namespace or as a type annotation when declaring a + variable. The default is . + + + + Corresponds with the /autoref flag. + + @@ -1696,216 +1696,216 @@ - - Specifies which platform version of common language runtime (CLR) - can run the output file. - - - The platform version of common language runtime (CLR) that can run - the output file. - - - - Corresponds with the /platform flag. - - + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + - - Causes the compiler to generate errors for implicit method - overrides. The default is . - - - - Corresponds with the /versionsafe flag. - - + + Causes the compiler to generate errors for implicit method + overrides. The default is . + + + + Corresponds with the /versionsafe flag. + + - - Specifies the warning level for the compiler to display. Valid - values are 0-4. The default is 4. - - - The warning level for the compiler to display. - - - - Corresponds with the /warn flag. - - + + Specifies the warning level for the compiler to display. Valid + values are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn flag. + + - - Controls which warnings should be reported as errors. - - - Override to avoid exposing this to build authors, as the JScript.NET - compiler does not allow control over which warnings should be - reported as errors. - + + Controls which warnings should be reported as errors. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not allow control over which warnings should be + reported as errors. + - - Specifies a comma-separated list of warnings that should be suppressed - by the compiler. - - - Override to avoid exposing this to build authors, as the JScript.NET - compiler does not support package references. - + + Specifies a comma-separated list of warnings that should be suppressed + by the compiler. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support package references. + - - Specifies a list of warnings that you want the compiler to suppress. - - - Override to avoid exposing this to build authors, as the JScript.NET - compiler does not support suppressing warnings. - + + Specifies a list of warnings that you want the compiler to suppress. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support suppressing warnings. + - - Specifies the code page to use for all source code files in the - compilation. - - - - Corresponds with the /codepage flag. - - + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + - - Specifies the key pair container used to strongname the assembly. - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Specifies the key pair container used to strongname the assembly. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Specifies a strong name key file. - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Specifies a strong name key file. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Specifies whether to delay sign the assembly using only the public - portion of the strong name key. - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Specifies whether to delay sign the assembly using only the public + portion of the strong name key. + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Indicates whether the compiler for a given target framework supports - the "keycontainer" option. The default is . - - - . - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Indicates whether the compiler for a given target framework supports + the "keycontainer" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Indicates whether the compiler for a given target framework supports - the "keyfile" option. The default is . - - - . - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Indicates whether the compiler for a given target framework supports + the "keyfile" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Indicates whether the compiler for a given target framework supports - the "delaysign" option. The default is . - - - . - - - Override to avoid exposing this to build authors, as the JScript.NET - does not support this. - + + Indicates whether the compiler for a given target framework supports + the "delaysign" option. The default is . + + + . + + + Override to avoid exposing this to build authors, as the JScript.NET + does not support this. + - - Specifies whether the compiler for the active target framework - supports limiting the platform on which the compiled code can run. - The default is . - + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + - - Link the specified modules into this assembly. - - - Override to avoid exposing this to build authors, as the JScript.NET - compiler does not support linking modules. - + + Link the specified modules into this assembly. + + + Override to avoid exposing this to build authors, as the JScript.NET + compiler does not support linking modules. + - - Gets the file extension required by the current compiler. - - - For the JScript.NET compiler, the file extension is always js. - + + Gets the file extension required by the current compiler. + + + For the JScript.NET compiler, the file extension is always js. + - - Gets the class name regular expression for the language of the - current compiler. - - - Class name regular expression for the language of the current - compiler. - + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + - - Gets the namespace regular expression for the language of the - current compiler. - - - Namespace regular expression for the language of the current - compiler. - + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + - - Generates a .licence file from a .licx file. - - - - If no output file is specified, the default filename is the name of the - target file with the extension .licenses appended. - - - - - Generate the file component.exe.licenses file from component.licx. - - - - ]]> - - + + Generates a .licence file from a .licx file. + + + + If no output file is specified, the default filename is the name of the + target file with the extension .licenses appended. + + + + + Generate the file component.exe.licenses file from component.licx. + + + + ]]> + + @@ -1920,104 +1920,104 @@ The of which the should be updated. - - Generates the license file. - + + Generates the license file. + - - Determines whether the .licenses file needs to be recompiled - or is uptodate. - - The .licenses file. - - if the .licenses file needs compiling; - otherwise, . - + + Determines whether the .licenses file needs to be recompiled + or is uptodate. + + The .licenses file. + + if the .licenses file needs compiling; + otherwise, . + - - Input file to process. - + + Input file to process. + - - Name of the license file to output. - + + Name of the license file to output. + - - Names of the references to scan for the licensed component. - + + Names of the references to scan for the licensed component. + - - Specifies the executable for which the .licenses file is generated. - + + Specifies the executable for which the .licenses file is generated. + - - Specifies the executable for which the .licenses file is generated. - + + Specifies the executable for which the .licenses file is generated. + - - Indicates whether assembly references are supported by the current - target framework. The default is . - - - Applies only to frameworks having a command line tool for compiling - licenses files. - + + Indicates whether assembly references are supported by the current + target framework. The default is . + + + Applies only to frameworks having a command line tool for compiling + licenses files. + - - Indicates whether the current target framework has a command line - tool for compiling licenses files. The default is - . - + + Indicates whether the current target framework has a command line + tool for compiling licenses files. The default is + . + - - Gets the working directory for the application. - - - The working directory for the application. - + + Gets the working directory for the application. + + + The working directory for the application. + - - The command-line arguments for the external program. - - - Override to avoid exposing these elements in build file. - + + The command-line arguments for the external program. + + + Override to avoid exposing these elements in build file. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Gets the filename of the external program to start. - - - The filename of the external program. - - - Override in derived classes to explicitly set the location of the - external tool. - + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + - - Responsible for reading the license and writing them to a license - file. - + + Responsible for reading the license and writing them to a license + file. + @@ -2039,15 +2039,15 @@ The .licenses file to create. - - Determines whether the given object is serializable in binary - format. - - The object to check. - - if is - serializable in binary format; otherwise, . - + + Determines whether the given object is serializable in binary + format. + + The object to check. + + if is + serializable in binary format; otherwise, . + @@ -2124,14 +2124,14 @@ - - Initializes the taks and verifies the parameters. - + + Initializes the taks and verifies the parameters. + - - Generates an NDoc project and builds the documentation. - + + Generates an NDoc project and builds the documentation. + @@ -2167,119 +2167,119 @@ for which expansion should be performed. - - Use Reflection to set HtmplHelp._htmlHelpCompiler private field for MSDN Documentor. - Ndoc could not handle 64bit installations and is not actively developed anymore. - - Active documentor - Path to hhc.exe + + Use Reflection to set HtmplHelp._htmlHelpCompiler private field for MSDN Documentor. + Ndoc could not handle 64bit installations and is not actively developed anymore. + + Active documentor + Path to hhc.exe - - Searches in %ProgramFiles(x86)%\HTML Help Workshop and %ProgramFiles%\HTML Help Workshop - for hhc.exe. If not found let ndoc msdn documentor search itself - - the path to hhc.exe if found, null otherwise + + Searches in %ProgramFiles(x86)%\HTML Help Workshop and %ProgramFiles%\HTML Help Workshop + for hhc.exe. If not found let ndoc msdn documentor search itself + + the path to hhc.exe if found, null otherwise - - The set of assemblies to document. - + + The set of assemblies to document. + - - The set of namespace summary files. - + + The set of namespace summary files. + - - Specifies the formats in which the documentation should be generated. - + + Specifies the formats in which the documentation should be generated. + - - Collection of additional directories to search for referenced - assemblies. - + + Collection of additional directories to search for referenced + assemblies. + - - Installs or removes .NET Services. - - - - This tasks provides the same functionality as the regsvcs tool - provided in the .NET SDK. - - - It performs the following actions: - - - - Loads and registers an assembly. - - - Generates, registers, and installs a type library into a specified COM+ application. - - - Configures services that are added programmatically to your class. - - - - Refer to the .NET Services Installation Tool (Regsvcs.exe) for more information. - - - - - Adds all public classes contained in myTest.dll to a COM+ - application and produces the myTest.tlb type library. If the - application already exists, it is overwritten. - - - - ]]> - - - - - Adds all public classes contained in myTest.dll to myTargetApp - and produces the myTest.tlb type library. If the application already - exists, it is overwritten. - - - - ]]> - - - - - Adds all public classes contained in myTest.dll to a COM+ - application and produces the myTest.tlb type library. A new - application is always created. - - - - ]]> - - - - - Uninstalls the COM+ application contained in myTest.dll. - - - - ]]> - - + + Installs or removes .NET Services. + + + + This tasks provides the same functionality as the regsvcs tool + provided in the .NET SDK. + + + It performs the following actions: + + + + Loads and registers an assembly. + + + Generates, registers, and installs a type library into a specified COM+ application. + + + Configures services that are added programmatically to your class. + + + + Refer to the .NET Services Installation Tool (Regsvcs.exe) for more information. + + + + + Adds all public classes contained in myTest.dll to a COM+ + application and produces the myTest.tlb type library. If the + application already exists, it is overwritten. + + + + ]]> + + + + + Adds all public classes contained in myTest.dll to myTargetApp + and produces the myTest.tlb type library. If the application already + exists, it is overwritten. + + + + ]]> + + + + + Adds all public classes contained in myTest.dll to a COM+ + application and produces the myTest.tlb type library. A new + application is always created. + + + + ]]> + + + + + Uninstalls the COM+ application contained in myTest.dll. + + + + ]]> + + - - Performs the specified action. - + + Performs the specified action. + @@ -2288,78 +2288,78 @@ - - The source assembly file. - - - The assembly must be signed with a strong name. - + + The source assembly file. + + + The assembly must be signed with a strong name. + - - Specifies the type library file to install. - + + Specifies the type library file to install. + - - Uses an existing type library. The default is . - + + Uses an existing type library. The default is . + - - Do not reconfigure an existing target application. - The default is . - + + Do not reconfigure an existing target application. + The default is . + - - Configures components only; ignores methods and interfaces. - The default is . - + + Configures components only; ignores methods and interfaces. + The default is . + - - Expect an existing application. The default is . - + + Expect an existing application. The default is . + - - Specifies the name of the COM+ application to either find or create. - + + Specifies the name of the COM+ application to either find or create. + - - Specifies the name or id of the COM+ application to either find or - create. - + + Specifies the name or id of the COM+ application to either find or + create. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Defines the possible actions for a .NET Service. - + + Defines the possible actions for a .NET Service. + - - Finds or creates the target application. - + + Finds or creates the target application. + - - Creates the target application. - + + Creates the target application. + - - Uninstalls the target application. - + + Uninstalls the target application. + @@ -2405,155 +2405,155 @@ The of which the should be updated. - - Converts a single file or group of files. - + + Converts a single file or group of files. + - - Cleans up generated files. - + + Cleans up generated files. + - - Determines whether the specified input file needs to be compiled. - - The input file. - The output file. - - if the input file need to be compiled; - otherwise . - + + Determines whether the specified input file needs to be compiled. + + The input file. + The output file. + + if the input file need to be compiled; + otherwise . + - - Determines the full path and extension for the output file. - - The output file for which the full path and extension should be determined. - - The full path (with extensions) for the specified file. - + + Determines the full path and extension for the output file. + + The output file for which the full path and extension should be determined. + + The full path (with extensions) for the specified file. + - - Determines whether the specified resource file references third - party assemblies by checking whether a <data> element exists - with a "type" attribute that does not start with - "System.". - - The resource file to check. - - if the resource file references third party - assemblies, or an error occurred; otherwise, . - - - This check will only be accurate for 1.0 resource file, but the - 2.0 resx files can only be compiled with a resgen tool that supports - assembly references, so this method will not be used anyway. - + + Determines whether the specified resource file references third + party assemblies by checking whether a <data> element exists + with a "type" attribute that does not start with + "System.". + + The resource file to check. + + if the resource file references third party + assemblies, or an error occurred; otherwise, . + + + This check will only be accurate for 1.0 resource file, but the + 2.0 resx files can only be compiled with a resgen tool that supports + assembly references, so this method will not be used anyway. + - - Returns a list of external file references for the specified file. - - The resx file for which a list of external file references should be returned. - - A list of external file references for the specified file, or - if does not - exist or does not support external file references. - + + Returns a list of external file references for the specified file. + + The resx file for which a list of external file references should be returned. + + A list of external file references for the specified file, or + if does not + exist or does not support external file references. + - - Input file to process. - - - The full path to the input file. - + + Input file to process. + + + The full path to the input file. + - - The resource file to output. - + + The resource file to output. + - - The target type. The default is resources. - + + The target type. The default is resources. + - - The directory to which outputs will be stored. - + + The directory to which outputs will be stored. + - - Use each source file's directory as the current directory for - resolving relative file paths. The default is . - Only supported when targeting .NET 2.0 (or higher). - + + Use each source file's directory as the current directory for + resolving relative file paths. The default is . + Only supported when targeting .NET 2.0 (or higher). + - - Takes a list of .resx or .txt files to convert to .resources files. - + + Takes a list of .resx or .txt files to convert to .resources files. + - - Reference metadata from the specified assembly files. - + + Reference metadata from the specified assembly files. + - - Indicates whether assembly references are supported by the - resgen tool for the current target framework. The default - is . - + + Indicates whether assembly references are supported by the + resgen tool for the current target framework. The default + is . + - - Indicates whether external file references are supported by the - resgen tool for the current target framework. The default - is . - + + Indicates whether external file references are supported by the + resgen tool for the current target framework. The default + is . + - - For internal use only ! - + + For internal use only ! + - - Gets the working directory for the application. - - - The working directory for the application. - + + Gets the working directory for the application. + + + The working directory for the application. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Gets the filename of the external program to start. - - - The filename of the external program. - - - Override in derived classes to explicitly set the location of the - external tool. - + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + - - For internal use only ! - + + For internal use only ! + @@ -2564,20 +2564,20 @@ The compiled resource. - - Gets the resource file to compile. - - - The resource file to compile. - + + Gets the resource file to compile. + + + The resource file to compile. + - - Gets the compiled resource file. - - - The compiled resource file. - + + Gets the compiled resource file. + + + The compiled resource file. + @@ -2770,48 +2770,48 @@ - - Initializes the task. - + + Initializes the task. + - - Executes the script block. - + + Executes the script block. + - - The language of the script block. Possible values are "VB", "vb", "VISUALBASIC", "C#", "c#", "CSHARP". - "JS", "js", "JSCRIPT" "VJS", "vjs", "JSHARP" or a fully-qualified name for a class implementing - . - + + The language of the script block. Possible values are "VB", "vb", "VISUALBASIC", "C#", "c#", "CSHARP". + "JS", "js", "JSCRIPT" "VJS", "vjs", "JSHARP" or a fully-qualified name for a class implementing + . + - - Any required references. - + + Any required references. + - - The name of the main class containing the static ScriptMain - entry point. - + + The name of the main class containing the static ScriptMain + entry point. + - - The namespace prefix for any custom functions defined in the script. - If ommitted the prefix will default to 'script' - + + The namespace prefix for any custom functions defined in the script. + If ommitted the prefix will default to 'script' + - - The namespaces to import. - + + The namespaces to import. + - - The code to execute. - + + The code to execute. + @@ -2888,28 +2888,28 @@ to which the compiler options should be written. - - Determines whether compilation is needed. - + + Determines whether compilation is needed. + - - The preferred base address at which to load a DLL. The default base - address for a DLL is set by the .NET Framework common language - runtime. - - - The preferred base address at which to load a DLL. - - - This address must be specified as a hexadecimal number. - + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address must be specified as a hexadecimal number. + - - Specifies the type of debugging information generated by the - compiler. The default is . - + + Specifies the type of debugging information generated by the + compiler. The default is . + @@ -2918,179 +2918,179 @@ - - The name of the XML documentation file to generate. Only supported - when targeting .NET 2.0 (or higher). - - - - Corresponds with the /doc: flag. - - + + The name of the XML documentation file to generate. Only supported + when targeting .NET 2.0 (or higher). + + + + Corresponds with the /doc: flag. + + - - Specifies whether the /imports option gets passed to the - compiler. - - - The value of this attribute is a string that contains one or more - namespaces separated by commas. - - - See the Microsoft.NET Framework SDK documentation for details. - - Example of an imports attribute - - + + Specifies whether the /imports option gets passed to the + compiler. + + + The value of this attribute is a string that contains one or more + namespaces separated by commas. + + + See the Microsoft.NET Framework SDK documentation for details. + + Example of an imports attribute + + - - The namespaces to import. - + + The namespaces to import. + - - Instructs the compiler not to reference standard libraries - (system.dll and VBC.RSP). The default is . - Only supported when targeting .NET 2.0 (or higher). - - - - Corresponds with the /nostdlib flag. - - + + Instructs the compiler not to reference standard libraries + (system.dll and VBC.RSP). The default is . + Only supported when targeting .NET 2.0 (or higher). + + + + Corresponds with the /nostdlib flag. + + - - Specifies whether /optioncompare option gets passed to the - compiler. - - - text, binary, or an empty string. If the value is - or an empty string, the option will not be - passed to the compiler. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether /optioncompare option gets passed to the + compiler. + + + text, binary, or an empty string. If the value is + or an empty string, the option will not be + passed to the compiler. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the /optionexplicit option gets passed to - the compiler. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /optionexplicit option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the /optimize option gets passed to the - compiler. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /optimize option gets passed to the + compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the /optionstrict option gets passed to - the compiler. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /optionstrict option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies which platform version of common language runtime (CLR) - can run the output file. - - - The platform version of common language runtime (CLR) that can run - the output file. - - - - Corresponds with the /platform flag. - - + + Specifies which platform version of common language runtime (CLR) + can run the output file. + + + The platform version of common language runtime (CLR) that can run + the output file. + + + + Corresponds with the /platform flag. + + - - Specifies whether the /removeintchecks option gets passed to - the compiler. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /removeintchecks option gets passed to + the compiler. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the /rootnamespace option gets passed to - the compiler. - - - The value of this attribute is a string that contains the root - namespace of the project. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the /rootnamespace option gets passed to + the compiler. + + + The value of this attribute is a string that contains the root + namespace of the project. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether the compiler for the active target framework - supports generation of XML Documentation file. The default is - . - + + Specifies whether the compiler for the active target framework + supports generation of XML Documentation file. The default is + . + - - Specifies whether the compiler for the active target framework - supports NOT referencing standard libraries (system.dll and VBC.RSP). - The default is . - + + Specifies whether the compiler for the active target framework + supports NOT referencing standard libraries (system.dll and VBC.RSP). + The default is . + - - Specifies whether the compiler for the active target framework - supports limiting the platform on which the compiled code can run. - The default is . - + + Specifies whether the compiler for the active target framework + supports limiting the platform on which the compiled code can run. + The default is . + - - Gets the file extension required by the current compiler. - - - For the VB.NET compiler, the file extension is always vb. - + + Gets the file extension required by the current compiler. + + + For the VB.NET compiler, the file extension is always vb. + - - Gets the class name regular expression for the language of the - current compiler. - - - Class name regular expression for the language of the current - compiler. - + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + - - Gets the namespace regular expression for the language of the - current compiler. - - - Namespace regular expression for the language of the current - compiler. - + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + @@ -3142,24 +3142,24 @@ to which the compiler options should be written. - - The preferred base address at which to load a DLL. The default base - address for a DLL is set by the .NET Framework common language - runtime. - - - The preferred base address at which to load a DLL. - - - This address can be specified as a decimal, hexadecimal, or octal - number. - + + The preferred base address at which to load a DLL. The default base + address for a DLL is set by the .NET Framework common language + runtime. + + + The preferred base address at which to load a DLL. + + + This address can be specified as a decimal, hexadecimal, or octal + number. + - - Specifies the type of debugging information generated by the - compiler. The default is . - + + Specifies the type of debugging information generated by the + compiler. The default is . + @@ -3168,185 +3168,185 @@ - - Specifies whether package-scoped members are accessible outside of - the assembly. In other words, package scope is treated as assembly - scope when emitting metadata. The default is . - - - if the option should be passed to the compiler; - otherwise, . - - - - Corresponds to the /securescoping flag. - - - See the Visual J# Reference for details. - - - - ]]> - + + Specifies whether package-scoped members are accessible outside of + the assembly. In other words, package scope is treated as assembly + scope when emitting metadata. The default is . + + + if the option should be passed to the compiler; + otherwise, . + + + + Corresponds to the /securescoping flag. + + + See the Visual J# Reference for details. + + + + ]]> + - - Specifies whether to disable language extensions. - - - The value of this property must be either all, net, - or an empty string. - - - - Corresponds to the /x flag. - - - See the Visual J# Reference for details. - - - - To disable only the .NET Framework extensions: - ]]> - To disable the .NET Framework extensions and the VJ++ 6.0 extensions: - ]]> - + + Specifies whether to disable language extensions. + + + The value of this property must be either all, net, + or an empty string. + + + + Corresponds to the /x flag. + + + See the Visual J# Reference for details. + + + + To disable only the .NET Framework extensions: + ]]> + To disable the .NET Framework extensions and the VJ++ 6.0 extensions: + ]]> + - - Specifies the location of assemblies referenced by way of the /reference flag. - - - - Corresponds to the /libpath:dir[;dir2] flag. - - - See the Visual J# Reference for details. - - + + Specifies the location of assemblies referenced by way of the /reference flag. + + + + Corresponds to the /libpath:dir[;dir2] flag. + + + See the Visual J# Reference for details. + + - - Associate Java-language/COM package names. - - - The value of this propery. must be package=namespace, @filename, - or an empty string. - - - - Corresponds to the /jcpa:package=namespace and /jcpa:@filename flags. - - - See the Visual J# Reference for details. - - - - Map package 'x' to namespace 'y': - ]]> - + + Associate Java-language/COM package names. + + + The value of this propery. must be package=namespace, @filename, + or an empty string. + + + + Corresponds to the /jcpa:package=namespace and /jcpa:@filename flags. + + + See the Visual J# Reference for details. + + + + Map package 'x' to namespace 'y': + ]]> + - - Specifies the code page to use for all source code files in the - compilation. - - - - Corresponds with the /codepage flag. - - - See the Visual J# Reference for details. - - + + Specifies the code page to use for all source code files in the + compilation. + + + + Corresponds with the /codepage flag. + + + See the Visual J# Reference for details. + + - - Specifies the warning level for the compiler to display. Valid values - are 0-4. The default is 4. - - - The warning level for the compiler to display. - - - - Corresponds with the /warn option. - - + + Specifies the warning level for the compiler to display. Valid values + are 0-4. The default is 4. + + + The warning level for the compiler to display. + + + + Corresponds with the /warn option. + + - - Controls which warnings should be reported as errors. - - - Override to avoid exposing this to build authors, as the Visual J# - compiler does not allow control over which warnings should be - reported as errors. - + + Controls which warnings should be reported as errors. + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not allow control over which warnings should be + reported as errors. + - - Reference packages - - - Override to avoid exposing this to build authors, as the Visual J# - compiler does not support package references. - + + Reference packages + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not support package references. + - - Link the specified modules into this assembly. - - - Override to avoid exposing this to build authors, as the Visual J# - compiler does not support linking modules. - + + Link the specified modules into this assembly. + + + Override to avoid exposing this to build authors, as the Visual J# + compiler does not support linking modules. + - - Gets the file extension required by the current compiler. - - - For the J# compiler, the file extension is always jsl. - + + Gets the file extension required by the current compiler. + + + For the J# compiler, the file extension is always jsl. + - - Gets the class name regular expression for the language of the - current compiler. - - - Class name regular expression for the language of the current - compiler. - + + Gets the class name regular expression for the language of the + current compiler. + + + Class name regular expression for the language of the current + compiler. + - - Gets the namespace regular expression for the language of the - current compiler. - - - Namespace regular expression for the language of the current - compiler. - + + Gets the namespace regular expression for the language of the + current compiler. + + + Namespace regular expression for the language of the current + compiler. + - - Override to avoid exposing the configuration setting for this - task as Visual J# will never support package references. - - - , as the Visual J# compiler will never - support package references. - + + Override to avoid exposing the configuration setting for this + task as Visual J# will never support package references. + + + , as the Visual J# compiler will never + support package references. + - - Represents an assembly-level attribute. - + + Represents an assembly-level attribute. + @@ -3355,43 +3355,43 @@ - - Typename of the assembly-level attribute. - + + Typename of the assembly-level attribute. + - - Value of the attribute. - + + Value of the attribute. + - - If then the value of the attribute will be - set as is, without actually looking for a matching constructor or - named properties. The default is . - - - if the value of the attribute should be set - as is; otherwise, . - + + If then the value of the attribute will be + set as is, without actually looking for a matching constructor or + named properties. The default is . + + + if the value of the attribute should be set + as is; otherwise, . + - - Indicates if the attribute should be generated. - - - if the attribute should be generated; - otherwise, . - + + Indicates if the attribute should be generated. + + + if the attribute should be generated; + otherwise, . + - - Indicates if the attribute should be not generated. - - - if the attribute should be not generated; - otherwise, . - + + Indicates if the attribute should be not generated. + + + if the attribute should be not generated; + otherwise, . + @@ -3458,11 +3458,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -3495,10 +3495,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -3519,28 +3519,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -3559,11 +3559,11 @@ - - override this. We will always use the base directory of the parent. - overriding without the TaskAttribute attribute prevents it being set - in the source xml - + + override this. We will always use the base directory of the parent. + overriding without the TaskAttribute attribute prevents it being set + in the source xml + @@ -3657,17 +3657,17 @@ - - copy constructor for FileSet. Required in order to - assign references of FileSet type where - AssemblyFileSets are used - - + + copy constructor for FileSet. Required in order to + assign references of FileSet type where + AssemblyFileSets are used + + - - Do a normal scan and then resolve assemblies. - + + Do a normal scan and then resolve assemblies. + @@ -3676,37 +3676,37 @@ - - Additional directories to search in for assembly references. - - - - loosely Corresponds with the /lib[path]: flag of the various compiler tasks. - - + + Additional directories to search in for assembly references. + + + + loosely Corresponds with the /lib[path]: flag of the various compiler tasks. + + - - Represents a compiler warning. - + + Represents a compiler warning. + - - A warning number, or comma-separated list of warnings, that you want - the compiler to suppress or report. - + + A warning number, or comma-separated list of warnings, that you want + the compiler to suppress or report. + - - If then the element will be processed; - otherwise, skipped. The default is . - + + If then the element will be processed; + otherwise, skipped. The default is . + - - If then the element will be skipped; - otherwise, processed. The default is . - + + If then the element will be skipped; + otherwise, processed. The default is . + @@ -3760,11 +3760,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -3797,10 +3797,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -3815,28 +3815,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -3876,25 +3876,25 @@ - - Create no debug information. - + + Create no debug information. + - - Enable attaching a debugger to the running program. - + + Enable attaching a debugger to the running program. + - - Enable attaching a debugger to the running program. - + + Enable attaching a debugger to the running program. + - - Only display assembler when the running program is attached to the - debugger. - + + Only display assembler when the running program is attached to the + debugger. + @@ -3949,20 +3949,20 @@ - - Not specified. - + + Not specified. + - - Fully sign the assembly. - + + Fully sign the assembly. + - - Only place the public key in the assembly, allowing the signature - to be added later. - + + Only place the public key in the assembly, allowing the signature + to be added later. + @@ -3991,12 +3991,12 @@ - - Represents an embedded resource. - - - Do not yet expose this to build authors. - + + Represents an embedded resource. + + + Do not yet expose this to build authors. + @@ -4007,20 +4007,20 @@ The manifest resource name of the embedded resource. - - Gets the physical location of the resource to embed. - - - The physical location of the resource to embed. - + + Gets the physical location of the resource to embed. + + + The physical location of the resource to embed. + - - Gets the manifest resource name to use when embedding the resource. - - - The manifest resource name to use when embedding the resource. - + + Gets the manifest resource name to use when embedding the resource. + + + The manifest resource name to use when embedding the resource. + @@ -4031,9 +4031,9 @@ - - Base class for collections that needs to be globally referencable. - + + Base class for collections that needs to be globally referencable. + @@ -4059,15 +4059,15 @@ - - Removes an item at a specific index. - - The zero-based index of the item to remove. + + Removes an item at a specific index. + + The zero-based index of the item to remove. - - Removes all items from the collection. - + + Removes all items from the collection. + @@ -4077,53 +4077,53 @@ The instance to verify. - - Checks whether the specified index is within the range of this - collection. - - The index to check. + + Checks whether the specified index is within the range of this + collection. + + The index to check. - - Gets a value indicating whether access to the collection is - synchronized (thread-safe). - - - . - + + Gets a value indicating whether access to the collection is + synchronized (thread-safe). + + + . + - - Gets the number of items in the collection. - - - The number of items in the collection. - + + Gets the number of items in the collection. + + + The number of items in the collection. + - - Gets an object that can be used to synchronize access to the - collection. - - - An object that can be used to synchronize access to the collection. - + + Gets an object that can be used to synchronize access to the + collection. + + + An object that can be used to synchronize access to the collection. + - - Gets a value indicating whether the collection has a fixed size. - - - . - + + Gets a value indicating whether the collection has a fixed size. + + + . + - - Gets a value indicating whether the collection has a fixed size. - - - . - + + Gets a value indicating whether the collection has a fixed size. + + + . + @@ -4254,10 +4254,10 @@ - - Gets or sets the item at the specified index. - - The zero-based index of the item to get or set. + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. @@ -4275,10 +4275,10 @@ - - Gets or sets the item at the specified index. - - The zero-based index of the item to get or set. + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. @@ -4293,61 +4293,61 @@ The collection that should be enumerated. - - Advances the enumerator to the next item of the collection. - - - if the enumerator was successfully advanced - to the next item; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first item in the collection. - + + Sets the enumerator to its initial position, which is before the + first item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Represents a metadata file without assembly manifest. - + + Represents a metadata file without assembly manifest. + - - Returns a textual representation of the module, which can be used as - argument for command-line tools. - - - A textual representation of the path, file[,target]. - + + Returns a textual representation of the module, which can be used as + argument for command-line tools. + + + A textual representation of the path, file[,target]. + - - The path of the module. - + + The path of the module. + - - File name where the module should be copied to before it is compiled - into an assembly. - + + File name where the module should be copied to before it is compiled + into an assembly. + @@ -4387,9 +4387,9 @@ The zero-based index in at which copying begins. - - Removes all items from the collection. - + + Removes all items from the collection. + @@ -4526,46 +4526,46 @@ - - Gets a value indicating whether access to the collection is - synchronized (thread-safe). - - - . - + + Gets a value indicating whether access to the collection is + synchronized (thread-safe). + + + . + - - Gets the number of items in the collection. - - - The number of items in the collection. - + + Gets the number of items in the collection. + + + The number of items in the collection. + - - Gets an object that can be used to synchronize access to the - collection. - - - An object that can be used to synchronize access to the collection. - + + Gets an object that can be used to synchronize access to the + collection. + + + An object that can be used to synchronize access to the collection. + - - Gets a value indicating whether the collection has a fixed size. - - - . - + + Gets a value indicating whether the collection has a fixed size. + + + . + - - Gets a value indicating whether the collection has a fixed size. - - - . - + + Gets a value indicating whether the collection has a fixed size. + + + . + @@ -4587,57 +4587,57 @@ The collection that should be enumerated. - - Advances the enumerator to the next item of the collection. - - - if the enumerator was successfully advanced - to the next item; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first item in the collection. - + + Sets the enumerator to its initial position, which is before the + first item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - - One or more modules to compile into an assembly. - - - - - Define a global <moduleset> that can be referenced by - other tasks or types. - - - - - - - ]]> - - + + + One or more modules to compile into an assembly. + + + + + Define a global <moduleset> that can be referenced by + other tasks or types. + + + + + + + ]]> + + @@ -4656,9 +4656,9 @@ - - Represents a namespace to import. - + + Represents a namespace to import. + @@ -4675,38 +4675,38 @@ is . - - The name of the namespace to import. - - - The name of the namespace to import. - + + The name of the namespace to import. + + + The name of the namespace to import. + - - The name of the namespace to import. - - - The name of the namespace to import. - + + The name of the namespace to import. + + + The name of the namespace to import. + - - Indicates if the import should be generated. - - - if the import should be generated; otherwise, - . - + + Indicates if the import should be generated. + + + if the import should be generated; otherwise, + . + - - Indicates if the import should be not generated. - - - if the import should be not generated; - otherwise, . - + + Indicates if the import should be not generated. + + + if the import should be not generated; + otherwise, . + @@ -4862,10 +4862,10 @@ - - Gets or sets the item at the specified index. - - The zero-based index of the item to get or set. + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. @@ -4882,10 +4882,10 @@ - - Gets or sets the item at the specified index. - - The zero-based index of the item to get or set. + + Gets or sets the item at the specified index. + + The zero-based index of the item to get or set. @@ -4900,62 +4900,62 @@ The collection that should be enumerated. - - Advances the enumerator to the next item of the collection. - - - if the enumerator was successfully advanced - to the next item; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next item of the collection. + + + if the enumerator was successfully advanced + to the next item; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first item in the collection. - + + Sets the enumerator to its initial position, which is before the + first item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Gets the current item in the collection. - - - The current item in the collection. - + + Gets the current item in the collection. + + + The current item in the collection. + - - Represents a package. - + + Represents a package. + - - Name of the package to reference. Multiple package can be specified - with a single element as a semi-colon separated list of - package names. - + + Name of the package to reference. Multiple package can be specified + with a single element as a semi-colon separated list of + package names. + - - Indicates if the package should be passed to the task. - If then the package will be passed; - otherwise, skipped. The default is . - + + Indicates if the package should be passed to the task. + If then the package will be passed; + otherwise, skipped. The default is . + - - Indicates if the package should not be passed to the task. - If then the package will be passed; - otherwise, skipped. The default is . - + + Indicates if the package should not be passed to the task. + If then the package will be passed; + otherwise, skipped. The default is . + @@ -5010,11 +5010,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -5047,10 +5047,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -5065,28 +5065,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -5099,12 +5099,12 @@ - - copy constructor for FileSet. Required in order to - assign references of FileSet type where - ResourceFileSet are used - - + + copy constructor for FileSet. Required in order to + assign references of FileSet type where + ResourceFileSet are used + + @@ -5115,41 +5115,41 @@ - - Gets the manifest resource name for the specified resource file. - - The physical path of the resource file. - - The manifest resource name to be sent to the compiler. - + + Gets the manifest resource name for the specified resource file. + + The physical path of the resource file. + + The manifest resource name to be sent to the compiler. + - - Gets the manifest resource name for the file using both its physical - and logical path. - - The physical path of the resource file. - The logical location of the resource file. - - The manifest resource name to be sent to the compiler. - - - We use the relative path of the logical path, but the filename and - and the extension of the physical path to match VS.NET - + + Gets the manifest resource name for the file using both its physical + and logical path. + + The physical path of the resource file. + The logical location of the resource file. + + The manifest resource name to be sent to the compiler. + + + We use the relative path of the logical path, but the filename and + and the extension of the physical path to match VS.NET + - - Indicates the prefix to prepend to the actual resource. - This is usually the default namspace of the assembly. - + + Indicates the prefix to prepend to the actual resource. + This is usually the default namspace of the assembly. + - - Indicates whether prefixes should be dynamically generated by taking - the path of the resource relative to the basedir and appending it - to the specified prefix. The default is . - + + Indicates whether prefixes should be dynamically generated by taking + the path of the resource relative to the basedir and appending it + to the specified prefix. The default is . + @@ -5220,11 +5220,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -5257,10 +5257,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -5275,59 +5275,59 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Controls the behaviour of a compiler with regards to the reporting of - warnings. - - - - Instruct a compiler to report warning 0519 as an error. - - - - - - ]]> - - - - - Instruct a compiler not to report warning 0519 as an error, if the - release property is . - - - - - - ]]> - - + + Controls the behaviour of a compiler with regards to the reporting of + warnings. + + + + Instruct a compiler to report warning 0519 as an error. + + + + + + ]]> + + + + + Instruct a compiler not to report warning 0519 as an error, if the + release property is . + + + + + + ]]> + + diff --git a/example_scripts/Tools/nant/bin/NAnt.MSNetTasks.xml b/example_scripts/Tools/nant/bin/NAnt.MSNetTasks.xml index 51409dc..8327211 100644 --- a/example_scripts/Tools/nant/bin/NAnt.MSNetTasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.MSNetTasks.xml @@ -50,20 +50,20 @@ - - Checks whether the task is initialized with valid attributes. - + + Checks whether the task is initialized with valid attributes. + - - Disassembles the PE file(s). - + + Disassembles the PE file(s). + - - Disassembles the specified PE file. - - The PE file to disassemble. + + Disassembles the specified PE file. + + The PE file to disassemble. @@ -80,9 +80,9 @@ The path of the output file could not be determined. - - Writes the disassembler options. - + + Writes the disassembler options. + @@ -115,76 +115,76 @@ - - Determines whether or not disassembling is needed. - - - if disassembling is needed; otherwise, - . - + + Determines whether or not disassembling is needed. + + + if disassembling is needed; otherwise, + . + - - Specifies whether or not the disassembler should combine the - /HEADER, /BYTE, and /TOKENS options. The default - is . - - - if the disassembler should combine the - /HEADER, /BYTE, and /TOKENS options; - otherwise, . The default is - . - - - - Corresponds to the /ALL flag. - - + + Specifies whether or not the disassembler should combine the + /HEADER, /BYTE, and /TOKENS options. The default + is . + + + if the disassembler should combine the + /HEADER, /BYTE, and /TOKENS options; + otherwise, . The default is + . + + + + Corresponds to the /ALL flag. + + - - Specifies whether or not the disassembler should generate the - IL stream bytes (in hexadecimal notation) as instruction comments. - The default is . - - - if the IL stream bytes should be generated - as instruction comments; otherwise, . The - default is . - - - - Corresponds to the /BYTE flag. - - + + Specifies whether or not the disassembler should generate the + IL stream bytes (in hexadecimal notation) as instruction comments. + The default is . + + + if the IL stream bytes should be generated + as instruction comments; otherwise, . The + default is . + + + + Corresponds to the /BYTE flag. + + - - Instructs NAnt to rebuild the output file regardless of the file - timestamps. The default is . - - - if the output file should be rebuilt - regardless of its timestamps; otherwise . - The default is . - + + Instructs NAnt to rebuild the output file regardless of the file + timestamps. The default is . + + + if the output file should be rebuilt + regardless of its timestamps; otherwise . + The default is . + - - Specifies whether or not the disassembler should include PE header - information and runtime header information in the output. The default - is . - - - if PE header information and runtime header - information should be included in the output; otherwise, - . The default is . - - - - Corresponds to the /HEADER flag. - - + + Specifies whether or not the disassembler should include PE header + information and runtime header information in the output. The default + is . + + + if PE header information and runtime header + information should be included in the output; otherwise, + . The default is . + + + + Corresponds to the /HEADER flag. + + @@ -196,36 +196,36 @@ - - Specifies whether or not the disassembler should include - references to original source lines. The default is . - - - if references to original source lines - should be included; otherwise, . The - default is . - - - - Corresponds to the /LINENUM flag. - - + + Specifies whether or not the disassembler should include + references to original source lines. The default is . + + + if references to original source lines + should be included; otherwise, . The + default is . + + + + Corresponds to the /LINENUM flag. + + - - Specifies whether or not the disassembler should suppress ILASM - code output. The default is . - - - if ILASM code output should be suppresses; - otherwise, . The default is - . - - - - Corresponds to the /NOIL flag. - - + + Specifies whether or not the disassembler should suppress ILASM + code output. The default is . + + + if ILASM code output should be suppresses; + otherwise, . The default is + . + + + + Corresponds to the /NOIL flag. + + @@ -245,103 +245,103 @@ - - Specifies whether or not the disassembler should enclose all names - in single quotation marks. By default, only names that don't match - the ILASM definition of a simple name are quoted. The default is - . - - - if all names should be enclosed in single - quotation marks; otherwise, . The default - is . - - - - Corresponds to the /QUOTEALLNAMES flag. - - + + Specifies whether or not the disassembler should enclose all names + in single quotation marks. By default, only names that don't match + the ILASM definition of a simple name are quoted. The default is + . + + + if all names should be enclosed in single + quotation marks; otherwise, . The default + is . + + + + Corresponds to the /QUOTEALLNAMES flag. + + - - Specifies whether or not the disassembler should generate - structured exception handling clauses in canonical (label) form. - The default is . - - - if structured exception handling clauses - should be generated in canonical form; otherwise, - . The default is . - - - - Corresponds to the /RAWEH flag. - - + + Specifies whether or not the disassembler should generate + structured exception handling clauses in canonical (label) form. + The default is . + + + if structured exception handling clauses + should be generated in canonical form; otherwise, + . The default is . + + + + Corresponds to the /RAWEH flag. + + - - Specifies whether or not the disassembler should generate - original source lines as comments. The default is . - - - if original source lines should be - generated as comments; otherwise, . - The default is . - - - - Corresponds to the /SOURCE flag. - - + + Specifies whether or not the disassembler should generate + original source lines as comments. The default is . + + + if original source lines should be + generated as comments; otherwise, . + The default is . + + + + Corresponds to the /SOURCE flag. + + - - Specifies whether or not the disassembler should generate metadata - token values as comments. The default is . - - - if metadata token values should be - generated as comments; otherwise, . The - default is . - - - - Corresponds to the /TOKENS flag. - - + + Specifies whether or not the disassembler should generate metadata + token values as comments. The default is . + + + if metadata token values should be + generated as comments; otherwise, . The + default is . + + + + Corresponds to the /TOKENS flag. + + - - Specifies whether or not the disassembler should use the UNICODE - encoding when generating the output. The default is ANSI. - - - if the output should be generated using - the UNICODE encoding; otherwise, . The - default is . - - - - Corresponds to the /UNICODE flag. - - + + Specifies whether or not the disassembler should use the UNICODE + encoding when generating the output. The default is ANSI. + + + if the output should be generated using + the UNICODE encoding; otherwise, . The + default is . + + + + Corresponds to the /UNICODE flag. + + - - Specifies whether or not the disassembler should use the UTF-8 - encoding when generating the output. The default is ANSI. - - - if the output should be generated using - the UTF-8 encoding; otherwise, . The - default is . - - - - Corresponds to the /UTF8 flag. - - + + Specifies whether or not the disassembler should use the UTF-8 + encoding when generating the output. The default is ANSI. + + + if the output should be generated using + the UTF-8 encoding; otherwise, . The + default is . + + + + Corresponds to the /UTF8 flag. + + @@ -408,13 +408,13 @@ - - The command-line arguments for the external program. - - - Overridden to ensure the <arg> elements would not be exposed - to build authors. - + + The command-line arguments for the external program. + + + Overridden to ensure the <arg> elements would not be exposed + to build authors. + @@ -426,25 +426,25 @@ - - Allows a Windows service to be controlled. - - - Starts the World Wide Web Publishing Service on the local computer. - - - ]]> - - - - Stops the Alerter service on computer 'MOTHER'. - - - ]]> - - + + Allows a Windows service to be controlled. + + + Starts the World Wide Web Publishing Service on the local computer. + + + ]]> + + + + Stops the Alerter service on computer 'MOTHER'. + + + ]]> + + @@ -453,9 +453,9 @@ - - Peforms actions on the service in order to reach the desired status. - + + Peforms actions on the service in order to reach the desired status. + @@ -503,77 +503,77 @@ instance for controlling the service identified by and . - - Holds the name of the service that should be controlled. - + + Holds the name of the service that should be controlled. + - - Holds the name of the computer on which the service resides. - + + Holds the name of the computer on which the service resides. + - - Holds the action that should be performed on the service. - + + Holds the action that should be performed on the service. + - - Holds the time, in milliseconds, the task will wait for a service - to reach the desired status. - + + Holds the time, in milliseconds, the task will wait for a service + to reach the desired status. + - - The name of the service that should be controlled. - + + The name of the service that should be controlled. + - - The name of the computer on which the service resides. The default - is the local computer. - + + The name of the computer on which the service resides. The default + is the local computer. + - - The action that should be performed on the service. - + + The action that should be performed on the service. + - - The time, in milliseconds, the task will wait for the service to - reach the desired status. The default is 5000 milliseconds. - + + The time, in milliseconds, the task will wait for the service to + reach the desired status. The default is 5000 milliseconds. + - - Defines the actions that can be performed on a service. - + + Defines the actions that can be performed on a service. + - - Starts a service. - + + Starts a service. + - - Stops a service. - + + Stops a service. + - - Restarts a service. - + + Restarts a service. + - - Pauses a running service. - + + Pauses a running service. + - - Continues a paused service. - + + Continues a paused service. + diff --git a/example_scripts/Tools/nant/bin/NAnt.NUnit.xml b/example_scripts/Tools/nant/bin/NAnt.NUnit.xml index e5dfa34..39d46d6 100644 --- a/example_scripts/Tools/nant/bin/NAnt.NUnit.xml +++ b/example_scripts/Tools/nant/bin/NAnt.NUnit.xml @@ -5,31 +5,31 @@ - - Carries data specified through the formatter element. - + + Carries data specified through the formatter element. + - - Gets or sets the type of the formatter. - - The type of the formatter. + + Gets or sets the type of the formatter. + + The type of the formatter. - - Gets or sets a value indicating whether output should be persisted - to a file. - - - if output should be written to a file; otherwise, - . The default is . - + + Gets or sets a value indicating whether output should be persisted + to a file. + + + if output should be written to a file; otherwise, + . The default is . + - - Gets or sets the extension to append to the output filename. - - The extension to append to the output filename. + + Gets or sets the extension to append to the output filename. + + The extension to append to the output filename. @@ -92,11 +92,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -129,10 +129,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -147,64 +147,64 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - The built-in formatter types. - + + The built-in formatter types. + - - A plaintext formatter. - + + A plaintext formatter. + - - An XML formatter. - + + An XML formatter. + - - Represents the FormatterElement of the NUnit task. - + + Represents the FormatterElement of the NUnit task. + - - Type of formatter. - + + Type of formatter. + - - Extension to append to the output filename. - + + Extension to append to the output filename. + - - Determines whether output should be persisted to a file. The default - is . - + + Determines whether output should be persisted to a file. The default + is . + @@ -271,11 +271,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -308,10 +308,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -326,28 +326,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + diff --git a/example_scripts/Tools/nant/bin/NAnt.NUnit1Tasks.xml b/example_scripts/Tools/nant/bin/NAnt.NUnit1Tasks.xml index 1dc317d..941273b 100644 --- a/example_scripts/Tools/nant/bin/NAnt.NUnit1Tasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.NUnit1Tasks.xml @@ -5,14 +5,14 @@ - - The whole test suite started. - + + The whole test suite started. + - - The whole test suite ended. - + + The whole test suite ended. + @@ -72,11 +72,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -109,10 +109,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -127,42 +127,42 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Prints information about running tests directly to the build log. - + + Prints information about running tests directly to the build log. + - Not used, all output goes to Log class. + Not used, all output goes to Log class. - Called when the whole test suite has started. + Called when the whole test suite has started. - Called when the whole test suite has ended. + Called when the whole test suite has ended. Convert a stack trace line into something that can be clicked on in an IDE output window. @@ -207,35 +207,35 @@ - - Stops running tests when a test causes an error. The default is - . - - - Implies haltonfailure. - + + Stops running tests when a test causes an error. The default is + . + + + Implies haltonfailure. + - - Stops running tests if a test fails (errors are considered failures - as well). The default is . - + + Stops running tests if a test fails (errors are considered failures + as well). The default is . + - - Cancel the individual tests if they do not finish in the specified - time (measured in milliseconds). Ignored if fork is disabled. - + + Cancel the individual tests if they do not finish in the specified + time (measured in milliseconds). Ignored if fork is disabled. + - - Tests to run. - + + Tests to run. + - - Formatters to output results of unit tests. - + + Formatters to output results of unit tests. + @@ -243,25 +243,25 @@ - - Base name of the test result. The full filename is determined by this - attribute and the extension of formatter. - + + Base name of the test result. The full filename is determined by this + attribute and the extension of formatter. + - - Directory to write the reports to. - + + Directory to write the reports to. + - - Class name of the test. - + + Class name of the test. + - - Assembly to load the test from. - + + Assembly to load the test from. + @@ -269,20 +269,20 @@ - - Stop the build process if an error occurs during the test run. - + + Stop the build process if an error occurs during the test run. + - - Stop the build process if a test fails (errors are considered failures - as well). - + + Stop the build process if a test fails (errors are considered failures + as well). + - - The application configuration file to use for the NUnit test domain. - + + The application configuration file to use for the NUnit test domain. + @@ -336,11 +336,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -373,10 +373,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -391,98 +391,98 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Carries data specified through the test element. - + + Carries data specified through the test element. + - - Determines if the unit test needs running. - - - if unit test needs running, otherwise, - . - - - - Determines if the test needs running by looking at the date stamp - of the test assembly and the test results log. - - + + Determines if the unit test needs running. + + + if unit test needs running, otherwise, + . + + + + Determines if the test needs running by looking at the date stamp + of the test assembly and the test results log. + + - - Runs a Suite extracted from a TestCase subclass. - + + Runs a Suite extracted from a TestCase subclass. + - - Creates the formatters to be used when running this test. - + + Creates the formatters to be used when running this test. + - - Returns the output file or null if does not use a file. - + + Returns the output file or null if does not use a file. + - - Returns the test suite from a given class. - - - The assemblyQualifiedName parameter needs to be in form: - "full.qualified.class.name,Assembly" - + + Returns the test suite from a given class. + + + The assemblyQualifiedName parameter needs to be in form: + "full.qualified.class.name,Assembly" + - - Gets the collection of registered formatters. - - Collection of registered formatters. + + Gets the collection of registered formatters. + + Collection of registered formatters. - - Gets the result of the test. - - The result of the test. + + Gets the result of the test. + + The result of the test. - - Prints information about running tests in plain text. - + + Prints information about running tests in plain text. + - Sets the Writer the formatter is supposed to write its results to. + Sets the Writer the formatter is supposed to write its results to. - Called when the whole test suite has started. + Called when the whole test suite has started. - Called when the whole test suite has ended. + Called when the whole test suite has ended. Convert a stack trace line into something that can be clicked on in an IDE output window. @@ -502,15 +502,15 @@ - - Gets or sets the total run-time of a test. - - The total run-time of a test. + + Gets or sets the total run-time of a test. + + The total run-time of a test. - - Prints detailed information about running tests in XML format. - + + Prints detailed information about running tests in XML format. + @@ -525,14 +525,14 @@ - - Called when the whole test suite has started. - + + Called when the whole test suite has started. + - - Called when the whole test suite has ended. - + + Called when the whole test suite has ended. + diff --git a/example_scripts/Tools/nant/bin/NAnt.NUnit2Tasks.xml b/example_scripts/Tools/nant/bin/NAnt.NUnit2Tasks.xml index 95682c6..6f9f9f1 100644 --- a/example_scripts/Tools/nant/bin/NAnt.NUnit2Tasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.NUnit2Tasks.xml @@ -34,36 +34,36 @@ - - Specifies a list of categories to include. - + + Specifies a list of categories to include. + - - Specifies a list of categories to exclude. - + + Specifies a list of categories to exclude. + - - Represents a certain group of test cases or fixtures. - + + Represents a certain group of test cases or fixtures. + - - A name of a category, or comma-separated list of names. - + + A name of a category, or comma-separated list of names. + - - If then the category will be processed; - otherwise, skipped. The default is . - + + If then the category will be processed; + otherwise, skipped. The default is . + - - If then the category will be skipped; - otherwise, processed. The default is . - + + If then the category will be skipped; + otherwise, processed. The default is . + @@ -138,11 +138,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -175,10 +175,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -199,28 +199,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -303,24 +303,24 @@ - - Runs the tests and sets up the formatters. - + + Runs the tests and sets up the formatters. + - - Stop the test run if a test fails. The default is . - + + Stop the test run if a test fails. The default is . + - - Tests to run. - + + Tests to run. + - - Formatters to output results of unit tests. - + + Formatters to output results of unit tests. + @@ -328,35 +328,35 @@ - - Name of the assembly to search for tests. - + + Name of the assembly to search for tests. + - - Name of a specific testfixture to run. If not specified then all - testfixtures are run. - + + Name of a specific testfixture to run. If not specified then all + testfixtures are run. + - - Assemblies to include in test. - + + Assemblies to include in test. + - - Assemblies to scan for missing assembly references. - + + Assemblies to scan for missing assembly references. + - - Categories of test cases to include or exclude. - + + Categories of test cases to include or exclude. + - - Build fails on failure. The default is . - + + Build fails on failure. The default is . + @@ -365,19 +365,19 @@ - - The application configuration file to use for the NUnit test domain. - If not specified, NAnt will try to use a configuration name matching - the file name of the assembly with extension ".config". - + + The application configuration file to use for the NUnit test domain. + If not specified, NAnt will try to use a configuration name matching + the file name of the assembly with extension ".config". + - - Gets all assemblies specified for these tests. - - - All assemblies specified for these tests. - + + Gets all assemblies specified for these tests. + + + All assemblies specified for these tests. + @@ -431,11 +431,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -468,10 +468,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -486,34 +486,34 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Custom TestDomain, similar to the one included with NUnit, in order - to workaround some limitations in it. - + + Custom TestDomain, similar to the one included with NUnit, in order + to workaround some limitations in it. + @@ -522,20 +522,20 @@ - - Runs a single testcase. - - The test assembly. - The application configuration file for the test domain. - List of files to scan for missing assembly references. - - The result of the test. - + + Runs a single testcase. + + The test assembly. + The application configuration file for the test domain. + List of files to scan for missing assembly references. + + The result of the test. + - - Helper class called when an assembly resolve event is raised. - + + Helper class called when an assembly resolve event is raised. + @@ -564,21 +564,21 @@ An that contains the event data. - - Holds the list of directories that will be scanned for missing - assembly references. - + + Holds the list of directories that will be scanned for missing + assembly references. + - - Holds the list of assemblies that can be scanned for missing - assembly references. - + + Holds the list of assemblies that can be scanned for missing + assembly references. + - - Holds the loaded assemblies. - + + Holds the loaded assemblies. + diff --git a/example_scripts/Tools/nant/bin/NAnt.SourceControlTasks.xml b/example_scripts/Tools/nant/bin/NAnt.SourceControlTasks.xml index 2e5cb8f..b504997 100644 --- a/example_scripts/Tools/nant/bin/NAnt.SourceControlTasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.SourceControlTasks.xml @@ -5,44 +5,44 @@ - - A base class for creating tasks for executing CVS client commands on a - CVS repository. - + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + - - A base class for creating tasks for executing CVS client commands on a - CVS repository. - + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + - - Name of the environmental variable specifying a users' home - in a *nix environment. - + + Name of the environmental variable specifying a users' home + in a *nix environment. + - - Used on windows to specify the location of application data. - + + Used on windows to specify the location of application data. + - - The environment variable that holds path information. - + + The environment variable that holds path information. + - - The environment variable that holds the location of the - .cvspass file. - + + The environment variable that holds the location of the + .cvspass file. + - - Property name used to specify the source control executable. This is - used as a readonly property. - + + Property name used to specify the source control executable. This is + used as a readonly property. + @@ -51,245 +51,245 @@ - - Build up the command line arguments, determine which executable is being - used and find the path to that executable and set the working - directory. - - The process to prepare. + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. - - Adds a new global option if none exists. If one does exist then - the use switch is toggled on or of. - - The common name of the option. - The option value or command line switch - of the option. - true if the option should be - appended to the commandline, otherwise false. + + Adds a new global option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch + of the option. + true if the option should be + appended to the commandline, otherwise false. - - Adds a new command option if none exists. If one does exist then - the use switch is toggled on or of. - - The common name of the option. - The option value or command line switch - of the option. - true if the option should be - appended to the commandline, otherwise false. + + Adds a new command option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch + of the option. + true if the option should be + appended to the commandline, otherwise false. - - Set up the environment variables for a process. - - A process to setup. + + Set up the environment variables for a process. + + A process to setup. - - Append the files specified in the fileset to the command line argument. - Files are changed to use a relative path from the working directory - that the task is spawned in. - + + Append the files specified in the fileset to the command line argument. + Files are changed to use a relative path from the working directory + that the task is spawned in. + - - Derive the location of the version control system from the environment - variable PATH. - - The file information of the version control system, - or null if this cannot be found. + + Derive the location of the version control system from the environment + variable PATH. + + The file information of the version control system, + or null if this cannot be found. - - The name of the passfile, overriden for each version control system (VCS). - + + The name of the passfile, overriden for each version control system (VCS). + - - The path to the specific home directory of the version control system, - this can be where the binary files are kept, or other app - information. - + + The path to the specific home directory of the version control system, + this can be where the binary files are kept, or other app + information. + - - The environment variable that defines where the version control system - (VCS) home variable is kept. - + + The environment variable that defines where the version control system + (VCS) home variable is kept. + - - The name of the version control system (VCS) executable file. - + + The name of the version control system (VCS) executable file. + - - - The root variable contains information on how to locate a repository. - Although this information is in different formats it typically must - define the following: - - server location - protocol used to communicate with the repository - repository location on the server - project location in the repository - - - + + + The root variable contains information on how to locate a repository. + Although this information is in different formats it typically must + define the following: + + server location + protocol used to communicate with the repository + repository location on the server + project location in the repository + + + - - Destination directory for the local sandbox. If destination is not specified - then the current directory is used. - - - Root path of the local sandbox. - - - - Root path of the local sandbox. - - + + Destination directory for the local sandbox. If destination is not specified + then the current directory is used. + + + Root path of the local sandbox. + + + + Root path of the local sandbox. + + - - The password for logging in to the repository. - - - The password for logging in to the repository. - + + The password for logging in to the repository. + + + The password for logging in to the repository. + - - The full path to the cached password file. If not specified then the - environment variables are used to try and locate the file. - + + The full path to the cached password file. If not specified then the + environment variables are used to try and locate the file. + - - Holds a collection of globally available options. - + + Holds a collection of globally available options. + - - A collection of options that can be used to modify the default behavoir - of the version control commands. See the sub-tasks for implementation - specifics. - + + A collection of options that can be used to modify the default behavoir + of the version control commands. See the sub-tasks for implementation + specifics. + - - Command-line arguments for the program. The command line arguments are used to specify - any cvs command options that are not available as attributes. These are appended - after the command itself and are additive to whatever attributes are currently specified. - - - <cvs-checkout cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant" - module="nant" - destination="e:\test\merillcornish\working" - readonly="true" - quiet="true" - commandline="-n" - cvsfullpath="C:\Program Files\TortoiseCVS\cvs.exe" - /> -
- Produces the cvs command: - c:\Program Files\TortoiseCVS\cvs.exe -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant -q checkout -n nant -
+ + Command-line arguments for the program. The command line arguments are used to specify + any cvs command options that are not available as attributes. These are appended + after the command itself and are additive to whatever attributes are currently specified. + + + <cvs-checkout cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant" + module="nant" + destination="e:\test\merillcornish\working" + readonly="true" + quiet="true" + commandline="-n" + cvsfullpath="C:\Program Files\TortoiseCVS\cvs.exe" + /> +
+ Produces the cvs command: + c:\Program Files\TortoiseCVS\cvs.exe -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant -q checkout -n nant +
- - The name of the command that is going to be executed. - + + The name of the command that is going to be executed. + - - Used to specify the version control system (VCS) files that are going - to be acted on. - + + Used to specify the version control system (VCS) files that are going + to be acted on. + - - The executable to use for ssh communication. - + + The executable to use for ssh communication. + - - The environment name for the ssh variable. - + + The environment name for the ssh variable. + - - The name of the version control system executable. - + + The name of the version control system executable. + - - Get the command line arguments for the task. - + + Get the command line arguments for the task. + - - Default value for the recursive directive. The default is - . - + + Default value for the recursive directive. The default is + . + - - Default value for the quiet command. - + + Default value for the quiet command. + - - Default value for the really quiet command. - + + Default value for the really quiet command. + - - An environment variable that holds path information about where - cvs is located. - + + An environment variable that holds path information about where + cvs is located. + - - Name of the password file that cvs stores pserver - cvsroot/ password pairings. - + + Name of the password file that cvs stores pserver + cvsroot/ password pairings. + - - The default compression level to use for cvs commands. - + + The default compression level to use for cvs commands. + - - The default use of binaries, defaults to use sharpcvs. - + + The default use of binaries, defaults to use sharpcvs. + - - The name of the cvs executable. - + + The name of the cvs executable. + - - The temporary name of the sharpcvslib binary file, to avoid - conflicts in the path variable. - + + The temporary name of the sharpcvslib binary file, to avoid + conflicts in the path variable. + - - Environment variable that holds the executable name that is used for - ssh communication. - + + Environment variable that holds the executable name that is used for + ssh communication. + - - Property name used to specify on a project level whether sharpcvs is - used or not. - + + Property name used to specify on a project level whether sharpcvs is + used or not. +
@@ -308,244 +308,244 @@ - - Build up the command line arguments, determine which executable is being - used and find the path to that executable and set the working - directory. - - The process to prepare. + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. - - Override to append any commands before the modele and files. - + + Override to append any commands before the modele and files. + - - Append the command line options or commen names for the options - to the generic options collection. This is then piped to the - command line as a switch. - + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + - - Add the given argument to the command line options. Note that are not explicitly - quoted are split into seperate arguments. This is to resolve a recent issue - with quoting command line arguments. - - + + Add the given argument to the command line options. Note that are not explicitly + quoted are split into seperate arguments. This is to resolve a recent issue + with quoting command line arguments. + + - - The environment name for the ssh variable. - + + The environment name for the ssh variable. + - - The name of the cvs binary, or cvs.exe at the time this - was written. - + + The name of the cvs binary, or cvs.exe at the time this + was written. + - - The name of the pass file, or .cvspass at the time - of this writing. - + + The name of the pass file, or .cvspass at the time + of this writing. + - - The name of the version control system specific home environment - variable. - + + The name of the version control system specific home environment + variable. + - - Specify if the module is needed for this cvs command. It is - only needed if there is no module information on the local file - system. - + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + - - Used to specify the version control system (VCS) files that are going - to be acted on. - + + Used to specify the version control system (VCS) files that are going + to be acted on. + - - Get the cvs file set. - + + Get the cvs file set. + - - The name of the cvs executable. - + + The name of the cvs executable. + - - The full path to the cvs binary used. The cvs tasks will attempt to - "guess" the location of your cvs binary based on your path. If the - task is unable to resolve the location, or resolves it incorrectly - this can be used to manually specify the path. - - - A full path (i.e. including file name) of your cvs binary: - On Windows: c:\vcs\cvs\cvs.exe - On *nix: /usr/bin/cvs - + + The full path to the cvs binary used. The cvs tasks will attempt to + "guess" the location of your cvs binary based on your path. If the + task is unable to resolve the location, or resolves it incorrectly + this can be used to manually specify the path. + + + A full path (i.e. including file name) of your cvs binary: + On Windows: c:\vcs\cvs\cvs.exe + On *nix: /usr/bin/cvs + - - - The cvs root variable has the following components: - - - [protocol]:[username]@[servername]:[server path] -
    -
  • protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation.
  • -
  • username: [username]
  • -
  • servername: cvs.sourceforge.net
  • -
  • server path: /cvsroot/nant
  • -
-
-
- - NAnt anonymous cvsroot: - - :pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant - - + + + The cvs root variable has the following components: + + + [protocol]:[username]@[servername]:[server path] +
    +
  • protocol: ext, pserver, ssh (sharpcvslib); if you are not using sharpcvslib consult your cvs documentation.
  • +
  • username: [username]
  • +
  • servername: cvs.sourceforge.net
  • +
  • server path: /cvsroot/nant
  • +
+
+
+ + NAnt anonymous cvsroot: + + :pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant + +
- - The module to perform an operation on. - - - The module to perform an operation on. This is a normal file/folder - name without path information. - - - In NAnt the module name would be: - nant - + + The module to perform an operation on. + + + The module to perform an operation on. This is a normal file/folder + name without path information. + + + In NAnt the module name would be: + nant + - - - if the SharpCvsLib binaries that come bundled - with NAnt should be used to perform the cvs commands, - otherwise. - - - You may also specify an override value for all cvs tasks instead - of specifying a value for each. To do this set the property - sourcecontrol.usesharpcvslib to . - - - If you choose not to use SharpCvsLib to checkout from cvs you will - need to include a cvs.exe binary in your path. - - - - To use a cvs client in your path instead of sharpcvslib specify - the property: - >property name="sourcecontrol.usesharpcvslib" value="false"< - The default settings is to use sharpcvslib and the setting closest - to the task execution is used to determine which value is used - to execute the process. - For instance if the attribute usesharpcvslib was set to false - and the global property was set to true, the usesharpcvslib is - closes to the point of execution and would be used and is false. - Therefore the sharpcvslib binary would NOT be used. - + + + if the SharpCvsLib binaries that come bundled + with NAnt should be used to perform the cvs commands, + otherwise. + + + You may also specify an override value for all cvs tasks instead + of specifying a value for each. To do this set the property + sourcecontrol.usesharpcvslib to . + + + If you choose not to use SharpCvsLib to checkout from cvs you will + need to include a cvs.exe binary in your path. + + + + To use a cvs client in your path instead of sharpcvslib specify + the property: + >property name="sourcecontrol.usesharpcvslib" value="false"< + The default settings is to use sharpcvslib and the setting closest + to the task execution is used to determine which value is used + to execute the process. + For instance if the attribute usesharpcvslib was set to false + and the global property was set to true, the usesharpcvslib is + closes to the point of execution and would be used and is false. + Therefore the sharpcvslib binary would NOT be used. + - - The executable to use for ssh communication. - + + The executable to use for ssh communication. + - - Indicates if the output from the cvs command should be supressed. - The default is . - + + Indicates if the output from the cvs command should be supressed. + The default is . + - - Indicates if the output from the cvs command should be stopped. - The default is . - + + Indicates if the output from the cvs command should be stopped. + The default is . + - - if the sandbox files should be checked out in - read only mode. The default is . - + + if the sandbox files should be checked out in + read only mode. The default is . + - - if the sandbox files should be checked out in - read/write mode. The default is . - + + if the sandbox files should be checked out in + read/write mode. The default is . + - - Compression level to use for all net traffic. This should be a value from 1-9. -
-
- NOTE: This is not available on sharpcvslib. -
+ + Compression level to use for all net traffic. This should be a value from 1-9. +
+
+ NOTE: This is not available on sharpcvslib. +
- - Produces an XML report that represents the cvs changes from the given - start day, to a given end date. - - - Report changes in NAnt from 1st of June 2004 until 25th of July 2004. - - - ]]> - - + + Produces an XML report that represents the cvs changes from the given + start day, to a given end date. + + + Report changes in NAnt from 1st of June 2004 until 25th of July 2004. + + + ]]> + + - - The command being executed. - + + The command being executed. + - - Name of the xml file that will contain the cvs log information. - + + Name of the xml file that will contain the cvs log information. + - - The earliest change to use in the cvs log command. - + + The earliest change to use in the cvs log command. + - - The latest date to use in the cvs log command. - + + The latest date to use in the cvs log command. + - - The cvs command to execute. - + + The cvs command to execute. + - - Override use of sharpcvslib, needs to be true. - + + Override use of sharpcvslib, needs to be true. +
@@ -575,61 +575,61 @@ - - Checks out a CVS module to the required directory. - - - Checkout NAnt. - - - ]]> - - - - - Checkout NAnt revision named 0_85 to the - folder c:\src\nant\v0.85. - - - - ]]> - - So the nant module tagged with revision 0_85 will be checked - out in the folder v0.85 under the working/ destination directory. -
This could be used to work on different - branches of a repository at the same time.
-
- - - Checkout NAnt with specified revision date to the - folder c:\src\nant\2003_08_16. - - - - ]]> - - + + Checks out a CVS module to the required directory. + + + Checkout NAnt. + + + ]]> + + + + + Checkout NAnt revision named 0_85 to the + folder c:\src\nant\v0.85. + + + + ]]> + + So the nant module tagged with revision 0_85 will be checked + out in the folder v0.85 under the working/ destination directory. +
This could be used to work on different + branches of a repository at the same time.
+
+ + + Checkout NAnt with specified revision date to the + folder c:\src\nant\2003_08_16. + + + + ]]> + +
- - The command being executed. - + + The command being executed. + @@ -637,55 +637,55 @@ - - Specify the revision to checkout. This corresponds to the "sticky-tag" - of the file. - + + Specify the revision to checkout. This corresponds to the "sticky-tag" + of the file. + - - Sticky tag or revision to checkout. - + + Sticky tag or revision to checkout. + - - Specify the revision date to checkout. The date specified is validated - and then passed to the cvs binary in a standard format recognized by - cvs. - + + Specify the revision date to checkout. The date specified is validated + and then passed to the cvs binary in a standard format recognized by + cvs. + - - Specify a directory name to replace the module name. Valid names - include any valid filename, excluding path information. - + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + - - Specify a directory name to replace the module name. Valid names - include any valid filename, excluding path information. - + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + - - The name of the cvs command that is going to be executed. - + + The name of the cvs command that is going to be executed. + - - Executes the cvs login command which appends or updates an entry to the - specified .cvspass file. - - - Update .cvspass file to include the NAnt anonymous login. - - - ]]> - - + + Executes the cvs login command which appends or updates an entry to the + specified .cvspass file. + + + Update .cvspass file to include the NAnt anonymous login. + + + ]]> + + @@ -693,111 +693,111 @@ - - Update the .cvspass file with the given password. If the passfile - is not specified then the default search locations are used: - - CVS_PASSFILE/.cvspass - HOME/.cvspass - USERPROFILE/.cvspass TODO: Confirm that this is valid - behavior or if it is going to give problems with the - cvsnt implementation. - - + + Update the .cvspass file with the given password. If the passfile + is not specified then the default search locations are used: + + CVS_PASSFILE/.cvspass + HOME/.cvspass + USERPROFILE/.cvspass TODO: Confirm that this is valid + behavior or if it is going to give problems with the + cvsnt implementation. + + - - Password to append or update to the .cvspass file. - + + Password to append or update to the .cvspass file. + - - The full path to the .cvspass file. The default is ~/.cvspass. - - + + The full path to the .cvspass file. The default is ~/.cvspass. + + - - The current working directory. - + + The current working directory. + - - The repository root string. - + + The repository root string. + - - Executes the cvs command specified by the command attribute. - - - Checkout NAnt. - - - ]]> - - + + Executes the cvs command specified by the command attribute. + + + Checkout NAnt. + + + ]]> + + - - The cvs command to execute. - + + The cvs command to execute. + - - Specify if the module is needed for this cvs command. - + + Specify if the module is needed for this cvs command. + - - Exports a cvs module in preperation for a release (i.e. the CVS version - folders are not exported). - - - Export the most recent NAnt sources from cvs. - - - ]]> - - - - - Export NAnt revision named your_favorite_revision_here to the - folder c:\src\nant\replacement_for_module_directory_name. - - **NOTE**: filesets names for the export task must be - prefixed with the module name. This is different than other tasks. - - - - - - - - - ]]> - - + + Exports a cvs module in preperation for a release (i.e. the CVS version + folders are not exported). + + + Export the most recent NAnt sources from cvs. + + + ]]> + + + + + Export NAnt revision named your_favorite_revision_here to the + folder c:\src\nant\replacement_for_module_directory_name. + + **NOTE**: filesets names for the export task must be + prefixed with the module name. This is different than other tasks. + + + + + + + + + ]]> + + - - The command being executed. - + + The command being executed. +
@@ -811,9 +811,9 @@ - - No shortening. Do not shorten module paths if -d specified. - + + No shortening. Do not shorten module paths if -d specified. + @@ -827,82 +827,82 @@ - - If a directory is specified indicates whether sub-directories should - also be processed. - - - if the sub-directories should be tagged; - otherwise, . The default is . - + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + - - Specify the revision to update the file to. This corresponds to the "sticky-tag" - of the file. - + + Specify the revision to update the file to. This corresponds to the "sticky-tag" + of the file. + - - Specify the revision date to update to. The version of the file that - existed at the date specified is retrieved. - - - A valid date time value, which is then converted to a format that - cvs can parse. - + + Specify the revision date to update to. The version of the file that + existed at the date specified is retrieved. + + + A valid date time value, which is then converted to a format that + cvs can parse. + - - Specify a directory name to replace the module name. Valid names - include any valid filename, excluding path information. - + + Specify a directory name to replace the module name. Valid names + include any valid filename, excluding path information. + - - The export command name for the cvs client. - + + The export command name for the cvs client. + - - Tags all sources in the remote repository with a given tag. - - - - Unlike tag, the rtag command acts only on sources that are in the repository. - Any modified sources on the local file system will NOT be tagged with this - command, so a commit should be performed before an rtag is done. - - - NOTE: Although a working directory is not necessary to perform the command - one must be specified in order to remain in compliance with the cvs library. - - - - Tag NAnt sources remotely. - - - ]]> - - - - Remove a tag from the remote repository. - - - ]]> - - + + Tags all sources in the remote repository with a given tag. + + + + Unlike tag, the rtag command acts only on sources that are in the repository. + Any modified sources on the local file system will NOT be tagged with this + command, so a commit should be performed before an rtag is done. + + + NOTE: Although a working directory is not necessary to perform the command + one must be specified in order to remain in compliance with the cvs library. + + + + Tag NAnt sources remotely. + + + ]]> + + + + Remove a tag from the remote repository. + + + ]]> + + @@ -911,17 +911,17 @@ - - Append the tag information to the commandline. - + + Append the tag information to the commandline. + - - The name of the tag to assign or remove. - - - The name of the tag to assign or remove. - + + The name of the tag to assign or remove. + + + The name of the tag to assign or remove. + @@ -945,14 +945,14 @@ - - If a directory is specified indicates whether sub-directories should - also be processed. - - - if the sub-directories should be tagged; - otherwise, . The default is . - + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + @@ -966,14 +966,14 @@ - - Indicates the revision date of the file that the tag should be - applied to. - - - A valid date which specifies the revision point that the tag will - be applied to. - + + Indicates the revision date of the file that the tag should be + applied to. + + + A valid date which specifies the revision point that the tag will + be applied to. + @@ -987,9 +987,9 @@ - - The name of the cvs command that is going to be executed. - + + The name of the cvs command that is going to be executed. + @@ -1032,9 +1032,9 @@ - - Cvs command to be executed. - + + Cvs command to be executed. + @@ -1043,17 +1043,17 @@ - - Append the tag information to the commandline. - + + Append the tag information to the commandline. + - - The name of the tag to assign or remove. - - - The name of the tag to assign or remove. - + + The name of the tag to assign or remove. + + + The name of the tag to assign or remove. + @@ -1077,14 +1077,14 @@ - - If a directory is specified indicates whether sub-directories should - also be processed. - - - if the sub-directories should be tagged; - otherwise, . The default is . - + + If a directory is specified indicates whether sub-directories should + also be processed. + + + if the sub-directories should be tagged; + otherwise, . The default is . + @@ -1098,14 +1098,14 @@ - - Indicates the revision date of the file that the tag should be - applied to. - - - A valid date which specifies the revision point that the tag will - be applied to. - + + Indicates the revision date of the file that the tag should be + applied to. + + + A valid date which specifies the revision point that the tag will + be applied to. + @@ -1130,64 +1130,64 @@ - - The name of the cvs command that is going to be executed. - + + The name of the cvs command that is going to be executed. + - - Not used - + + Not used + - - Specify if the module is needed for this cvs command. It is - only needed if there is no module information on the local file - system. - + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + - - Updates a CVS module in a local working directory. - - - Update nant. - - - ]]> - - - - - Update your NAnt revision named your_favorite_revision_here in - the folder c:\src\nant\replacement_for_module_directory_name. - - - - - - - - ]]> - - + + Updates a CVS module in a local working directory. + + + Update nant. + + + ]]> + + + + + Update your NAnt revision named your_favorite_revision_here in + the folder c:\src\nant\replacement_for_module_directory_name. + + + + + + + + ]]> + + - - The command being executed. - + + The command being executed. + @@ -1200,69 +1200,69 @@ - - If . new directories will be created on the local - sandbox. The default is . - + + If . new directories will be created on the local + sandbox. The default is . + - - If empty directories copied down from the - remote repository will be removed from the local sandbox. - The default is . - + + If empty directories copied down from the + remote repository will be removed from the local sandbox. + The default is . + - - If the local copy of the file will be - overwritten with the copy from the remote repository. The default - is . - + + If the local copy of the file will be + overwritten with the copy from the remote repository. The default + is . + - - Specifies if the command should be executed recursively. The - default is . - - - The -R option is on by default in cvs. - + + Specifies if the command should be executed recursively. The + default is . + + + The -R option is on by default in cvs. + - - Specify the revision to update the file to. This corresponds to the - "sticky-tag" of the file. - + + Specify the revision to update the file to. This corresponds to the + "sticky-tag" of the file. + - - Sticky tag or revision to update the local file to. - - - A valid cvs tag. - + + Sticky tag or revision to update the local file to. + + + A valid cvs tag. + - - Specify the revision date to update to. The version of the file that - existed at the date specified is retrieved. - - - A valid date time value, which is then converted to a format that - cvs can parse. - + + Specify the revision date to update to. The version of the file that + existed at the date specified is retrieved. + + + A valid date time value, which is then converted to a format that + cvs can parse. + - - Specify if the module is needed for this cvs command. It is - only needed if there is no module information on the local file - system. - + + Specify if the module is needed for this cvs command. It is + only needed if there is no module information on the local file + system. + - - The name of the cvs command that is going to be executed. - + + The name of the cvs command that is going to be executed. + @@ -1277,11 +1277,11 @@ - - Indicates whether the entires in the .cvsignore should be used to limit the - file list; to exclude files in .cvsignore, otherwise - . The default is . - + + Indicates whether the entires in the .cvsignore should be used to limit the + file list; to exclude files in .cvsignore, otherwise + . The default is . + diff --git a/example_scripts/Tools/nant/bin/NAnt.VSNetTasks.xml b/example_scripts/Tools/nant/bin/NAnt.VSNetTasks.xml index 8220497..7a67649 100644 --- a/example_scripts/Tools/nant/bin/NAnt.VSNetTasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.VSNetTasks.xml @@ -5,9 +5,9 @@ - - Analyses Microsoft Visual Studio .NET 2003 (Everett) solution files. - + + Analyses Microsoft Visual Studio .NET 2003 (Everett) solution files. + @@ -20,14 +20,14 @@ No project with unique identifier could be located. - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the underlying task. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + @@ -51,15 +51,15 @@ A project GUID in the solution file does not match the actual GUID of the project in the project file. - - Translates a project path, in the form of a relative file path or - a URL, to an absolute file path. - - The directory of the solution. - The project path to translate to an absolute file path. - - The project path translated to an absolute file path. - + + Translates a project path, in the form of a relative file path or + a URL, to an absolute file path. + + The directory of the solution. + The project path to translate to an absolute file path. + + The project path translated to an absolute file path. + @@ -84,20 +84,20 @@ - - Returns a number representing how much this file fits this project type. - - - - - - This enables the override in other providers. Do not return big numbers, mainly when compring only on filename. - + + Returns a number representing how much this file fits this project type. + + + + + + This enables the override in other providers. Do not return big numbers, mainly when compring only on filename. + - - Analyses Microsoft Visual Studio .NET 2002 (Rainier) solution files. - + + Analyses Microsoft Visual Studio .NET 2002 (Rainier) solution files. + @@ -246,9 +246,9 @@ - - Private var containing custom properties. - + + Private var containing custom properties. + @@ -267,29 +267,29 @@ The macro cannot be expanded. - - Builds the list of folders that should be scanned for assembly - references. - - - The list of folders that should be scanned for assembly references. - + + Builds the list of folders that should be scanned for assembly + references. + + + The list of folders that should be scanned for assembly references. + - - The projects to build. - + + The projects to build. + - - The projects to scan, but not build. - - - These projects are used to resolve project references and are - generally external to the solution being built. References to - these project's output files are converted to use the appropriate - solution configuration at build time. - + + The projects to scan, but not build. + + + These projects are used to resolve project references and are + generally external to the solution being built. References to + these project's output files are converted to use the appropriate + solution configuration at build time. + @@ -303,52 +303,52 @@ - - The name of the solution configuration to build. - - - - Generally release or debug. Not case-sensitive. - - + + The name of the solution configuration to build. + + + + Generally release or debug. Not case-sensitive. + + - - The name of platform to build the solution for. - + + The name of platform to build the solution for. + - - Gets the solution configuration to build. - + + Gets the solution configuration to build. + - - The directory where compiled targets will be placed. This - overrides path settings contained in the solution/project. - + + The directory where compiled targets will be placed. This + overrides path settings contained in the solution/project. + - - WebMap of URL's to project references. - + + WebMap of URL's to project references. + - - Fileset of projects to exclude. - + + Fileset of projects to exclude. + - - Set of folders where references are searched when not found in path - from project file (HintPath). - + + Set of folders where references are searched when not found in path + from project file (HintPath). + - - Includes Visual Studio search folders in reference search path. - The default is . - + + Includes Visual Studio search folders in reference search path. + The default is . + @@ -362,163 +362,163 @@ - - Set of properties set at solution level. Builders for projects in solution may or may not use them. - - - - TODO: some documentataion which properties could be defined here. - - + + Set of properties set at solution level. Builders for projects in solution may or may not use them. + + + + TODO: some documentataion which properties could be defined here. + + - - Gets the list of folders to scan for assembly references. - - - The list of folders to scan for assembly references. - + + Gets the list of folders to scan for assembly references. + + + The list of folders to scan for assembly references. + - - Defines how the project is using the ATL library. - + + Defines how the project is using the ATL library. + - - Don't use ATL. - + + Don't use ATL. + - - Use ATL in a Static Library. - + + Use ATL in a Static Library. + - - Use ATL in a Shared DLL. - + + Use ATL in a Shared DLL. + - - Defines how the project is using the MFC library. - + + Defines how the project is using the MFC library. + - - Don't use MFC. - + + Don't use MFC. + - - Use MFC in a Static Library. - + + Use MFC in a Static Library. + - - Use MFC in a Shared DLL. - + + Use MFC in a Shared DLL. + - - Indicates the possible ways in which precompiled header file use is - specified in a Visual C++ project. - - - The integer values assigned match those specified in the Visual C++ - project file for each setting. - > + + Indicates the possible ways in which precompiled header file use is + specified in a Visual C++ project. + + + The integer values assigned match those specified in the Visual C++ + project file for each setting. + > - - Precompiled header file use not specified. - + + Precompiled header file use not specified. + - - Don't use a precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yc. - + + Don't use a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + - - Create precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yc. - + + Create precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + - - Automatically create precompiled header file if necessary. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yc. - + + Automatically create precompiled header file if necessary. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + - - Use a precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yu. - + + Use a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yu. + - - Represents a single mapping from URL project path to physical project - path. - + + Represents a single mapping from URL project path to physical project + path. + - - Specifies the URL of the project file, or a URL fragment to match. - - - The URL of the project file or the URL fragment to match. - + + Specifies the URL of the project file, or a URL fragment to match. + + + The URL of the project file or the URL fragment to match. + - - Specifies the actual path to the project file, or the path fragment - to replace. - - - The actual path to the project file or the path fragment to replace - the URL fragment with. - + + Specifies the actual path to the project file, or the path fragment + to replace. + + + The actual path to the project file or the path fragment to replace + the URL fragment with. + - - Specifies whether the mapping is case-sensitive or not. - - - A boolean flag representing the case-sensitivity of the mapping. Default is . - + + Specifies whether the mapping is case-sensitive or not. + + + A boolean flag representing the case-sensitivity of the mapping. Default is . + - - Indicates if the URL of the project file should be mapped. - - - if the URL of the project file should be - mapped; otherwise, . - + + Indicates if the URL of the project file should be mapped. + + + if the URL of the project file should be + mapped; otherwise, . + - - Indicates if the URL of the project file should not be mapped. - - - if the URL of the project file should not - be mapped; otherwise, . - + + Indicates if the URL of the project file should not be mapped. + + + if the URL of the project file should not + be mapped; otherwise, . + @@ -591,11 +591,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -628,10 +628,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -652,38 +652,38 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Gets the output path of the reference, without taking the "copy local" - setting into consideration. - - The solution configuration that is built. - - The full output path of the reference. - + + Gets the output path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The full output path of the reference. + @@ -699,35 +699,35 @@ - - Gets the complete set of assemblies that need to be referenced when - a project references this component. - - The solution configuration that is built. - - The complete set of assemblies that need to be referenced when a - project references this component. - + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + - - Gets the timestamp of the reference. - - The solution configuration that is built. - - The timestamp of the reference. - + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + - - Gets a value indicating whether the reference is managed for the - specified configuration. - - The solution configuration that is built. - - if the reference is managed for the - specified configuration; otherwise, . - + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The solution configuration that is built. + + if the reference is managed for the + specified configuration; otherwise, . + @@ -742,14 +742,14 @@ - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the underlying task. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + @@ -763,39 +763,39 @@ - - Gets a value indicating whether the output file(s) of this reference - should be copied locally. - - - if the output file(s) of this reference - should be copied locally; otherwise, . - + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + - - Gets a value indicating whether this reference represents a system - assembly. - - - if this reference represents a system - assembly; otherwise, . - + + Gets a value indicating whether this reference represents a system + assembly. + + + if this reference represents a system + assembly; otherwise, . + - - Gets the project in which the reference is defined. - + + Gets the project in which the reference is defined. + - - Gets a value indicating whether the reference is managed for the - specified configuration. - - The build configuration of the reference. - - . - + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The build configuration of the reference. + + . + @@ -811,14 +811,14 @@ - - Gets the path of the reference, without taking the "copy local" - setting into consideration. - - The solution configuration that is built. - - The output path of the reference. - + + Gets the path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + @@ -833,55 +833,55 @@ - - Gets the complete set of assemblies that need to be referenced when - a project references this component. - - The solution configuration that is built. - - The complete set of assemblies that need to be referenced when a - project references this component. - + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + - - Gets the timestamp of the reference. - - The solution configuration that is built. - - The timestamp of the reference. - + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + - - Resolves an assembly reference. - - - The full path to the resolved assembly, or - if the assembly reference could not be resolved. - + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + - - Searches for the given file in all paths in . - - The folders to search. - The file to search for. - - The path of the assembly if was found - in ; otherwise, . - + + Searches for the given file in all paths in . + + The folders to search. + The file to search for. + + The path of the assembly if was found + in ; otherwise, . + - - Resolves an assembly reference in the framework assembly directory - of the target framework. - - The file to search for. - - The full path of the assembly file if the assembly could be located - in the framework assembly directory; otherwise, . - + + Resolves an assembly reference in the framework assembly directory + of the target framework. + + The file to search for. + + The full path of the assembly file if the assembly could be located + in the framework assembly directory; otherwise, . + @@ -895,24 +895,24 @@ - - Gets a value indicating whether the output file(s) of this reference - should be copied locally. - - - if the output file(s) of this reference - should be copied locally; otherwise, . - + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + - - Gets a value indicating whether this reference represents a system - assembly. - - - if this reference represents a system - assembly; otherwise, . - + + Gets a value indicating whether this reference represents a system + assembly. + + + if this reference represents a system + assembly; otherwise, . + @@ -951,14 +951,14 @@ - - Gets the project. - + + Gets the project. + - - Gets the name of the configuration. - + + Gets the name of the configuration. + @@ -978,34 +978,34 @@ - - Gets the output directory. - + + Gets the output directory. + - - Gets the path for the output file. - + + Gets the path for the output file. + - - Gets the path in which the output file will be created before its - copied to the actual output path. - + + Gets the path in which the output file will be created before its + copied to the actual output path. + - - Get the path of the output directory relative to the project - directory. - + + Get the path of the output directory relative to the project + directory. + - - Gets the platform that the configuration targets. - - - The platform targeted by the configuration. - + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + @@ -1040,33 +1040,33 @@ The appropriate number of entries that the can initially contain. - - Gets the platform that the configuration targets. - - - The platform targeted by the configuration. - + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + - - Gets the path in which the output file will be created before its - copied to the actual output path. - + + Gets the path in which the output file will be created before its + copied to the actual output path. + - - Gets a value indicating whether to register the project output for - use with COM components. - - - if the project output should be registered - for use with COM components; otherwise, . - + + Gets a value indicating whether to register the project output for + use with COM components. + + + if the project output should be registered + for use with COM components; otherwise, . + - - Base class for all project classes. - + + Base class for all project classes. + @@ -1093,25 +1093,25 @@ - - Gets a value indicating whether building the project for the specified - build configuration results in managed output. - - The build configuration. - - if the project output for the given build - configuration is managed; otherwise, . - + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The build configuration. + + if the project output for the given build + configuration is managed; otherwise, . + - - Expands the given macro. - - The macro to expand. - - The expanded macro or if the macro is not - supported. - + + Expands the given macro. + + The macro to expand. + + The expanded macro or if the macro is not + supported. + @@ -1142,33 +1142,33 @@ - - Prepares the project for being built. - - The solution configuration that is built. - - The default implementation will ensure that none of the output files - are marked read-only. - - - - Copies the specified file if the destination file does not exist, or - the source file has been modified since it was previously copied. + Prepares the project for being built. + + The solution configuration that is built. + + The default implementation will ensure that none of the output files + are marked read-only. + + + + + Copies the specified file if the destination file does not exist, or + the source file has been modified since it was previously copied. The file to copy. The destination file. The in which context the operation will be performed. - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the underlying task. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the underlying task. + @@ -1182,77 +1182,77 @@ - - Gets the Visual Studio product version of the project. - - - The Visual Studio product version of the project. - + + Gets the Visual Studio product version of the project. + + + The Visual Studio product version of the project. + - - Gets the name of the VS.NET project. - + + Gets the name of the VS.NET project. + - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the path of the VS.NET project. - + + Gets the path of the VS.NET project. + - - Gets the directory containing the VS.NET project. - + + Gets the directory containing the VS.NET project. + - - Get the location of the project. - + + Get the location of the project. + - - Get the directory in which intermediate build output that is not - specific to the build configuration will be stored. - - - - For projects, this is defined - as <Project Directory<\obj. - - - For projects, this is defined - as %HOMEPATH%\VSWebCache\<Machine Name>\<Project Directory>\obj. - - + + Get the directory in which intermediate build output that is not + specific to the build configuration will be stored. + + + + For projects, this is defined + as <Project Directory<\obj. + + + For projects, this is defined + as %HOMEPATH%\VSWebCache\<Machine Name>\<Project Directory>\obj. + + - - Gets or sets the unique identifier of the VS.NET project. - + + Gets or sets the unique identifier of the VS.NET project. + - - Gets a list of all configurations defined in the project. - + + Gets a list of all configurations defined in the project. + - - Gets a list of project configurations that can be build. - - - - Project configurations that are not in this list do not need to be - compiled. - - + + Gets a list of project configurations that can be build. + + + + Project configurations that are not in this list do not need to be + compiled. + + @@ -1268,37 +1268,37 @@ - - Gets the set of projects that the project depends on. - - - The set of projects that the project depends on. - + + Gets the set of projects that the project depends on. + + + The set of projects that the project depends on. + - - TODO: refactor this !!! - + + TODO: refactor this !!! + - - Gets a value indicating whether building the project for the specified - build configuration results in managed output. - - The solution configuration that is built. - - . - + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The solution configuration that is built. + + . + - - Prepares the project for being built. - - The solution configuration that is built. - - Ensures the configuration-level object directory exists and ensures - that none of the output files are marked read-only. - + + Prepares the project for being built. + + The solution configuration that is built. + + Ensures the configuration-level object directory exists and ensures + that none of the output files are marked read-only. + @@ -1346,37 +1346,37 @@ - - Gets the absolute path of the type library for the project - output. - - The configuration to build. - - The absolute path of the type library for the project output. - + + Gets the absolute path of the type library for the project + output. + + The configuration to build. + + The absolute path of the type library for the project output. + - - Generates a type library for the specified assembly, registers it. - - The project configuration that is built. - The solution configuration that is built. - The path of the type library to generate. - - The regasm tool is used to generate the type library. - + + Generates a type library for the specified assembly, registers it. + + The project configuration that is built. + The solution configuration that is built. + The path of the type library to generate. + + The regasm tool is used to generate the type library. + - - Unregister a type library for the specified assembly, and the types - in that assembly. - - The project configuration that is built. - The solution configuration that is built. - - The regasm tool is used to unregister the type library, and - remove the COM registration for types in the specified assembly. - + + Unregister a type library for the specified assembly, and the types + in that assembly. + + The project configuration that is built. + The solution configuration that is built. + + The regasm tool is used to unregister the type library, and + remove the COM registration for types in the specified assembly. + @@ -1441,52 +1441,52 @@ - - Gets the default file extension of sources for this project. - - - The default file extension of sources for this project. - + + Gets the default file extension of sources for this project. + + + The default file extension of sources for this project. + - - Gets a value indicating if this is a web project. - - - if this is a web project; otherwise, - . - - - If the url of a web project has been mapped to a local path - (using the <webmap> element), then this property will return - for a - project. - + + Gets a value indicating if this is a web project. + + + if this is a web project; otherwise, + . + + + If the url of a web project has been mapped to a local path + (using the <webmap> element), then this property will return + for a + project. + - - Gets the name of the VS.NET project. - + + Gets the name of the VS.NET project. + - - Gets the path of the VS.NET project. - + + Gets the path of the VS.NET project. + - - Gets the directory containing the VS.NET project. - + + Gets the directory containing the VS.NET project. + - - Get the location of the project. - + + Get the location of the project. + - - Gets or sets the unique identifier of the VS.NET project. - + + Gets or sets the unique identifier of the VS.NET project. + @@ -1502,15 +1502,15 @@ A . - - Gets the intermediate build directory in which the satellite - assembly is built. - - The project build configuration. - - The intermediate build directory in which the satellite assembly - is built. - + + Gets the intermediate build directory in which the satellite + assembly is built. + + The project build configuration. + + The intermediate build directory in which the satellite assembly + is built. + @@ -1525,15 +1525,15 @@ - - Gets path of the satellite assembly, relative to the output - directory. - - The project settings. - - The path of the satellite assembly, relative to the output - directory. - + + Gets path of the satellite assembly, relative to the output + directory. + + The project settings. + + The path of the satellite assembly, relative to the output + directory. + @@ -1542,9 +1542,9 @@ - - Gets the set of localized resources. - + + Gets the set of localized resources. + @@ -1630,25 +1630,25 @@ - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the default file extension of sources for this project. - - - For C# projects, the default file extension is ".cs". - + + Gets the default file extension of sources for this project. + + + For C# projects, the default file extension is ".cs". + - - Supports grouping of individual projects, and treating them as a solution. - + + Supports grouping of individual projects, and treating them as a solution. + @@ -1679,14 +1679,14 @@ - - Prepares the project for being built. - - The solution configuration that is built. - - Ensures the configuration-level object directory exists and ensures - that none of the output files are marked read-only. - + + Prepares the project for being built. + + The solution configuration that is built. + + Ensures the configuration-level object directory exists and ensures + that none of the output files are marked read-only. + @@ -1744,112 +1744,112 @@ - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the default file extension of sources for this project. - - - For J# projects, the default file extension is ".jsl". - + + Gets the default file extension of sources for this project. + + + For J# projects, the default file extension is ".jsl". + - - Resolves an assembly reference. - - - The full path to the resolved assembly, or - if the assembly reference could not be resolved. - - - - Visual Studio .NET uses the following search mechanism : - - - - - The project directory. - - - - - The directories specified in the "ReferencePath" property, - which is stored in the .USER file. - - - - - The .NET Framework directory (see KB306149) - - - - - - The directories specified under the following registry - keys: - - - - - HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders - - - - - HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders - - - - - HKLM\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders - - - - - HKCU\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders - - - - - Future versions of Visual Studio .NET will also check - in: - - - - - HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx - - - - - HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx - - - - - - - - The HintPath. - - - - + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + + + + Visual Studio .NET uses the following search mechanism : + + + + + The project directory. + + + + + The directories specified in the "ReferencePath" property, + which is stored in the .USER file. + + + + + The .NET Framework directory (see KB306149) + + + + + + The directories specified under the following registry + keys: + + + + + HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders + + + + + HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders + + + + + HKLM\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders + + + + + HKCU\SOFTWARE\Microsoft\VisualStudio\<major version>.<minor version>\AssemblyFolders + + + + + Future versions of Visual Studio .NET will also check + in: + + + + + HKLM\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx + + + + + HKCU\SOFTWARE\Microsoft\.NETFramework\AssemblyFoldersEx + + + + + + + + The HintPath. + + + + - - Gets the name of the referenced assembly. - - - The name of the referenced assembly, or if - the name could not be determined. - + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + @@ -1868,37 +1868,37 @@ - - Indentifies the different output types of a managed project. - - - Visual Studio .NET does not support modules. - + + Indentifies the different output types of a managed project. + + + Visual Studio .NET does not support modules. + - - A class library. - + + A class library. + - - A console application. - + + A console application. + - - A Windows program. - + + A Windows program. + - - Gets the output path of the reference, without taking the "copy local" - setting into consideration. - - The solution configuration that is built. - - The output path of the reference. - + + Gets the output path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + @@ -1916,86 +1916,86 @@ - - Gets the complete set of assemblies that need to be referenced when - a project references this project. - - The solution configuration that is built. - - The complete set of assemblies that need to be referenced when a - project references this project. - - - - Apparently, there's some hack in VB.NET that allows a type to be used - that derives from a type in an assembly that is not referenced by the - project. - - - When building from the command line (using vbc), the following error - is reported "error BC30007: Reference required to assembly 'X' - containing the base class 'X'. Add one to your project". - - - Somehow VB.NET can workaround this issue, without actually adding a - reference to that assembly. I verified this with both VS.NET 2003 and - VS.NET 2005. - - - For now, we have no other option than to return all assembly - references of the referenced project if the parent is a VB.NET - project. - - + + Gets the complete set of assemblies that need to be referenced when + a project references this project. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this project. + + + + Apparently, there's some hack in VB.NET that allows a type to be used + that derives from a type in an assembly that is not referenced by the + project. + + + When building from the command line (using vbc), the following error + is reported "error BC30007: Reference required to assembly 'X' + containing the base class 'X'. Add one to your project". + + + Somehow VB.NET can workaround this issue, without actually adding a + reference to that assembly. I verified this with both VS.NET 2003 and + VS.NET 2005. + + + For now, we have no other option than to return all assembly + references of the referenced project if the parent is a VB.NET + project. + + - - Gets the timestamp of the reference. - - The solution configuration that is built. - - The timestamp of the reference. - + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + - - Gets a value indicating whether the output file(s) of this reference - should be copied locally. - - - if the output file(s) of this reference - should be copied locally; otherwise, . - + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the output file(s) of this reference + should be copied locally; otherwise, . + - - Gets a value indicating whether this reference represents a system - assembly. - - - as a project by itself can never be a - system assembly. - + + Gets a value indicating whether this reference represents a system + assembly. + + + as a project by itself can never be a + system assembly. + - - Gets a value indicating whether the reference is managed for the - specified configuration. - - The solution configuration that is built. - - . - + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The solution configuration that is built. + + . + - - Gets the path of the reference, without taking the "copy local" - setting into consideration. - - The solution configuration that is built. - - The output path of the reference. - + + Gets the path of the reference, without taking the "copy local" + setting into consideration. + + The solution configuration that is built. + + The output path of the reference. + @@ -2010,52 +2010,52 @@ - - Gets the complete set of assemblies that need to be referenced when - a project references this component. - - The solution configuration that is built. - - The complete set of assemblies that need to be referenced when a - project references this component. - + + Gets the complete set of assemblies that need to be referenced when + a project references this component. + + The solution configuration that is built. + + The complete set of assemblies that need to be referenced when a + project references this component. + - - Gets the timestamp of the reference. - - The solution configuration that is built. - - The timestamp of the reference. - + + Gets the timestamp of the reference. + + The solution configuration that is built. + + The timestamp of the reference. + - - Removes wrapper assembly from build directory, if wrapper assembly - no longer exists in output directory or is not in sync with build - directory, to force rebuild. - - The project configuration. + + Removes wrapper assembly from build directory, if wrapper assembly + no longer exists in output directory or is not in sync with build + directory, to force rebuild. + + The project configuration. - - Gets a value indicating whether the output file(s) of this reference - should be copied locally. - - - if the reference wraps a Primary Interop - Assembly; otherwise, . - + + Gets a value indicating whether the output file(s) of this reference + should be copied locally. + + + if the reference wraps a Primary Interop + Assembly; otherwise, . + - - Gets a value indicating whether this reference represents a system - assembly. - - - as none of the system assemblies are wrappers - or Primary Interop Assemblies anyway. - + + Gets a value indicating whether this reference represents a system + assembly. + + + as none of the system assemblies are wrappers + or Primary Interop Assemblies anyway. + @@ -2068,74 +2068,74 @@ - - Gets the path of the wrapper assembly. - - - The path of the wrapper assembly. - - - The wrapper assembly is stored in the object directory of the - project. - + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + - - Gets a value indicating whether the wrapper assembly has already been - created. - + + Gets a value indicating whether the wrapper assembly has already been + created. + - - Gets the path of the Primary Interop Assembly. - - - The path of the Primary Interop Assembly, or - if not available. - + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + - - Gets the hex version of the type library as defined in the definition - of the reference. - - - The hex version of the type library. - + + Gets the hex version of the type library as defined in the definition + of the reference. + + + The hex version of the type library. + - - Gets the GUID of the type library as defined in the definition - of the reference. - - - The GUID of the type library. - + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + - - Gets the locale of the type library in hex notation. - - - The locale of the type library. - + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + - - Gets the name of the type library. - - - The name of the type library. - + + Gets the name of the type library. + + + The name of the type library. + - - Gets the name of the referenced assembly. - - - The name of the referenced assembly, or if - the name could not be determined. - + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + @@ -2148,25 +2148,25 @@ - - Gets the path of the wrapper assembly. - - - The path of the wrapper assembly. - - - The wrapper assembly is stored in the object directory of the - project. - + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + - - Gets the path of the Primary Interop Assembly. - - - The path of the Primary Interop Assembly, or - if not available. - + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + @@ -2187,111 +2187,111 @@ - - Gets the GUID of the type library as defined in the definition - of the reference. - - - The GUID of the type library. - + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + - - Gets the locale of the type library in hex notation. - - - The locale of the type library. - + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + - - Specifies the type of the project. - + + Specifies the type of the project. + - - A Visual Basic.NET project. - + + A Visual Basic.NET project. + - - A Visual C# project. - + + A Visual C# project. + - - A Visual C++ project. - + + A Visual C++ project. + - - A Visual J# project. - + + A Visual J# project. + - - MSBuild project. - + + MSBuild project. + - - Specifies the result of the build. - + + Specifies the result of the build. + - - The build failed. - + + The build failed. + - - The build succeeded. - + + The build succeeded. + - - The build succeeded and the output was updated. - + + The build succeeded and the output was updated. + - - Visual Studio.NET 2002 - + + Visual Studio.NET 2002 + - - Visual Studio.NET 2003 - + + Visual Studio.NET 2003 + - - Visual Studio 2005 - + + Visual Studio 2005 + - - Visual Studio 2008 - + + Visual Studio 2008 + - - Visual Studio 2010 - + + Visual Studio 2010 + - - Indentifies the physical location of a managed project. - + + Indentifies the physical location of a managed project. + - - A local project. - + + A local project. + - - A web project. - + + A web project. + @@ -2357,11 +2357,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -2394,16 +2394,16 @@ The to remove from the collection. - - Remove items with the specified guid from the collection. - - The guid of the project to remove from the collection. + + Remove items with the specified guid from the collection. + + The guid of the project to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -2427,56 +2427,56 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Gets or sets the in memory representation of the project. - - - The in memory representation of the project, or - if the project is not (yet) loaded. - - - This property will always be for - projects that are not supported. - + + Gets or sets the in memory representation of the project. + + + The in memory representation of the project, or + if the project is not (yet) loaded. + + + This property will always be for + projects that are not supported. + - - Return a mapping between the configurations defined in the - solution file and the project build configurations. - - - Mapping between configurations defined in the solution file - and the project build configurations, or - if the project is not defined in a solution file. - - - This mapping only includes project build configurations that - are configured to be built for a given solution configuration. - + + Return a mapping between the configurations defined in the + solution file and the project build configurations. + + + Mapping between configurations defined in the solution file + and the project build configurations, or + if the project is not defined in a solution file. + + + This mapping only includes project build configurations that + are configured to be built for a given solution configuration. + @@ -2544,11 +2544,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -2581,10 +2581,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -2608,33 +2608,33 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Factory class for VS.NET projects. - + + Factory class for VS.NET projects. + @@ -2703,38 +2703,38 @@ - - Gets the .ico file to use as application icon. - - - The .ico file to use as application icon, or - if no application icon should be used. - + + Gets the .ico file to use as application icon. + + + The .ico file to use as application icon, or + if no application icon should be used. + - - Gets the key file to use to sign ActiveX/COM wrappers. - - - The path of the key file to use to sign ActiveX/COM wrappers, - relative to the project root directory, or - if the wrapper assembly should not be signed using a key file. - + + Gets the key file to use to sign ActiveX/COM wrappers. + + + The path of the key file to use to sign ActiveX/COM wrappers, + relative to the project root directory, or + if the wrapper assembly should not be signed using a key file. + - - Gets the key name to use to sign ActiveX/COM wrappers. - - - The name of the key container to use to sign ActiveX/COM wrappers, - or if the wrapper assembly should not be - signed using a key container. - + + Gets the key name to use to sign ActiveX/COM wrappers. + + + The name of the key container to use to sign ActiveX/COM wrappers, + or if the wrapper assembly should not be + signed using a key container. + - - Gets the output type of this project. - + + Gets the output type of this project. + @@ -2744,20 +2744,20 @@ - - Contains commands to be run before a build takes place. - - - Valid commands are those in a .bat file. For more info see MSDN. - + + Contains commands to be run before a build takes place. + + + Valid commands are those in a .bat file. For more info see MSDN. + - - Contains commands to be ran after a build has taken place. - - - Valid commands are those in a .bat file. For more info see MSDN. - + + Contains commands to be ran after a build has taken place. + + + Valid commands are those in a .bat file. For more info see MSDN. + @@ -2772,13 +2772,13 @@ - - Gets the file name of the assembly with the given assembly name. - - The assembly name of the assembly of which the file name should be returned. - - The file name of the assembly with the given assembly name. - + + Gets the file name of the assembly with the given assembly name. + + The assembly name of the assembly of which the file name should be returned. + + The file name of the assembly with the given assembly name. + @@ -2819,18 +2819,18 @@ - - Gets a value indicating whether the resource is in fact a ResX file. - - - if the resource is a ResX file; otherwise, - . - + + Gets a value indicating whether the resource is in fact a ResX file. + + + if the resource is a ResX file; otherwise, + . + - - Factory class for VS.NET solutions. - + + Factory class for VS.NET solutions. + @@ -2927,25 +2927,25 @@ - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the default file extension of sources for this project. - - - For VB projects, the default file extension is ".vb". - + + Gets the default file extension of sources for this project. + + + For VB projects, the default file extension is ".vb". + - - A mapping from properties in the .vcproj file to command line arguments. - + + A mapping from properties in the .vcproj file to command line arguments. + @@ -2954,19 +2954,19 @@ - - Gets the argument string corresponding with a configuration property - named with value . - An ignore mask can be used to eliminate some arguments from the search. - - The name of the configuration property. - The value of the configuration property. - Specify any groups that needs to be ignored. - - The argument string corresponding with a configuration property - named with value , - or if no corresponding argument exists. - + + Gets the argument string corresponding with a configuration property + named with value . + An ignore mask can be used to eliminate some arguments from the search. + + The name of the configuration property. + The value of the configuration property. + Specify any groups that needs to be ignored. + + The argument string corresponding with a configuration property + named with value , + or if no corresponding argument exists. + @@ -3164,55 +3164,55 @@ - - Gets the name of the command-line argument. - - - The name of the command-line argument. - + + Gets the name of the command-line argument. + + + The name of the command-line argument. + - - Represents a command-line arguments of which the trailing backslashes - in the value should be duplicated. - + + Represents a command-line arguments of which the trailing backslashes + in the value should be duplicated. + - - Represents a command-line argument of which the value should be - quoted, and of which trailing backslahes should be duplicated. - + + Represents a command-line argument of which the value should be + quoted, and of which trailing backslahes should be duplicated. + - - Gets the string that the configuration setting should match in - order for the command line argument to be set. - + + Gets the string that the configuration setting should match in + order for the command line argument to be set. + - - Allow us to assign an argument to a specific group. - + + Allow us to assign an argument to a specific group. + - - The argument is not assigned to any group. - + + The argument is not assigned to any group. + - - The argument is ignored when the optimization level is set to - Minimum Size (1) or Maximum Size (2). - + + The argument is ignored when the optimization level is set to + Minimum Size (1) or Maximum Size (2). + - - Resolves an assembly reference. - - - The full path to the resolved assembly, or - if the assembly reference could not be resolved. - + + Resolves an assembly reference. + + + The full path to the resolved assembly, or + if the assembly reference could not be resolved. + @@ -3227,19 +3227,19 @@ Expansion of a given macro is not yet implemented. - - Gets the name of the referenced assembly. - - - The name of the referenced assembly, or if - the name could not be determined. - + + Gets the name of the referenced assembly. + + + The name of the referenced assembly, or if + the name could not be determined. + - - A single build configuration for a Visual C++ project or for a specific - file in the project. - + + A single build configuration for a Visual C++ project or for a specific + file in the project. + @@ -3290,69 +3290,69 @@ - - Gets the intermediate directory, specified relative to project - directory. - - - The intermediate directory, specified relative to project directory. - + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + - - Gets a comma-separated list of directories to scan for assembly - references. - - - A comma-separated list of directories to scan for assembly - references, or if no additional directories - should scanned. - + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + - - Gets the name of the configuration, including the platform it - targets. - - - Tthe name of the configuration, including the platform it targets. - + + Gets the name of the configuration, including the platform it + targets. + + + Tthe name of the configuration, including the platform it targets. + - - Gets the output directory. - + + Gets the output directory. + - - Gets the path in which the output file will be created before its - copied to the actual output path. - - - For Visual C++ projects, the output file will be immediately - created in the output path. - + + Gets the path in which the output file will be created before its + copied to the actual output path. + + + For Visual C++ projects, the output file will be immediately + created in the output path. + - - Gets the name of the configuration. - - - The name of the configuration. - + + Gets the name of the configuration. + + + The name of the configuration. + - - Gets the platform that the configuration targets. - - - The platform targeted by the configuration. - + + Gets the platform that the configuration targets. + + + The platform targeted by the configuration. + - - Represents the configuration of a file. - + + Represents the configuration of a file. + @@ -3394,75 +3394,75 @@ - - Gets a value indication whether the file should be excluded from - the build for this configuration. - - - if the file should be excluded from the - build for this configuration; otherwise, . - + + Gets a value indication whether the file should be excluded from + the build for this configuration. + + + if the file should be excluded from the + build for this configuration; otherwise, . + - - Gets the relative path of the file. - - - The path of the file relative to the project directory. - + + Gets the relative path of the file. + + + The path of the file relative to the project directory. + - - Get the path of the output directory relative to the project - directory. - + + Get the path of the output directory relative to the project + directory. + - - Gets the intermediate directory, specified relative to project - directory. - - - The intermediate directory, specified relative to project directory. - + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + - - Gets the path for the output file. - - - The path for the output file, or if there's - no output file for this configuration. - + + Gets the path for the output file. + + + The path for the output file, or if there's + no output file for this configuration. + - - Gets a comma-separated list of directories to scan for assembly - references. - - - A comma-separated list of directories to scan for assembly - references, or if no additional directories - should scanned. - + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + - - Visual C++ project. - + + Visual C++ project. + - - Gets a value indicating whether building the project for the specified - build configuration results in managed output. - - The solution configuration that is built. - - if the project output for the specified build - configuration is either a Dynamic Library (dll) or an Application - (exe), and Managed Extensions are enabled; otherwise, - . - + + Gets a value indicating whether building the project for the specified + build configuration results in managed output. + + The solution configuration that is built. + + if the project output for the specified build + configuration is either a Dynamic Library (dll) or an Application + (exe), and Managed Extensions are enabled; otherwise, + . + @@ -3493,65 +3493,65 @@ - - Expands the given macro. - - The macro to expand. - - The expanded macro or if the macro is not - supported. - + + Expands the given macro. + + The macro to expand. + + The expanded macro or if the macro is not + supported. + - - Build resource files for the given configuration. - - The resource files to build. - The project configuration. - The build configuration. - - TODO: refactor this as we should always get only one element in the - list. Each res file should be built - with its own file configuration. - + + Build resource files for the given configuration. + + The resource files to build. + The project configuration. + The build configuration. + + TODO: refactor this as we should always get only one element in the + list. Each res file should be built + with its own file configuration. + - - Build Interface Definition Language files for the given - configuration. - - The IDL files to build. - The project configuration. - The build configuration. - - TODO: refactor this as we should always get only one element in the - list. Each IDL file should be built - with its own file configuration. - + + Build Interface Definition Language files for the given + configuration. + + The IDL files to build. + The project configuration. + The build configuration. + + TODO: refactor this as we should always get only one element in the + list. Each IDL file should be built + with its own file configuration. + - - Merges the specified tool setting of - with . - - - The merge is suppressed when the flag $(noinherit) is defined in - . - + + Merges the specified tool setting of + with . + + + The merge is suppressed when the flag $(noinherit) is defined in + . + - - Gets the absolute path to the object file or directory. - - The build configuration - - The absolute path to the object file or directory, or - - - We use an absolute path for the object file, otherwise - <cl> assumes a location relative to the output - directory - not the project directory. - + + Gets the absolute path to the object file or directory. + + The build configuration + + The absolute path to the object file or directory, or + + + We use an absolute path for the object file, otherwise + <cl> assumes a location relative to the output + directory - not the project directory. + @@ -3581,10 +3581,10 @@ - - Removes leading and trailing quotes from the specified path. - - The path to clean. + + Removes leading and trailing quotes from the specified path. + + The path to clean. @@ -3619,58 +3619,58 @@ - - Gets the name of the Visual C++ project. - + + Gets the name of the Visual C++ project. + - - Gets the type of the project. - - - The type of the project. - + + Gets the type of the project. + + + The type of the project. + - - Gets the path of the Visual C++ project. - + + Gets the path of the Visual C++ project. + - - Gets the directory containing the VS.NET project. - + + Gets the directory containing the VS.NET project. + - - Get the location of the project. - - - . - - - For now, we only support local Visual C++ projects. - + + Get the location of the project. + + + . + + + For now, we only support local Visual C++ projects. + - - Get the directory in which intermediate build output that is not - specific to the build configuration will be stored. - - - This is a directory relative to the project directory, - named temp\. - + + Get the directory in which intermediate build output that is not + specific to the build configuration will be stored. + + + This is a directory relative to the project directory, + named temp\. + - - Gets or sets the unique identifier of the Visual C++ project. - + + Gets or sets the unique identifier of the Visual C++ project. + - - Represents a Visual C++ project configuration. - + + Represents a Visual C++ project configuration. + @@ -3692,15 +3692,15 @@ - - Gets the value of the specified attribute from the specified node. - - The node of which the attribute value should be retrieved. - The attribute of which the value should be returned. - - The value of the attribute with the specified name or - if the attribute does not exist or has no value. - + + Gets the value of the specified attribute from the specified node. + + The node of which the attribute value should be retrieved. + The attribute of which the value should be returned. + + The value of the attribute with the specified name or + if the attribute does not exist or has no value. + @@ -3711,106 +3711,106 @@ - - Holds list of files to link in the order in which they are defined - in the project file. - + + Holds list of files to link in the order in which they are defined + in the project file. + - - Holds the C++ sources for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the C++ source files for that - build configuration. - + + Holds the C++ sources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the C++ source files for that + build configuration. + - - Holds the resources for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the resources files for that - build configuration. - + + Holds the resources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the resources files for that + build configuration. + - - Holds the IDL files for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the IDL files for that build - configuration. - + + Holds the IDL files for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the IDL files for that build + configuration. + - - Tells the compiler which character set to use. - + + Tells the compiler which character set to use. + - - Gets a value indicating whether Managed Extensions for C++ are - enabled. - + + Gets a value indicating whether Managed Extensions for C++ are + enabled. + - - Gets a value indicating how MFC is used by the configuration. - + + Gets a value indicating how MFC is used by the configuration. + - - Gets a value indicating how ATL is used by the configuration. - + + Gets a value indicating how ATL is used by the configuration. + - - Gets the list of files to link in the order in which they are - defined in the project file. - + + Gets the list of files to link in the order in which they are + defined in the project file. + - - Holds the C++ sources for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the C++ source files for that - build configuration. - + + Holds the C++ sources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the C++ source files for that + build configuration. + - - Gets the resources for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the resources files for that - build configuration. - + + Gets the resources for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the resources files for that + build configuration. + - - Get the IDL files for each build configuration. - - - The key of the hashtable is a build configuration, and the - value is an ArrayList holding the IDL files for that build - configuration. - + + Get the IDL files for each build configuration. + + + The key of the hashtable is a build configuration, and the + value is an ArrayList holding the IDL files for that build + configuration. + - - Gets the target path for usage in macro expansion. - - - The target path, or a zero-length string if there's no output file - for this configuration. - + + Gets the target path for usage in macro expansion. + + + The target path, or a zero-length string if there's no output file + for this configuration. + @@ -3830,69 +3830,69 @@ - - Get the path of the output directory relative to the project - directory. - + + Get the path of the output directory relative to the project + directory. + - - Gets the intermediate directory, specified relative to project - directory. - - - The intermediate directory, specified relative to project directory. - + + Gets the intermediate directory, specified relative to project + directory. + + + The intermediate directory, specified relative to project directory. + - - Gets the absolute path for the output file. - - - The absolute path for the output file, or - if there's no output file for this configuration. - + + Gets the absolute path for the output file. + + + The absolute path for the output file, or + if there's no output file for this configuration. + - - Gets a comma-separated list of directories to scan for assembly - references. - - - A comma-separated list of directories to scan for assembly - references, or if no additional directories - should scanned. - + + Gets a comma-separated list of directories to scan for assembly + references. + + + A comma-separated list of directories to scan for assembly + references, or if no additional directories + should scanned. + - - The type of output for a given configuration. - + + The type of output for a given configuration. + - - A Makefile. - + + A Makefile. + - - Application (.exe). - + + Application (.exe). + - - Dynamic Library (.dll). - + + Dynamic Library (.dll). + - - Static Library (.lib). - + + Static Library (.lib). + - - Utility. - + + Utility. + @@ -3906,23 +3906,23 @@ - - Gets a value indicating whether the reference is managed for the - specified configuration. - - The build configuration of the reference. - - if the reference is managed for the - specified configuration; otherwise, . - + + Gets a value indicating whether the reference is managed for the + specified configuration. + + The build configuration of the reference. + + if the reference is managed for the + specified configuration; otherwise, . + - - Gets the name of the referenced assembly. - - - The name of the referenced assembly. - + + Gets the name of the referenced assembly. + + + The name of the referenced assembly. + @@ -3935,25 +3935,25 @@ - - Gets the path of the wrapper assembly. - - - The path of the wrapper assembly. - - - The wrapper assembly is stored in the object directory of the - project. - + + Gets the path of the wrapper assembly. + + + The path of the wrapper assembly. + + + The wrapper assembly is stored in the object directory of the + project. + - - Gets the path of the Primary Interop Assembly. - - - The path of the Primary Interop Assembly, or - if not available. - + + Gets the path of the Primary Interop Assembly. + + + The path of the Primary Interop Assembly, or + if not available. + @@ -3966,21 +3966,21 @@ The definition of the reference does not contain a "ControlVersion" attribute. - - Gets the GUID of the type library as defined in the definition - of the reference. - - - The GUID of the type library. - + + Gets the GUID of the type library as defined in the definition + of the reference. + + + The GUID of the type library. + - - Gets the locale of the type library in hex notation. - - - The locale of the type library. - + + Gets the locale of the type library in hex notation. + + + The locale of the type library. + diff --git a/example_scripts/Tools/nant/bin/NAnt.VisualCppTasks.xml b/example_scripts/Tools/nant/bin/NAnt.VisualCppTasks.xml index 876d46d..95a9075 100644 --- a/example_scripts/Tools/nant/bin/NAnt.VisualCppTasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.VisualCppTasks.xml @@ -5,24 +5,24 @@ - - Compiles C/C++ programs using cl.exe, Microsoft's C/C++ compiler. - - - This task is intended for version 13.00.9466 of cl.exe. - - - Compiles helloworld.cpp for the Common Language Runtime. - - - - - - - ]]> - - + + Compiles C/C++ programs using cl.exe, Microsoft's C/C++ compiler. + + + This task is intended for version 13.00.9466 of cl.exe. + + + Compiles helloworld.cpp for the Common Language Runtime. + + + + + + + ]]> + + @@ -30,77 +30,77 @@ - - Compiles the sources. - + + Compiles the sources. + - - Determines if the sources need to be compiled. - + + Determines if the sources need to be compiled. + - - Determines whether the precompiled header file is up-to-date. - - - if no precompiled header file was specified; - otherwise, . - - - In order to determine accurately whether the precompile header file - is up-to-date, we'd need scan all the header files that are pulled - in. As this is not implemented right now, its safer to always - recompile. - + + Determines whether the precompiled header file is up-to-date. + + + if no precompiled header file was specified; + otherwise, . + + + In order to determine accurately whether the precompile header file + is up-to-date, we'd need scan all the header files that are pulled + in. As this is not implemented right now, its safer to always + recompile. + - - Determines whether any file that are includes in the specified - source file has been updated after the obj was compiled. - - The source file to check. - The last write time of the compiled obj. - - The full path to the include file that was modified after the obj - was compiled, or if no include files were - modified since the obj was compiled. - - - - To determine what includes are defined in a source file, conditional - directives are not honored. - - - If a given include cannot be resolved to an existing file, then - it will be considered stable. - - + + Determines whether any file that are includes in the specified + source file has been updated after the obj was compiled. + + The source file to check. + The last write time of the compiled obj. + + The full path to the include file that was modified after the obj + was compiled, or if no include files were + modified since the obj was compiled. + + + + To determine what includes are defined in a source file, conditional + directives are not honored. + + + If a given include cannot be resolved to an existing file, then + it will be considered stable. + + - - Quotes an argument value and duplicates trailing backslahes. - - The argument value to quote. - - The quotes argument value. - + + Quotes an argument value and duplicates trailing backslahes. + + The argument value to quote. + + The quotes argument value. + - - Determines the file name of the OBJ file for the specified source - file. - - The source file for which the OBJ file should be determined. - The path of the object file. - - The file name of the OBJ file for the specified source file. - + + Determines the file name of the OBJ file for the specified source + file. + + The source file for which the OBJ file should be determined. + The path of the object file. + + The file name of the OBJ file for the specified source file. + - - Directory where all output files are placed. - + + Directory where all output files are placed. + @@ -123,244 +123,244 @@ - - Specifies whether Managed Extensions for C++ should be enabled. - The default is . - + + Specifies whether Managed Extensions for C++ should be enabled. + The default is . + - - Tells the compiler to use the specified character set. - + + Tells the compiler to use the specified character set. + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - The list of files to compile. - + + The list of files to compile. + - - The list of directories in which to search for include files. - + + The list of directories in which to search for include files. + - - Directories that the compiler will search to resolve file references - passed to the #using directive. - + + Directories that the compiler will search to resolve file references + passed to the #using directive. + - - Specifies metadata files to reference in this compilation as an - alternative to passing a file name to #using in source code. - + + Specifies metadata files to reference in this compilation as an + alternative to passing a file name to #using in source code. + - - Macro definitions to pass to cl.exe. - Each entry will generate a /D - + + Macro definitions to pass to cl.exe. + Each entry will generate a /D + - - Macro undefines (/U) to pass to cl.exe. - + + Macro undefines (/U) to pass to cl.exe. + - - A name to override the default object file name; can be either a file - or directory name. The default is the output directory. - + + A name to override the default object file name; can be either a file + or directory name. The default is the output directory. + - - A name for the compiler-generated PDB file; can be either a file or - directory name. The default is the output directory. - + + A name for the compiler-generated PDB file; can be either a file or + directory name. The default is the output directory. + - - Gets the filename of the external program to start. - - The filename of the external program. + + Gets the filename of the external program to start. + + The filename of the external program. - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Defines the supported modes for the use of precompiled header files. - + + Defines the supported modes for the use of precompiled header files. + - - Create a precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yc. - + + Create a precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yc. + - - Automatically create a precompiled header file if necessary. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /YX. - + + Automatically create a precompiled header file if necessary. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /YX. + - - Use a (previously generated) precompiled header file. - - - For further information on the use of this option - see the Microsoft documentation on the C++ compiler flag /Yu. - + + Use a (previously generated) precompiled header file. + + + For further information on the use of this option + see the Microsoft documentation on the C++ compiler flag /Yu. + - - Run lib.exe, Microsoft's Library Manager. - - - Create a library. - - - - - - - ]]> - - + + Run lib.exe, Microsoft's Library Manager. + + + Create a library. + + + + + + + ]]> + + - - Creates the library. - + + Creates the library. + - - Determines if the sources need to be linked. - + + Determines if the sources need to be linked. + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - The output file. - + + The output file. + - - The module definition file. - + + The module definition file. + - - The list of files to combine into the output file. - + + The list of files to combine into the output file. + - - Symbols to add to the symbol table. - + + Symbols to add to the symbol table. + - - Names of default libraries to ignore. - + + Names of default libraries to ignore. + - - The list of additional library directories to search. - + + The list of additional library directories to search. + - - Gets the filename of the external program to start. - - The filename of the external program. + + Gets the filename of the external program to start. + + The filename of the external program. - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Links files using link.exe, Microsoft's Incremental Linker. - - - This task is intended for version 7.00.9466 of link.exe. - - - - Combine all object files in the current directory into helloworld.exe. - - - - - - - - ]]> - - + + Links files using link.exe, Microsoft's Incremental Linker. + + + This task is intended for version 7.00.9466 of link.exe. + + + + Combine all object files in the current directory into helloworld.exe. + + + + + + + + ]]> + + - - Links the sources. - + + Links the sources. + - - Determines if the output needs linking. - + + Determines if the output needs linking. + - - Quotes an argument value and duplicates trailing backslahes. - - The argument value to quote. - - The quotes argument value. - + + Quotes an argument value and duplicates trailing backslahes. + + The argument value to quote. + + The quotes argument value. + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - Create debugging information for the .exe file or DLL. The default is - . - + + Create debugging information for the .exe file or DLL. The default is + . + - - The output file. - + + The output file. + @@ -370,237 +370,237 @@ - - The name of a module-definition file (.def) to be passed to the - linker. - + + The name of a module-definition file (.def) to be passed to the + linker. + - - Specified DLLs for delay loading. - + + Specified DLLs for delay loading. + - - The list of files to combine into the output file. - + + The list of files to combine into the output file. + - - The list of additional library directories to search. - + + The list of additional library directories to search. + - - Link the specified modules into this assembly. - + + Link the specified modules into this assembly. + - - Embed the specified resources into this assembly. - + + Embed the specified resources into this assembly. + - - Symbols to add to the symbol table. - + + Symbols to add to the symbol table. + - - Names of libraries that you want the linker to ignore when it - resolves external references. - + + Names of libraries that you want the linker to ignore when it + resolves external references. + - - Gets the filename of the external program to start. - - The filename of the external program. + + Gets the filename of the external program to start. + + The filename of the external program. - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Compiles messages using mc.exe, Microsoft's Win32 message compiler. - - - - Compile text.mc using the default options. - - - - ]]> - - - Compile text.mc, passing a path to store the header, the rc - file and some additonal options. - - - - ]]> - - + + Compiles messages using mc.exe, Microsoft's Win32 message compiler. + + + + Compile text.mc using the default options. + + + + ]]> + + + Compile text.mc, passing a path to store the header, the rc + file and some additonal options. + + + + ]]> + + - - Compiles the sources. - + + Compiles the sources. + - - Determine if source files need re-building. - + + Determine if source files need re-building. + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - Path to store header file. The default is the project base directory. - + + Path to store header file. The default is the project base directory. + - - Path to store RC file. The default is the project base directory. - + + Path to store RC file. The default is the project base directory. + - - Input filename. - + + Input filename. + - - Gets the filename of the external program to start. - - - The filename of the external program. - + + Gets the filename of the external program to start. + + + The filename of the external program. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - This tasks allows you to run MIDL.exe. - - - - This task only supports a small subset of the MIDL.EXE command line - switches, but you can use the options element to specify any other - unsupported commands you want to specify. - - - - - - - - - - - - - ]]> - - + + This tasks allows you to run MIDL.exe. + + + + This task only supports a small subset of the MIDL.EXE command line + switches, but you can use the options element to specify any other + unsupported commands you want to specify. + + + + + + + + + + + + + ]]> + + - - This is where the work is done. - + + This is where the work is done. + - - Check output files to see if we need rebuilding. - - if a rebuild is needed; otherwise, - . + + Check output files to see if we need rebuilding. + + if a rebuild is needed; otherwise, + . - - Check output files to see if we need rebuilding. - - - if a rebuild is needed; otherwise, - . - + + Check output files to see if we need rebuilding. + + + if a rebuild is needed; otherwise, + . + - - Writes the response file for midl.exe. - + + Writes the response file for midl.exe. + - - The /acf switch allows the user to supply an - explicit ACF file name. The switch also - allows the use of different interface names in - the IDL and ACF files. - + + The /acf switch allows the user to supply an + explicit ACF file name. The switch also + allows the use of different interface names in + the IDL and ACF files. + - - The /align switch is functionally the same as the - MIDL /Zp option and is recognized by the MIDL compiler - solely for backward compatibility with MkTypLib. - - The alignment value can be 1, 2, 4, or 8. + + The /align switch is functionally the same as the + MIDL /Zp option and is recognized by the MIDL compiler + solely for backward compatibility with MkTypLib. + + The alignment value can be 1, 2, 4, or 8. - - The /app_config switch selects application-configuration - mode, which allows you to use some ACF keywords in the - IDL file. With this MIDL compiler switch, you can omit - the ACF and specify an interface in a single IDL file. - + + The /app_config switch selects application-configuration + mode, which allows you to use some ACF keywords in the + IDL file. With this MIDL compiler switch, you can omit + the ACF and specify an interface in a single IDL file. + - - The /char switch helps to ensure that the MIDL compiler - and C compiler operate together correctly for all char - and small types. - - Can be one of signed | unsigned | ascii7 + + The /char switch helps to ensure that the MIDL compiler + and C compiler operate together correctly for all char + and small types. + + Can be one of signed | unsigned | ascii7 - - The /client switch directs the MIDL compiler to generate - client-side C source files for an RPC interface - - can be one of stub | none + + The /client switch directs the MIDL compiler to generate + client-side C source files for an RPC interface + + can be one of stub | none - - The /cstub switch specifies the name of the client - stub file for an RPC interface. - + + The /cstub switch specifies the name of the client + stub file for an RPC interface. + @@ -610,198 +610,198 @@ - - The /env switch selects the - environment in which the application runs. - - It can take the values win32 and win64 + + The /env switch selects the + environment in which the application runs. + + It can take the values win32 and win64 - - The /Oi switch directs the MIDL compiler to - use a fully-interpreted marshaling method. - The /Oic and /Oicf switches provide additional - performance enhancements. - - - If you specify the Oi attribute, you must set it to - one of the values: - - Oi="" - - Oi="c" - - Oi="f" - - Oi="cf" - + + The /Oi switch directs the MIDL compiler to + use a fully-interpreted marshaling method. + The /Oic and /Oicf switches provide additional + performance enhancements. + + + If you specify the Oi attribute, you must set it to + one of the values: + - Oi="" + - Oi="c" + - Oi="f" + - Oi="cf" + - - Specifies a file name for the type library generated by the MIDL - compiler. - + + Specifies a file name for the type library generated by the MIDL + compiler. + - - Specifies the name of the header file. - + + Specifies the name of the header file. + - - Specifies the name of the interface identifier file for a COM - interface, overriding the default name obtained by adding _i.c - to the IDL file name. - + + Specifies the name of the interface identifier file for a COM + interface, overriding the default name obtained by adding _i.c + to the IDL file name. + - - Specifies the name of the interface proxy file for a COM interface. - + + Specifies the name of the interface proxy file for a COM interface. + - - Name of .IDL file to process. - + + Name of .IDL file to process. + - - Additional options to pass to midl.exe. - + + Additional options to pass to midl.exe. + - - Macro definitions to pass to mdil.exe. - Each entry will generate a /D - + + Macro definitions to pass to mdil.exe. + Each entry will generate a /D + - - Macro undefines (/U) to pass to mdil. - + + Macro undefines (/U) to pass to mdil. + - - The list of directories in which to search for include files. - + + The list of directories in which to search for include files. + - - Filename of program to execute - + + Filename of program to execute + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Compiles resources using rc.exe, Microsoft's Win32 resource - compiler. - - - - Compile text.rc to text.res using the default options. - - - - ]]> - - - - - Compile text.rc, passing an additional option. - - - - ]]> - - + + Compiles resources using rc.exe, Microsoft's Win32 resource + compiler. + + + + Compile text.rc to text.res using the default options. + + + + ]]> + + + + + Compile text.rc, passing an additional option. + + + + ]]> + + - - Compile the resource file - + + Compile the resource file + - - Determines if the resource need compiling. - + + Determines if the resource need compiling. + - - Check if a resource file has been updated. - - - + + Check if a resource file has been updated. + + + - - Options to pass to the compiler. - + + Options to pass to the compiler. + - - Output file. - + + Output file. + - - The resource file to compile. - + + The resource file to compile. + - - Default language ID. - + + Default language ID. + - - The list of directories in which to search for include files. - + + The list of directories in which to search for include files. + - - Macro definitions to pass to rc.exe. - Each entry will generate a /d - + + Macro definitions to pass to rc.exe. + Each entry will generate a /d + - - Filename of program to execute - + + Filename of program to execute + - - Arguments of program to execute - + + Arguments of program to execute + - - Defines the character sets that can be used by the C++ compiler. - + + Defines the character sets that can be used by the C++ compiler. + - - Have the compiler determine the character set. - + + Have the compiler determine the character set. + - - Unicode character set. - + + Unicode character set. + - - Multi-byte character set. - + + Multi-byte character set. + - - Represents a library. - + + Represents a library. + @@ -816,21 +816,21 @@ is . - - The name of the library. - + + The name of the library. + - - If then the element will be processed; - otherwise, skipped. The default is . - + + If then the element will be processed; + otherwise, skipped. The default is . + - - If then the element will be skipped; - otherwise, processed. The default is . - + + If then the element will be skipped; + otherwise, processed. The default is . + @@ -884,11 +884,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -921,10 +921,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -939,33 +939,33 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Represents a symbol. - + + Represents a symbol. + @@ -980,21 +980,21 @@ is . - - The name of the symbol. - + + The name of the symbol. + - - If then the element will be processed; - otherwise, skipped. The default is . - + + If then the element will be processed; + otherwise, skipped. The default is . + - - If then the element will be skipped; - otherwise, processed. The default is . - + + If then the element will be skipped; + otherwise, processed. The default is . + @@ -1048,11 +1048,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -1085,10 +1085,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -1103,55 +1103,55 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Defines how to deal with backslashes in values of command line - arguments. - + + Defines how to deal with backslashes in values of command line + arguments. + - - Does not perform any processing on backslashes. - + + Does not perform any processing on backslashes. + - - Duplicates the trailing backslash. - + + Duplicates the trailing backslash. + - - Fixes the trailing backslash by replaces trailing double backslashes - with only one backslash and removing single trailing backslashes. - + + Fixes the trailing backslash by replaces trailing double backslashes + with only one backslash and removing single trailing backslashes. + - - Removes all the trailing backslashes. - + + Removes all the trailing backslashes. + @@ -1172,29 +1172,29 @@ - - Duplicates the trailing backslash. - - The input string to check and duplicate the trailing backslash if necessary. - The result string after being processed. - - Also duplicates trailing backslash in quoted value. - + + Duplicates the trailing backslash. + + The input string to check and duplicate the trailing backslash if necessary. + The result string after being processed. + + Also duplicates trailing backslash in quoted value. + - - Fixes the trailing backslash. This function replaces the trailing double backslashes with - only one backslash. It also, removes the single trailing backslash. - - The input string. - The result string after being processed. + + Fixes the trailing backslash. This function replaces the trailing double backslashes with + only one backslash. It also, removes the single trailing backslash. + + The input string. + The result string after being processed. - - Removes all the trailing backslashes from the input. - - The input string. - The result string without trailing backslashes. + + Removes all the trailing backslashes from the input. + + The input string. + The result string without trailing backslashes. diff --git a/example_scripts/Tools/nant/bin/NAnt.Win32Tasks.xml b/example_scripts/Tools/nant/bin/NAnt.Win32Tasks.xml index 0fb6349..1478bd8 100644 --- a/example_scripts/Tools/nant/bin/NAnt.Win32Tasks.xml +++ b/example_scripts/Tools/nant/bin/NAnt.Win32Tasks.xml @@ -5,15 +5,15 @@ - - Groups a set of functions that convert Windows native filenames to - Cygwin POSIX-style pathnames and vice versa. - - - It can be used when a Cygwin program needs to pass a file name to a - native Windows program, or expects to get a file name from a native - Windows program. - + + Groups a set of functions that convert Windows native filenames to + Cygwin POSIX-style pathnames and vice versa. + + + It can be used when a Cygwin program needs to pass a file name to a + native Windows program, or expects to get a file name from a native + Windows program. + @@ -67,128 +67,128 @@ - - Factory method to return a new instance of ExecTask - - - + + Factory method to return a new instance of ExecTask + + + - - Generates a Windows Forms Control that wraps ActiveX Controls defined - in an OCX. - - - - - ]]> - - + + Generates a Windows Forms Control that wraps ActiveX Controls defined + in an OCX. + + + + + ]]> + + - - Import the ActiveX control. - + + Import the ActiveX control. + - - Determines whether the assembly needs to be created again. - - - if the assembly needs to be created again; - otherwise, . - + + Determines whether the assembly needs to be created again. + + + if the assembly needs to be created again; + otherwise, . + - - Filename of the .ocx file. - + + Filename of the .ocx file. + - - Filename of the generated assembly. - + + Filename of the generated assembly. + - - Specifies the file containing the public key to use to sign the - resulting assembly. - - - The file containing the public key to use to sign the resulting - assembly. - + + Specifies the file containing the public key to use to sign the + resulting assembly. + + + The file containing the public key to use to sign the resulting + assembly. + - - Specifies the publisher's official public/private key pair with which - the resulting assembly should be signed with a strong name. - - - The keyfile to use to sign the resulting assembly with a strong name. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the publisher's official public/private key pair with which + the resulting assembly should be signed with a strong name. + + + The keyfile to use to sign the resulting assembly with a strong name. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the key container in which the public/private key pair - should be found that should be used to sign the resulting assembly - with a strong name. - - - The key container containing a public/private key pair that should - be used to sign the resulting assembly. - + + Specifies the key container in which the public/private key pair + should be found that should be used to sign the resulting assembly + with a strong name. + + + The key container containing a public/private key pair that should + be used to sign the resulting assembly. + - - Specifies to sign the resulting control using delayed signing. - + + Specifies to sign the resulting control using delayed signing. + - - Determines whether C# source code for the Windows Form wrapper should - be generated. The default is . - + + Determines whether C# source code for the Windows Form wrapper should + be generated. The default is . + - - Assembly to use for Runtime Callable Wrapper rather than generating - new one [.NET 1.1 or higher]. - + + Assembly to use for Runtime Callable Wrapper rather than generating + new one [.NET 1.1 or higher]. + - - Indicates whether aximp supports using an existing Runtime - Callable Wrapper for a given target framework. The default is - . - + + Indicates whether aximp supports using an existing Runtime + Callable Wrapper for a given target framework. The default is + . + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Reads the most recent Windows SDK InstallationFolder key into a NAnt property - - - - - ]]> - - + + Reads the most recent Windows SDK InstallationFolder key into a NAnt property + + + + + ]]> + + - - locate the most recent WinSDK installed - + + locate the most recent WinSDK installed + @@ -202,153 +202,153 @@ - - - The property to set to the value stored in the InstalledFolder key of the located WinSDK version. - - + + + The property to set to the value stored in the InstalledFolder key of the located WinSDK version. + + - - - The minimum acceptable Windows SDK version. - - + + + The minimum acceptable Windows SDK version. + + - - - The maximum acceptable Windows SDK version. - - + + + The maximum acceptable Windows SDK version. + + - - - The minimum acceptable .NET sdk version. - - + + + The minimum acceptable .NET sdk version. + + - - - The maximum acceptable .NET sdk version. - - + + + The maximum acceptable .NET sdk version. + + - - Reads the mono registry path into a NAnt property. - - - The mono registry keyes can exist in one of two places depending on the platform. This - task will check to see which registry path that Mono is using. - - - - - ]]> - - + + Reads the mono registry path into a NAnt property. + + + The mono registry keyes can exist in one of two places depending on the platform. This + task will check to see which registry path that Mono is using. + + + + + ]]> + + - - The Mono reg key to default to if none of the keys in _regKeys are found - in the running machine. - + + The Mono reg key to default to if none of the keys in _regKeys are found + in the running machine. + - - Private property name to assign the Mono registry path to. - + + Private property name to assign the Mono registry path to. + - - Private array of Mono registry paths to test in order. - - - If new registry paths are used by the Mono team, add them to this array. - + + Private array of Mono registry paths to test in order. + + + If new registry paths are used by the Mono team, add them to this array. + - - Locates the appropriate Mono registry path to use. - + + Locates the appropriate Mono registry path to use. + - - - The property to set to the Mono registry path. - - + + + The property to set to the Mono registry path. + + - - Reads a value or set of values from the Windows Registry into one or - more NAnt properties. - - - Read a single value from the registry. - - - ]]> - - Read all the registry values in a key. - - - ]]> - - + + Reads a value or set of values from the Windows Registry into one or + more NAnt properties. + + + Read a single value from the registry. + + + ]]> + + Read all the registry values in a key. + + + ]]> + + - - read the specified registry value - + + read the specified registry value + - - Returns the hive for a given key. - - - - - The hive for a given key. - + + Returns the hive for a given key. + + + + + The hive for a given key. + - - Returns the key for a given registry hive. - - The registry hive to return the key for. - - The key for a given registry hive. - + + Returns the key for a given registry hive. + + The registry hive to return the key for. + + The key for a given registry hive. + - - The property to set to the specified registry key value. - If this attribute is used then a single value will be read. - + + The property to set to the specified registry key value. + If this attribute is used then a single value will be read. + - - The prefix to use for the specified registry key values. - If this attribute is used then all registry values will be read and stored as properties with this prefix. - - - Registry values a, b, c will be turned into prefixa, prefixb, prefixc named properties - + + The prefix to use for the specified registry key values. + If this attribute is used then all registry values will be read and stored as properties with this prefix. + + + Registry values a, b, c will be turned into prefixa, prefixb, prefixc named properties + - - The registry key to read, including the path. - - - SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot - + + The registry key to read, including the path. + + + SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot + @@ -361,55 +361,55 @@ - - Registers an assembly, or set of assemblies for use from COM clients. - - - - Refer to the Regasm - documentation for more information on the regasm tool. - - - - - Register types in a single assembly. - - - - ]]> - - - - - Register types of an assembly and generate a type library containing - definitions of accessible types defined within the assembly. - - - - ]]> - - - - - Register types of set of assemblies at once, while specifying a set - of reference assemblies. - - - - - - - - - - - - ]]> - - + + Registers an assembly, or set of assemblies for use from COM clients. + + + + Refer to the Regasm + documentation for more information on the regasm tool. + + + + + Register types in a single assembly. + + + + ]]> + + + + + Register types of an assembly and generate a type library containing + definitions of accessible types defined within the assembly. + + + + ]]> + + + + + Register types of set of assemblies at once, while specifying a set + of reference assemblies. + + + + + + + + + + + + ]]> + + @@ -419,9 +419,9 @@ The of which the should be updated. - - Registers or unregisters a single assembly, or a group of assemblies. - + + Registers or unregisters a single assembly, or a group of assemblies. + @@ -430,371 +430,371 @@ - - Registry file to export to instead of entering the types directly - into the registry. - + + Registry file to export to instead of entering the types directly + into the registry. + - - Set the code base registry setting. - + + Set the code base registry setting. + - - Only refer to already registered type libraries. - + + Only refer to already registered type libraries. + - - Export the assemblies to the specified type library and register it. - + + Export the assemblies to the specified type library and register it. + - - Unregister the assembly. The default is . - + + Unregister the assembly. The default is . + - - The set of assemblies to register, or unregister. - + + The set of assemblies to register, or unregister. + - - The set of assembly references. - + + The set of assembly references. + - - Gets the working directory for the application. - - - The working directory for the application. - + + Gets the working directory for the application. + + + The working directory for the application. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Gets the filename of the external program to start. - - - The filename of the external program. - - - Override in derived classes to explicitly set the location of the - external tool. - + + Gets the filename of the external program to start. + + + The filename of the external program. + + + Override in derived classes to explicitly set the location of the + external tool. + - - Exports a .NET assembly to a type library that can be used from unmanaged - code (wraps Microsoft's tlbexp.exe). - - - - See the Microsoft.NET Framework SDK documentation for details. - - - - Export DotNetAssembly.dll to LegacyCOM.dll. - - - ]]> - - + + Exports a .NET assembly to a type library that can be used from unmanaged + code (wraps Microsoft's tlbexp.exe). + + + + See the Microsoft.NET Framework SDK documentation for details. + + + + Export DotNetAssembly.dll to LegacyCOM.dll. + + + ]]> + + - - Exports the type library. - + + Exports the type library. + - - Determines whether the assembly needs to be exported to a type - library again. - - - if the assembly needs to be exported to a - type library; otherwise, . - + + Determines whether the assembly needs to be exported to a type + library again. + + + if the assembly needs to be exported to a + type library; otherwise, . + - - Specifies the assembly for which to export a type library. - - - The assembly for which to export a type library. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the assembly for which to export a type library. + + + The assembly for which to export a type library. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the name of the type library file to generate. - - - The name of the type library file to generate. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the name of the type library file to generate. + + + The name of the type library file to generate. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the file used to determine capitalization of names in a - type library. - - - The file used to determine capitalization of names in a type library. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the file used to determine capitalization of names in a + type library. + + + The file used to determine capitalization of names in a type library. + + See the Microsoft.NET Framework SDK documentation for details. - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Imports a type library to a .NET assembly (wraps Microsoft's tlbimp.exe). - - - - This task lets you easily create interop assemblies. By default, it will - not reimport if the underlying COM TypeLib or reference has not changed. - - - See the Microsoft.NET Framework SDK documentation for details. - - - - Import LegacyCOM.dll to DotNetAssembly.dll. - - - ]]> - - - - - Generate an assembly named "Interop.MSVidCtlLib.dll" for the - MS Video Control 1.0 Type Library, transforming any [out, retval] - parameters of methods on dispinterfaces in the type library into - return values in the managed library. - - - - - - - - ]]> - - + + Imports a type library to a .NET assembly (wraps Microsoft's tlbimp.exe). + + + + This task lets you easily create interop assemblies. By default, it will + not reimport if the underlying COM TypeLib or reference has not changed. + + + See the Microsoft.NET Framework SDK documentation for details. + + + + Import LegacyCOM.dll to DotNetAssembly.dll. + + + ]]> + + + + + Generate an assembly named "Interop.MSVidCtlLib.dll" for the + MS Video Control 1.0 Type Library, transforming any [out, retval] + parameters of methods on dispinterfaces in the type library into + return values in the managed library. + + + + + + + + ]]> + + - - Imports the type library to a .NET assembly. - + + Imports the type library to a .NET assembly. + - - Returns the path of the type library, removing the identifier of - the type library from the specified string. - - The path from which to extract the path of the type library. - - The path of the type library without the type library identifier. - - - An example of a path which includes the identifier of the type - library (in this case "2") is - C:\WINDOWS\system32\msvidctl.dll\2. - + + Returns the path of the type library, removing the identifier of + the type library from the specified string. + + The path from which to extract the path of the type library. + + The path of the type library without the type library identifier. + + + An example of a path which includes the identifier of the type + library (in this case "2") is + C:\WINDOWS\system32\msvidctl.dll\2. + - - Determines whether the type library needs to be imported again. - - - if the type library needs to be imported; - otherwise, . - + + Determines whether the type library needs to be imported again. + + + if the type library needs to be imported; + otherwise, . + - - Specifies the name of the output file. - - - The name of the output file. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the name of the output file. + + + The name of the output file. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the namespace in which to produce the assembly. - - - The namespace in which to produce the assembly. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the namespace in which to produce the assembly. + + + The namespace in which to produce the assembly. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the version number of the assembly to produce. - - - - The version number of the assembly to produce. - - - The version number should be in the format major.minor.build.revision. - - - See the Microsoft.NET Framework SDK documentation for details. - - + + Specifies the version number of the assembly to produce. + + + + The version number of the assembly to produce. + + + The version number should be in the format major.minor.build.revision. + + + See the Microsoft.NET Framework SDK documentation for details. + + - - Specifies whether the resulting assembly should be signed with a - strong name using delayed signing. The default is . - - - if the resulting assembly should be signed - with a strong name using delayed signing; otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether the resulting assembly should be signed with a + strong name using delayed signing. The default is . + + + if the resulting assembly should be signed + with a strong name using delayed signing; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether a primary interop assembly should be produced for - the specified type library. The default is . - - - if a primary interop assembly should be - produced; otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether a primary interop assembly should be produced for + the specified type library. The default is . + + + if a primary interop assembly should be + produced; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the file containing the public key to use to sign the - resulting assembly. - - - The file containing the public key to use to sign the resulting - assembly. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the file containing the public key to use to sign the + resulting assembly. + + + The file containing the public key to use to sign the resulting + assembly. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the publisher's official public/private key pair with which - the resulting assembly should be signed with a strong name. - - - The keyfile to use to sign the resulting assembly with a strong name. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the publisher's official public/private key pair with which + the resulting assembly should be signed with a strong name. + + + The keyfile to use to sign the resulting assembly with a strong name. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the key container in which the public/private key pair - should be found that should be used to sign the resulting assembly - with a strong name. - - - The key container containing a public/private key pair that should - be used to sign the resulting assembly. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the key container in which the public/private key pair + should be found that should be used to sign the resulting assembly + with a strong name. + + + The key container containing a public/private key pair that should + be used to sign the resulting assembly. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies the assembly files to use to resolve references to types - defined outside the current type library. - - - The assembly files to use to resolve references to types defined - outside the current type library. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the assembly files to use to resolve references to types + defined outside the current type library. + + + The assembly files to use to resolve references to types defined + outside the current type library. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether a type library should not be imported if all - references within the current assembly or the reference assemblies - cannot be resolved. The default is . - - - if a type library should not be imported if - all references cannot be resolved; otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether a type library should not be imported if all + references within the current assembly or the reference assemblies + cannot be resolved. The default is . + + + if a type library should not be imported if + all references cannot be resolved; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether to import a COM style SafeArray as a managed - class type. The default is . - - - if a COM style SafeArray should be imported - as a managed class type; otherwise, - . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether to import a COM style SafeArray as a managed + class type. The default is . + + + if a COM style SafeArray should be imported + as a managed class type; otherwise, + . + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies how to transform the metadata [.NET 1.1 or higher]. - + + Specifies how to transform the metadata [.NET 1.1 or higher]. + - - Specifies the source type library that gets passed to the type - library importer. - - - The source type library that gets passed to the type library - importer. - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies the source type library that gets passed to the type + library importer. + + + The source type library that gets passed to the type library + importer. + + See the Microsoft.NET Framework SDK documentation for details. - - Specifies whether interfaces should be produced without .NET Framework - security checks. The default is . - - - if interfaces without .NET Framework security - checks should be produced; otherwise, . - - See the Microsoft.NET Framework SDK documentation for details. + + Specifies whether interfaces should be produced without .NET Framework + security checks. The default is . + + + if interfaces without .NET Framework security + checks should be produced; otherwise, . + + See the Microsoft.NET Framework SDK documentation for details. - - Indicates whether tlbimp supports transforming metadata for - a given target framework. The default is . - + + Indicates whether tlbimp supports transforming metadata for + a given target framework. The default is . + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + diff --git a/example_scripts/Tools/nant/bin/NAnt.xml b/example_scripts/Tools/nant/bin/NAnt.xml index 64a0575..286dda1 100644 --- a/example_scripts/Tools/nant/bin/NAnt.xml +++ b/example_scripts/Tools/nant/bin/NAnt.xml @@ -11,47 +11,47 @@ - - Entry point for executable - - Command Line arguments - The result of the real execution + + Entry point for executable + + Command Line arguments + The result of the real execution - - Constructs the privatebinpath. - - - - For the common version dir, we do not use the framework version - as defined in the NAnt configuration file but the CLR version - since the assemblies in that directory are not specific to a - certain family and the framwork version might differ between - families (eg. mono 1.0 == .NET 1.1). - - - The runtime framework. - The base directory of the domain. - - The privatebinpath. - + + Constructs the privatebinpath. + + + + For the common version dir, we do not use the framework version + as defined in the NAnt configuration file but the CLR version + since the assemblies in that directory are not specific to a + certain family and the framwork version might differ between + families (eg. mono 1.0 == .NET 1.1). + + + The runtime framework. + The base directory of the domain. + + The privatebinpath. + - - Given an absolute directory and an absolute file name, returns a - relative file name. - - An absolute directory. - An absolute file name. - - A relative file name for the given absolute file name. - + + Given an absolute directory and an absolute file name, returns a + relative file name. + + An absolute directory. + An absolute file name. + + A relative file name for the given absolute file name. + - - Helper class for invoking the application entry point in NAnt.Core - and passing the command-line arguments. - + + Helper class for invoking the application entry point in NAnt.Core + and passing the command-line arguments. + @@ -62,17 +62,17 @@ Directories relative to the base directory of the AppDomain to probe for missing assembly references. - - Invokes the application entry point in NAnt.Core. - + + Invokes the application entry point in NAnt.Core. + - - Gets the status that the build process returned when it exited. - - - The code that the build process specified when it terminated. - + + Gets the status that the build process returned when it exited. + + + The code that the build process specified when it terminated. + diff --git a/example_scripts/Tools/nant/contrib/NAnt.Contrib.Tasks.xml b/example_scripts/Tools/nant/contrib/NAnt.Contrib.Tasks.xml index c877adb..de1c5bf 100644 --- a/example_scripts/Tools/nant/contrib/NAnt.Contrib.Tasks.xml +++ b/example_scripts/Tools/nant/contrib/NAnt.Contrib.Tasks.xml @@ -5,9 +5,9 @@ - - Groups a set of functions for dealing with files. - + + Groups a set of functions for dealing with files. + @@ -43,9 +43,9 @@ - - Provides methods for interrogating Filesets. - + + Provides methods for interrogating Filesets. + @@ -115,10 +115,10 @@ - - Allows information on Windows Installer databases and products to be - retrieved. - + + Allows information on Windows Installer databases and products to be + retrieved. + @@ -154,32 +154,32 @@ - - Returns a value indicating whether a product with the specified - product code is installed. - - The product code of the product to check. - - if a product with the specified product - code is installed; otherwise, . - - - - Retrieves the product code of a given installer database, and - fails the build if the product is not installed. - - - - Please install Office first. - ]]> - - + + Returns a value indicating whether a product with the specified + product code is installed. + + The product code of the product to check. + + if a product with the specified product + code is installed; otherwise, . + + + + Retrieves the product code of a given installer database, and + fails the build if the product is not installed. + + + + Please install Office first. + ]]> + + - - Allow information on a Windows service to be retrieved. - + + Allow information on a Windows service to be retrieved. + @@ -311,43 +311,43 @@ - - Gets the friendly name of the specified service. - - The short name that identifies the service to the system. - The computer on which the service resides. - - The friendly name of the service, which can be used to identify the service. - + + Gets the friendly name of the specified service. + + The short name that identifies the service to the system. + The computer on which the service resides. + + The friendly name of the service, which can be used to identify the service. + - - Gets the name that identifies the specified service - - The short name that identifies the service to the system. - The computer on which the service resides. - - The name that identifies the service. - + + Gets the name that identifies the specified service + + The short name that identifies the service to the system. + The computer on which the service resides. + + The name that identifies the service. + - - The name of the management SQL database. - + + The name of the management SQL database. + - - The name of the SQL Server where the management database is - located. - + + The name of the SQL Server where the management database is + located. + - - Deploys an assembly to a given BizTalk configuration database. - - - Deployment will fail if the assembly is already deployed. - + + Deploys an assembly to a given BizTalk configuration database. + + + Deployment will fail if the assembly is already deployed. + @@ -362,32 +362,32 @@ - - The path to the BizTalk assembly to deploy. - + + The path to the BizTalk assembly to deploy. + - - Determines whether to install the assembly in the Global Assembly - Cache. The default is . - + + Determines whether to install the assembly in the Global Assembly + Cache. The default is . + - - The path to an assembly binding information file to import bindings - from. - + + The path to an assembly binding information file to import bindings + from. + - - The path to the HTML log file to generate. - + + The path to the HTML log file to generate. + - - Exports bindings for a BizTalk assembly to an assembly binding - information file. - + + Exports bindings for a BizTalk assembly to an assembly binding + information file. + @@ -400,88 +400,88 @@ - - The path to the BizTalk assembly for which to export bindings. - + + The path to the BizTalk assembly for which to export bindings. + - - The path to an assembly binding information file in which the - bindings will be saved. - + + The path to an assembly binding information file in which the + bindings will be saved. + - - The path to the HTML log file to generate. - + + The path to the HTML log file to generate. + - - Allows BizTalk (in-process) host instances to be controlled. - - - - Starts the "BizTalkServerApplication" host instance - on server "SV-ARD-EAI". - - - - ]]> - - - - - Stops all "BizTalkServerApplication" host instances. - - - - ]]> - - + + Allows BizTalk (in-process) host instances to be controlled. + + + + Starts the "BizTalkServerApplication" host instance + on server "SV-ARD-EAI". + + + + ]]> + + + + + Stops all "BizTalkServerApplication" host instances. + + + + ]]> + + - - The name of the host on which the perform the action. - + + The name of the host on which the perform the action. + - - The name of the BizTalk server on which to perform the action. - If not specified, the action will be performed on all instances. - + + The name of the BizTalk server on which to perform the action. + If not specified, the action will be performed on all instances. + - - The action that should be performed on the host. - + + The action that should be performed on the host. + - - Defines the actions that can be performed on a host instance. - + + Defines the actions that can be performed on a host instance. + - - Starts the host instance. - + + Starts the host instance. + - - Stops the host instance. - + + Stops the host instance. + - - Stops and restarts the host instance. - + + Stops and restarts the host instance. + - - Imports bindings from a given assembly binding information file into - the specified BizTalk configuration database. - + + Imports bindings from a given assembly binding information file into + the specified BizTalk configuration database. + @@ -494,40 +494,40 @@ - - The path to the assembly binding information file containing the - bindings to import. - + + The path to the assembly binding information file containing the + bindings to import. + - - The path to the HTML log file to generate. - + + The path to the HTML log file to generate. + - - Performs a set of actions on a given orchestration. - + + Performs a set of actions on a given orchestration. + - - The name of the BizTalk server on which to perform the action. - + + The name of the BizTalk server on which to perform the action. + - - The name of the orchestration to perform an action on. - + + The name of the orchestration to perform an action on. + - - Logs a message with the given priority. - - The message priority at which the specified message is to be logged. - The message to be logged. - - The actual logging is delegated to the project. - + + Logs a message with the given priority. + + The message priority at which the specified message is to be logged. + The message to be logged. + + The actual logging is delegated to the project. + @@ -541,34 +541,34 @@ - - Starts the orchestration. - - - If the orchestration is not yet enlisted, then this will be done - first. - + + Starts the orchestration. + + + If the orchestration is not yet enlisted, then this will be done + first. + - - Specifies whether receive locations associated with this - orchestration should be automatically enabled. The default is - . - + + Specifies whether receive locations associated with this + orchestration should be automatically enabled. The default is + . + - - Specifies whether service instances of this orchestration that - were manually suspended previously should be automatically - resumed. The default is . - + + Specifies whether service instances of this orchestration that + were manually suspended previously should be automatically + resumed. The default is . + - - Specifies whether send ports and send port groups imported by - this orchestration should be automatically started. The default - is . - + + Specifies whether send ports and send port groups imported by + this orchestration should be automatically started. The default + is . + @@ -592,107 +592,107 @@ - - Specifies whether receive locations associated with this - orchestration should be automatically disabled. The default - is . - + + Specifies whether receive locations associated with this + orchestration should be automatically disabled. The default + is . + - - Specifies whether instances of this orchestration should be - automatically suspended. The default is . - + + Specifies whether instances of this orchestration should be + automatically suspended. The default is . + - - Enlists the orchestration by creating its activation subscription. - + + Enlists the orchestration by creating its activation subscription. + - - Specifies the BizTalk host on which to enlist the orchestration. - + + Specifies the BizTalk host on which to enlist the orchestration. + - - Unenlists the orchestration by removing its activation subscription. - + + Unenlists the orchestration by removing its activation subscription. + - - Specifies whether instances of this orchestration type should - be automatically terminated. The default is . - + + Specifies whether instances of this orchestration type should + be automatically terminated. The default is . + - - Allows BizTalk receive locations to be controlled. - - - - Enables the "HttpReceive" receive location on server - "SV-ARD-EAI". - - - - ]]> - - - - - Disables the "HttpReceive" receive location on server - "SV-ARD-EAI". - - - - ]]> - - + + Allows BizTalk receive locations to be controlled. + + + + Enables the "HttpReceive" receive location on server + "SV-ARD-EAI". + + + + ]]> + + + + + Disables the "HttpReceive" receive location on server + "SV-ARD-EAI". + + + + ]]> + + - - The name of the receive location on which the perform the action. - + + The name of the receive location on which the perform the action. + - - The name of the BizTalk server on which to perform the action. - + + The name of the BizTalk server on which to perform the action. + - - The action that should be performed on the receive location. - + + The action that should be performed on the receive location. + - - Defines the actions that can be performed on a BizTalk receive - location. - + + Defines the actions that can be performed on a BizTalk receive + location. + - - Enables the receive location. - + + Enables the receive location. + - - Disables the receive location. - + + Disables the receive location. + - - Allows stopping, starting and resetting of BizTalk in-process host - instances on the specified server. - + + Allows stopping, starting and resetting of BizTalk in-process host + instances on the specified server. + - - The name of the BizTalk server on which to perform the action. - + + The name of the BizTalk server on which to perform the action. + @@ -701,103 +701,103 @@ - - Defines the possible actions that can be performed on the BizTalk - in-process host instances. - + + Defines the possible actions that can be performed on the BizTalk + in-process host instances. + - - Stops all in-process host instances. - + + Stops all in-process host instances. + - - Starts all in-process host instances. - + + Starts all in-process host instances. + - - Stops and restarts all in-process host instances. - + + Stops and restarts all in-process host instances. + - - Allows BizTalk send ports to be controlled. - - - - Starts the "UmeHttpSendPort" send port on server - "SV-ARD-EAI". - - - - ]]> - - - - - Unenlists the "UmeHttpSendPort" send port on server - "SV-ARD-EAI". - - - - ]]> - - + + Allows BizTalk send ports to be controlled. + + + + Starts the "UmeHttpSendPort" send port on server + "SV-ARD-EAI". + + + + ]]> + + + + + Unenlists the "UmeHttpSendPort" send port on server + "SV-ARD-EAI". + + + + ]]> + + - - The name of the send port on which the perform the action. - + + The name of the send port on which the perform the action. + - - The name of the BizTalk server on which to perform the action. - + + The name of the BizTalk server on which to perform the action. + - - The action that should be performed on the send port. - + + The action that should be performed on the send port. + - - Defines the actions that can be performed on a BizTalk send port. - + + Defines the actions that can be performed on a BizTalk send port. + - - Starts the send port. - + + Starts the send port. + - - Stops the send port. - + + Stops the send port. + - - Stops and restarts the send port. - + + Stops and restarts the send port. + - - Enlists the send port. - + + Enlists the send port. + - - Unenlists the send port. - + + Unenlists the send port. + - - Removes all bindings for a given assembly from a BizTalk configuration - database. - + + Removes all bindings for a given assembly from a BizTalk configuration + database. + @@ -810,31 +810,31 @@ - - The path to the BizTalk assembly for which to remove all bindings. - + + The path to the BizTalk assembly for which to remove all bindings. + - - The name of the BizTalk server on which to perform the operation. - + + The name of the BizTalk server on which to perform the operation. + - - The assembly qualified name of the receive pipeline to set when - unbinding a receive pipeline. - + + The assembly qualified name of the receive pipeline to set when + unbinding a receive pipeline. + - - The assembly qualified name of the SEND pipeline to set when - unbinding a send pipeline. - + + The assembly qualified name of the SEND pipeline to set when + unbinding a send pipeline. + - - Removes a given assembly from a BizTalk configuration database. - + + Removes a given assembly from a BizTalk configuration database. + @@ -847,62 +847,62 @@ - - The path to the BizTalk assembly to remove. - + + The path to the BizTalk assembly to remove. + - - Determines whether to remove the assembly from the Global Assembly - Cache. The default is . - + + Determines whether to remove the assembly from the Global Assembly + Cache. The default is . + - - The path to the HTML log file to generate. - + + The path to the HTML log file to generate. + - - Base class for all the ClearCase tasks. - + + Base class for all the ClearCase tasks. + - - Base Constructor. - + + Base Constructor. + - - Execute the perforce command assembled by subclasses. - + + Execute the perforce command assembled by subclasses. + - - Derived classes should override this to provide command-specific - commandline arguments. - + + Derived classes should override this to provide command-specific + commandline arguments. + - - Overrides the base class. - + + Overrides the base class. + - - Displays a ClearCase config spec. - + + Displays a ClearCase config spec. + - - The view tag identifying the ClearCase view that will have its - config spec displayed. - + + The view tag identifying the ClearCase view that will have its + config spec displayed. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -932,10 +932,10 @@ - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + @@ -950,33 +950,33 @@ - - if warning messages should be suppressed. - The default is . - + + if warning messages should be suppressed. + The default is . + - - If , the modification time will be preserved. - Default is . - + + If , the modification time will be preserved. + Default is . + - - to keep a view-private copy of the file with - a .keep extension. Default is . - + + to keep a view-private copy of the file with + a .keep extension. Default is . + - - If , files may be checked in even if identical - to the original. Default is . - + + If , files may be checked in even if identical + to the original. Default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1008,44 +1008,44 @@ - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + - - to check the element out as reserved. - Default is . - + + to check the element out as reserved. + Default is . + - - Creates a writable file under a different filename. - + + Creates a writable file under a different filename. + - - If , checks out the file but does not create - an editable file containing its data. Default is . - + + If , checks out the file but does not create + an editable file containing its data. Default is . + - - Specify a branch to check out the file to. - + + Specify a branch to check out the file to. + - - If , checkouts of elements with a version - other than main latest will be allowed. Default is . - + + If , checkouts of elements with a version + other than main latest will be allowed. Default is . + - - if warning messages should be suppressed. - The default is . - + + if warning messages should be suppressed. + The default is . + @@ -1060,15 +1060,15 @@ - - If , the modification time will be preserved. - Default is . - + + If , the modification time will be preserved. + Default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1092,10 +1092,10 @@ - - If an existing lock can be replaced. - Default is . - + + If an existing lock can be replaced. + Default is . + @@ -1124,49 +1124,49 @@ - - Specifies the object pathname to be locked. - + + Specifies the object pathname to be locked. + - - Specifies the object(s) to be locked. - + + Specifies the object(s) to be locked. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Creates elements in a ClearCase VOB. - - - - This task uses the cleartool mkelem command to create ClearCase elements. - - - - - Performs a ClearCase mkelem on the file c:/views/viewdir/afile with element type text_file. - It checks in the file after creation and adds Some comment text as a comment. - - - - ]]> - - + + Creates elements in a ClearCase VOB. + + + + This task uses the cleartool mkelem command to create ClearCase elements. + + + + + Performs a ClearCase mkelem on the file c:/views/viewdir/afile with element type text_file. + It checks in the file after creation and adds Some comment text as a comment. + + + + ]]> + + - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + @@ -1181,50 +1181,50 @@ - - If , warning will be suppressed. - The default is . - + + If , warning will be suppressed. + The default is . + - - Perform a checkout after element creation. - Default is . - + + Perform a checkout after element creation. + Default is . + - - Checkin element after creation. - Default is . - + + Checkin element after creation. + Default is . + - - If , the modification time will be preserved. - Default is . - + + If , the modification time will be preserved. + Default is . + - - Assign mastership of the main branch to the current site. - Default is . - + + Assign mastership of the main branch to the current site. + Default is . + - - Element type to use during element creation. - + + Element type to use during element creation. + - - Create elements from the view-private parent directories. - Default is . - + + Create elements from the view-private parent directories. + Default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1255,38 +1255,38 @@ - - Name of the label type - + + Name of the label type + - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + - - If , allow the replacement of a - label of the same type on the same branch. - The default is . - + + If , allow the replacement of a + label of the same type on the same branch. + The default is . + - - If , process each subdirectory recursively under the viewpath. - Default is . - + + If , process each subdirectory recursively under the viewpath. + Default is . + - - Identify a specific version to attach the label to. - + + Identify a specific version to attach the label to. + - - Path to the ClearCase view file or directory that the command will operate on. - + + Path to the ClearCase view file or directory that the command will operate on. + @@ -1301,14 +1301,14 @@ - - For any VOB symbolic links encountered, labels the corresponding target. - + + For any VOB symbolic links encountered, labels the corresponding target. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1336,46 +1336,46 @@ - - Name of the label type to create. - + + Name of the label type to create. + - - Name of the VOB. Must be a valid path to somewhere on a VOB. - + + Name of the VOB. Must be a valid path to somewhere on a VOB. + - - If , allow an existing label definition to be replaced. - The default is . - + + If , allow an existing label definition to be replaced. + The default is . + - - Creates a label type that is global to the VOB or to VOB's that use this VOB. - Either global or ordinary can be specified, not both. - The default is . - + + Creates a label type that is global to the VOB or to VOB's that use this VOB. + Either global or ordinary can be specified, not both. + The default is . + - - Creates a label type that can be used only in the current VOB. - Either global or ordinary can be specified, not both. - Although by default, if global is also or not specified ordinary is the default behaviour. - + + Creates a label type that can be used only in the current VOB. + Either global or ordinary can be specified, not both. + Although by default, if global is also or not specified ordinary is the default behaviour. + - - If the label type is allowed to be used once per branch in a given element's version tree. - The default is . - + + If the label type is allowed to be used once per branch in a given element's version tree. + The default is . + - - Sets the way mastership is checked by ClearCase. See ClearCase documentation for details. - The default is . - + + Sets the way mastership is checked by ClearCase. See ClearCase documentation for details. + The default is . + @@ -1390,9 +1390,9 @@ - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1421,14 +1421,14 @@ - - The kind of type to remove. - + + The kind of type to remove. + - - The name of the object to remove. - + + The name of the object to remove. + @@ -1439,10 +1439,10 @@ - - Removes all instances of a type and the type object itself. - The default is . - + + Removes all instances of a type and the type object itself. + The default is . + @@ -1457,9 +1457,9 @@ - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1486,21 +1486,21 @@ - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + - - If , a view-private copy of the file with a - .keep extension will be kept. Default is . - + + If , a view-private copy of the file with a + .keep extension will be kept. Default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + @@ -1536,76 +1536,76 @@ - - Specifies the object pathname to be unlocked. - + + Specifies the object pathname to be unlocked. + - - Specifies the object(s) to be unlocked. - + + Specifies the object(s) to be unlocked. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Updates a ClearCase view. - - - - This task uses the cleartool update command to update a ClearCase view. - - - - - Performs a ClearCase update on the snapshot view directory c:/views/viewdir. - A graphical dialog will be displayed. - The output will be logged to log.log and it will overwrite any hijacked files. - The modified time will be set to the current time. - - - - ]]> - - + + Updates a ClearCase view. + + + + This task uses the cleartool update command to update a ClearCase view. + + + + + Performs a ClearCase update on the snapshot view directory c:/views/viewdir. + A graphical dialog will be displayed. + The output will be logged to log.log and it will overwrite any hijacked files. + The modified time will be set to the current time. + + + + ]]> + + - - Path to the ClearCase view file or directory that the command will - operate on. - + + Path to the ClearCase view file or directory that the command will + operate on. + - - Displays a graphical dialog during the update. - The default is . - + + Displays a graphical dialog during the update. + The default is . + - - Specifies a log file for ClearCase to write to. - + + Specifies a log file for ClearCase to write to. + - - If , hijacked files will be overwritten. - The default is . - + + If , hijacked files will be overwritten. + The default is . + - - If , hijacked files will be renamed with a .keep extension. - The default is . - + + If , hijacked files will be renamed with a .keep extension. + The default is . + @@ -1622,64 +1622,64 @@ - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Searches files for a regular-expression and produces an XML report of - the matches. - - - - Extract all TODO:, UNDONE: or HACK:- - comment-tags from C# source files and write them to a file - out.xml. (A xslt-stylesheet could then transform it to - a nice html-page for your project-homepage, but that is beyond - the scope of this example.) - - - Path, File and LineNumber are automatically - generated elements. - - - - - - - - ]]> - - - The resulting XML file for a comment-tag - 'TODO: [md, 14-02-2004] comment this method' - will look like - - - - - - TODO - comment this method - C:\MyProjects\MyPath - MyFile.cs - 146 - md - 14-02-2004 - - ... - - ]]> - - + + Searches files for a regular-expression and produces an XML report of + the matches. + + + + Extract all TODO:, UNDONE: or HACK:- + comment-tags from C# source files and write them to a file + out.xml. (A xslt-stylesheet could then transform it to + a nice html-page for your project-homepage, but that is beyond + the scope of this example.) + + + Path, File and LineNumber are automatically + generated elements. + + + + + + + + ]]> + + + The resulting XML file for a comment-tag + 'TODO: [md, 14-02-2004] comment this method' + will look like + + + + + + TODO + comment this method + C:\MyProjects\MyPath + MyFile.cs + 146 + md + 14-02-2004 + + ... + + ]]> + + - - Performs the regex-search. - + + Performs the regex-search. + @@ -1696,19 +1696,19 @@ The collection of matches to write. - - Specifies the name of the output file. - + + Specifies the name of the output file. + - - Specifies the regular-expression to search for. - + + Specifies the regular-expression to search for. + - - The set of files in which the expression is searched. - + + The set of files in which the expression is searched. + @@ -1718,9 +1718,9 @@ - - The string to count in - + + The string to count in + @@ -1739,14 +1739,14 @@ for which lines are counted. - - Counts the line-numbers until the position - is reached. - - Index into the string given during construction - - The number of lines. - + + Counts the line-numbers until the position + is reached. + + Index into the string given during construction + + The number of lines. + @@ -1765,10 +1765,10 @@ - - Encapsulation of a match of a regular-expression with the - associated named capture-groups. - + + Encapsulation of a match of a regular-expression with the + associated named capture-groups. + @@ -1783,9 +1783,9 @@ The to write to. - - Gets or sets the value for a capture group. - + + Gets or sets the value for a capture group. + @@ -1806,14 +1806,14 @@ Collection of instances to add. - - Gets the th match stored in this collection. - + + Gets the th match stored in this collection. + - - Encapsulation of a search pattern. - + + Encapsulation of a search pattern. + @@ -1838,146 +1838,146 @@ - - Extracts the matches of this pattern from . - - The name of the file associated with . - The source string - - A collection of found matches. - + + Extracts the matches of this pattern from . + + The name of the file associated with . + The source string + + A collection of found matches. + - - The base abstract class for all MKS Tasks. - - - Provides the core attributes, and functionality for opening an item - in a MKS database. - + + The base abstract class for all MKS Tasks. + + + Provides the core attributes, and functionality for opening an item + in a MKS database. + - - Opens the MKS database and sets the reference to the specified - item and version. - + + Opens the MKS database and sets the reference to the specified + item and version. + - - The password to use to login to the MKS database. - + + The password to use to login to the MKS database. + - - The name of the user needed to access the MKS database. - + + The name of the user needed to access the MKS database. + - - The name of the host MKS server to connect to - + + The name of the host MKS server to connect to + - - The port number on which the host server is accepting requests - + + The port number on which the host server is accepting requests + - - Checkpoints a project in an MKS Source Integrity database. - - - Checkpoint a project in an MKS database. - - ]]> - + + Checkpoints a project in an MKS Source Integrity database. + + + Checkpoint a project in an MKS database. + + ]]> + - - The label to apply to the checkpoint. - + + The label to apply to the checkpoint. + - - The project to checkpoint. - + + The project to checkpoint. + - - Apply label to all members. The default is . - + + Apply label to all members. The default is . + - - The description of the checkpoint. - + + The description of the checkpoint. + - - Retrieves an item or project from MKS Source Integrity. - - - Synchronise sandbox with MKS project. - - ]]> - + + Retrieves an item or project from MKS Source Integrity. + + + Synchronise sandbox with MKS project. + + ]]> + - - The path to the local working directory. - + + The path to the local working directory. + - - The project to get from MKS. - + + The project to get from MKS. + - - Generates an XML file containing the differences between the sandbox and - the project in the MKS database. - - - Get changes to a project in an MKS database. - - ]]> - + + Generates an XML file containing the differences between the sandbox and + the project in the MKS database. + + + Get changes to a project in an MKS database. + + ]]> + - - The project to retrieve the changes for. - + + The project to retrieve the changes for. + - - The file where the output will be stored in XML format. - + + The file where the output will be stored in XML format. + @@ -1985,436 +1985,436 @@ - - Determines if the supplied version string is valid. A valid version string should look like: - 1 - 1.1 - 1.1.1 - 1.1.1.1 - - The version string to verify. - + + Determines if the supplied version string is valid. A valid version string should look like: + 1 + 1.1 + 1.1.1 + 1.1.1.1 + + The version string to verify. + - - Sets the sequence number of files to match their - storage order in the cabinet file, after some - files have had their filenames changed to go in - their own component. - - The MSI database. - The last file's sequence number. + + Sets the sequence number of files to match their + storage order in the cabinet file, after some + files have had their filenames changed to go in + their own component. + + The MSI database. + The last file's sequence number. - - Cleans the output directory after a build. - - The path to the cabinet file. - The path to temporary files. + + Cleans the output directory after a build. + + The path to the cabinet file. + The path to temporary files. - - Loads records for the Properties table. - - The MSI database. + + Loads records for the Properties table. + + The MSI database. - - Loads records for the Directories table. - - The MSI database. + + Loads records for the Directories table. + + The MSI database. - - Adds a directory record to the directories table. - - The MSI database. - The MSI database view. - The parent directory. - This directory's Schema object. - The tree depth of this directory. + + Adds a directory record to the directories table. + + The MSI database. + The MSI database view. + The parent directory. + This directory's Schema object. + The tree depth of this directory. - - Retrieves the relative path of a file based on - the component it belongs to and its entry in - the MSI directory table. - - The MSI database. - The Name of the Folder - The Parent of the Folder - The Relative Filesystem Path of the Folder - The Path to the Folder from previous calls. - The MSI database view. + + Retrieves the relative path of a file based on + the component it belongs to and its entry in + the MSI directory table. + + The MSI database. + The Name of the Folder + The Parent of the Folder + The Relative Filesystem Path of the Folder + The Path to the Folder from previous calls. + The MSI database view. - - If the specified path is longer than 40 characters, 37 are returned plus ... - - A shortened path - + + If the specified path is longer than 40 characters, 37 are returned plus ... + + A shortened path + - - Retrieves a DOS 8.3 filename for a file. - - The file to shorten. - The new shortened file. + + Retrieves a DOS 8.3 filename for a file. + + The file to shorten. + The new shortened file. - - Retrieves a DOS 8.3 filename for a directory. - - The path to shorten. - The new shortened path. + + Retrieves a DOS 8.3 filename for a directory. + + The path to shorten. + The new shortened path. - - Retrieves a DOS 8.3 filename for a complete directory. - - The path to shorten. - The new shortened path. + + Retrieves a DOS 8.3 filename for a complete directory. + + The path to shorten. + The new shortened path. - - Recursively expands properties of all attributes of - a nodelist and their children. - - The nodes to recurse. + + Recursively expands properties of all attributes of + a nodelist and their children. + + The nodes to recurse. - - Converts the Byte array in a public key - token of an assembly to a string MSI expects. - - The array of bytes. - The string containing the array. + + Converts the Byte array in a public key + token of an assembly to a string MSI expects. + + The array of bytes. + The string containing the array. - - Loads TypeLibs for the TypeLib table. - - The MSI database. + + Loads TypeLibs for the TypeLib table. + + The MSI database. - - Loads environment variables for the Environment table. - - The MSI database. + + Loads environment variables for the Environment table. + + The MSI database. - - Loads records for the Registry table. - - The MSI database. + + Loads records for the Registry table. + + The MSI database. - - Loads records for the RegLocator table - - The MSI database. + + Loads records for the RegLocator table + + The MSI database. - - Loads records for the CompLocator table - - The MSI database. + + Loads records for the CompLocator table + + The MSI database. - - Loads records for the IniLocator table - - The MSI database. + + Loads records for the IniLocator table + + The MSI database. - - Loads records for the DrLocator table - - The MSI database. - + + Loads records for the DrLocator table + + The MSI database. + - - Loads records for the RegLocator table - - The MSI database. + + Loads records for the RegLocator table + + The MSI database. - - Gets the name of the registry root id by it's name. - - Name of the registry root - + + Gets the name of the registry root id by it's name. + + Name of the registry root + - - Loads records for the AppSearch table - - The MSI database. + + Loads records for the AppSearch table + + The MSI database. - - Loads records for the Icon table. - - The MSI database. + + Loads records for the Icon table. + + The MSI database. - - Loads records for the Shortcut table. - - The MSI database. + + Loads records for the Shortcut table. + + The MSI database. - - Adds custom table(s) to the msi database - - The MSI database. + + Adds custom table(s) to the msi database + + The MSI database. - - Adds table data to the msi database table structure - - The MSI database. - The current table name - Xml node representing the current table - List of column objects for the current table (Containing: column name, id, type). + + Adds table data to the msi database table structure + + The MSI database. + The current table name + Xml node representing the current table + List of column objects for the current table (Containing: column name, id, type). - - Loads records for the Binary table. This table stores items - such as bitmaps, animations, and icons. The binary table is - also used to store data for custom actions. - - The MSI database. + + Loads records for the Binary table. This table stores items + such as bitmaps, animations, and icons. The binary table is + also used to store data for custom actions. + + The MSI database. - - Loads records for the Dialog table. - - The MSI database. + + Loads records for the Dialog table. + + The MSI database. - - Loads records for the Control table. - - The MSI database. + + Loads records for the Control table. + + The MSI database. - - Loads records for the ControlCondtion table. - - The MSI database. + + Loads records for the ControlCondtion table. + + The MSI database. - - Loads records for the ControlEvent table. - - The MSI database. + + Loads records for the ControlEvent table. + + The MSI database. - - Loads records for the CustomAction table - - The MSI database. + + Loads records for the CustomAction table + + The MSI database. - - Loads records for the ActionText table. Allows users to specify descriptions/templates for actions. - - The MSI database. + + Loads records for the ActionText table. Allows users to specify descriptions/templates for actions. + + The MSI database. - - Loads records for the _AppMappings table. - - The MSI database. + + Loads records for the _AppMappings table. + + The MSI database. - - Loads records for the _UrlToDir table. - "Load the url properties to convert - url properties to a properties object" ?? - - The MSI database. + + Loads records for the _UrlToDir table. + "Load the url properties to convert + url properties to a properties object" ?? + + The MSI database. - - Loads records for the _VDirToUrl table. - Used for converting a vdir to an url - - The MSI database. + + Loads records for the _VDirToUrl table. + Used for converting a vdir to an url + + The MSI database. - - Loads records for the _AppRootCreate table. - Used for making a virtual directory a virtual application - - The MSI database. + + Loads records for the _AppRootCreate table. + Used for making a virtual directory a virtual application + + The MSI database. - - Loads records for the _IISProperties table. - - The MSI database. + + Loads records for the _IISProperties table. + + The MSI database. - - Enumerates the registry to see if an assembly has been registered - for COM interop, and if so adds these registry keys to the Registry - table, ProgIds to the ProgId table, classes to the Classes table, - and a TypeLib to the TypeLib table. - - The MSI database. - The Assembly filename. - The Assembly to check. - The name of the containing component. - The name of the containing component's assembly GUID. - View containing the Class table. - View containing the ProgId table. + + Enumerates the registry to see if an assembly has been registered + for COM interop, and if so adds these registry keys to the Registry + table, ProgIds to the ProgId table, classes to the Classes table, + and a TypeLib to the TypeLib table. + + The MSI database. + The Assembly filename. + The Assembly to check. + The name of the containing component. + The name of the containing component's assembly GUID. + View containing the Class table. + View containing the ProgId table. - - Loads properties for the Summary Information Stream. - - The MSI database. + + Loads properties for the Summary Information Stream. + + The MSI database. - - Creates a .cab file with all source files included. - - The MSI database. + + Creates a .cab file with all source files included. + + The MSI database. - - Loads records for the sequence tables. - - The MSI database. + + Loads records for the sequence tables. + + The MSI database. - - Adds a file record to the Files table. - - The MSI database. - The MSI database view. - The Component's XML Element. - The MSI database view. - The directory of this file's component. - The name of this file's component. - The installation sequence number of this file. - View containing the MsiAssembly table. - View containing the MsiAssemblyName table. - View containing the Components table. - View containing the FeatureComponents table. - View containing the Class table. - View containing the ProgId table. - View containing the SelfReg table. - ModuleComponent table. + + Adds a file record to the Files table. + + The MSI database. + The MSI database view. + The Component's XML Element. + The MSI database view. + The directory of this file's component. + The name of this file's component. + The installation sequence number of this file. + View containing the MsiAssembly table. + View containing the MsiAssemblyName table. + View containing the Components table. + View containing the FeatureComponents table. + View containing the Class table. + View containing the ProgId table. + View containing the SelfReg table. + ModuleComponent table. - - Loads records for the Components table. - - The MSI database. - The sequence number of the last file in the .cab + + Loads records for the Components table. + + The MSI database. + The sequence number of the last file in the .cab - - Executes the Task. - - None. + + Executes the Task. + + None. - - .NET wrapper for a Windows Installer database - + + .NET wrapper for a Windows Installer database + - - Drops empty tables. - + + Drops empty tables. + - - Drops the empty tables. - - Determines if this is a merge module or not - If it is a merge module, the FeatureComponents table should not be dropped. + + Drops the empty tables. + + Determines if this is a merge module or not + If it is a merge module, the FeatureComponents table should not be dropped. - - Checks to see if the specified table is empty. - - Name of the table to check existance. - True if empy and False if full. + + Checks to see if the specified table is empty. + + Name of the table to check existance. + True if empy and False if full. - - Checks to see if the specified table exists in the database - already. - - Name of the table to check existance. - True if successful. + + Checks to see if the specified table exists in the database + already. + + Name of the table to check existance. + True if successful. - - Helper class used to avoid errors when instantiating - WindowsInstaller.Installer. - + + Helper class used to avoid errors when instantiating + WindowsInstaller.Installer. + - - Use to read and manipulate existing records. - + + Use to read and manipulate existing records. + - - Creates a new reader for the entries in the view - - Database view to read entries from. Must be Execute()'ed already. + + Creates a new reader for the entries in the view + + Database view to read entries from. Must be Execute()'ed already. - - Moves to the next record - - False iff no more records + + Moves to the next record + + False iff no more records - - Deletes the current record. Needs no Commit(). - + + Deletes the current record. Needs no Commit(). + - - Set the value of a field in the current record. Remember to Commit() - - Zero-based index of the field to set - New value + + Set the value of a field in the current record. Remember to Commit() + + Zero-based index of the field to set + New value - - Get the string value of a field in the current record. - - Zero-based index of the field to get + + Get the string value of a field in the current record. + + Zero-based index of the field to get - - Commits changes to the current record. - + + Commits changes to the current record. + - - A simple class for a single search clause. - TODO: more comparison types, use of the Composite pattern, etc. - + + A simple class for a single search clause. + TODO: more comparison types, use of the Composite pattern, etc. + - - Represents a single table in a Windows Installer archive - + + Represents a single table in a Windows Installer archive + - - Base class for msi/msm installer tasks - + + Base class for msi/msm installer tasks + @@ -2423,23 +2423,23 @@ - - Initializes the task and verifies parameters. - + + Initializes the task and verifies parameters. + - - Occurs when a validation error is raised. - - The object that sent the event. - Validation arguments passed in. + + Occurs when a validation error is raised. + + The object that sent the event. + Validation arguments passed in. - - Recursively expands properties of all attributes of - a nodelist and their children. - - The nodes to recurse. + + Recursively expands properties of all attributes of + a nodelist and their children. + + The nodes to recurse. @@ -2449,3171 +2449,145 @@ The object from the Schema wrapper after is called. - - The name of the file that will be generated when the task completes - execution (eg. MyInstall.msi or MyMergeModule.msm). - + + The name of the file that will be generated when the task completes + execution (eg. MyInstall.msi or MyMergeModule.msm). + - - A directory relative to the NAnt script in which the msi task resides - from which to retrieve files that will be installed by the msi - database. All files that will be included in your installation need - to be located directly within or in subdirectories of this directory. - + + A directory relative to the NAnt script in which the msi task resides + from which to retrieve files that will be installed by the msi + database. All files that will be included in your installation need + to be located directly within or in subdirectories of this directory. + - - A installer file to use as the starting database in which all files - and entries will be made, and then copied to the filename specified - by the output parameter. Install templates are included with the - install tasks, you only need to supply this value if you want to - override the default template. - + + A installer file to use as the starting database in which all files + and entries will be made, and then copied to the filename specified + by the output parameter. Install templates are included with the + install tasks, you only need to supply this value if you want to + override the default template. + - - A .mst file to use as the starting database containing strings - displayed to the user when errors occur during installation. - A .mst template is included with the msi task, you only need to - supply this value if you want to override the default error - template and cannot perform something through the features of the - msi task. - + + A .mst file to use as the starting database containing strings + displayed to the user when errors occur during installation. + A .mst template is included with the msi task, you only need to + supply this value if you want to override the default error + template and cannot perform something through the features of the + msi task. + - - Causes the generated msi database file to contain debug messages for - errors created by inconsistencies in creation of the database. This - makes the file slightly larger and should be avoided when generating - a production release of your software. - + + Causes the generated msi database file to contain debug messages for + errors created by inconsistencies in creation of the database. This + makes the file slightly larger and should be avoided when generating + a production release of your software. + - - - Sets various properties in the SummaryInformation stream - (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_information_stream.asp) - - - All of the sub-elements are optional. - -

Nested Elements:

-

<title>

-
    - Briefly describes the type of installer package. Phrases such as "Installation Database" or - "Transform" or "Patch" may be used for this property. -
    Default value: Value of the ProductName property, if defined. -
-

</title>

-

<subject>

-
    - A short description of the product to be installed. This value is typically set from the installer - property ProductName -
    Default value: Value of the ProductName property, if defined. -
-

</subject>

-

<author>

-
    - The manufacturer of the installation database. This value is typically set from the installer - property Manufacturer. -
    Default value: Value of the Manufacturer property, if defined. -
-

</author>

-

<keywords>

-
    - Used by file browsers to hold keywords that permit the database file to be found in a keyword search. - The set of keywords typically includes "Installer" as well as product-specific keywords, and may be - localized. -
    Default value: Value of the Keywords property, if defined. -
-

</keywords>

-

<comments>

-
    - A general description/purpose of the installer database. -
    Default value: Value of the Comments property, if defined. -
-

</comments>

-

<template>

-
    - - Indicates the platform and language versions that are supported by the database. The Template Summary - Property of a patch package is a semicolon-delimited list of the product codes that can accept the - patch. - - - See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/template_summary_property.asp for more information. - -
-

</template>

-

<revisionnumber>

-
    - Contains the package code (GUID) for the installer package. The package code is a unique identifier - of the installer package. Note: Default behavior - a new GUID is generated every time -
-

</revisionnumber>

-

<creatingapplication>

-
    - The name of the application used to author the database. Note: Default value is NAnt. -
-

</creatingapplication>

-

Examples

- - Define specific summary information. - - <summaryinformation> - <title>Installation Database</title> - <subject>${install.productname}</subject> - <author>${install.manufacturer}</author> - <keywords>MSI, database, NAnt, Installer</keywords> - <comments>This installer database contains the logic and data required to install NAnt</comments> - <template>;1033</template> - <creatingapplication>NAnt - http://nant.sf.net </creatingapplication> - </summaryinformation> - - -
+ + + Sets various properties in the SummaryInformation stream + (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/summary_information_stream.asp) + + + All of the sub-elements are optional. + +

Nested Elements:

+

<title>

+
    + Briefly describes the type of installer package. Phrases such as "Installation Database" or + "Transform" or "Patch" may be used for this property. +
    Default value: Value of the ProductName property, if defined. +
+

</title>

+

<subject>

+
    + A short description of the product to be installed. This value is typically set from the installer + property ProductName +
    Default value: Value of the ProductName property, if defined. +
+

</subject>

+

<author>

+
    + The manufacturer of the installation database. This value is typically set from the installer + property Manufacturer. +
    Default value: Value of the Manufacturer property, if defined. +
+

</author>

+

<keywords>

+
    + Used by file browsers to hold keywords that permit the database file to be found in a keyword search. + The set of keywords typically includes "Installer" as well as product-specific keywords, and may be + localized. +
    Default value: Value of the Keywords property, if defined. +
+

</keywords>

+

<comments>

+
    + A general description/purpose of the installer database. +
    Default value: Value of the Comments property, if defined. +
+

</comments>

+

<template>

+
    + + Indicates the platform and language versions that are supported by the database. The Template Summary + Property of a patch package is a semicolon-delimited list of the product codes that can accept the + patch. + + + See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/template_summary_property.asp for more information. + +
+

</template>

+

<revisionnumber>

+
    + Contains the package code (GUID) for the installer package. The package code is a unique identifier + of the installer package. Note: Default behavior - a new GUID is generated every time +
+

</revisionnumber>

+

<creatingapplication>

+
    + The name of the application used to author the database. Note: Default value is NAnt. +
+

</creatingapplication>

+

Examples

+ + Define specific summary information. + + <summaryinformation> + <title>Installation Database</title> + <subject>${install.productname}</subject> + <author>${install.manufacturer}</author> + <keywords>MSI, database, NAnt, Installer</keywords> + <comments>This installer database contains the logic and data required to install NAnt</comments> + <template>;1033</template> + <creatingapplication>NAnt - http://nant.sf.net </creatingapplication> + </summaryinformation> + + +
- - - Name/value pairs which will be set in the PROPERTY table of the - installer database. - - - The properties element contains within it one to any number of property elements.
- Public property names cannot contain lowercase letters.
- Private property names must contain some lowercase letters.
- Property names prefixed with % represent system and user environment variables. These are - never entered into the Property - table. The permanent settings of environment variables can only be modified using the Environment Table. - More information is available here. -
-

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the property. - True - - - value - string - The value of the property. This value can contain references to other, predefined properties to build a compound property. - True - - -

Examples

- - Define the required properties. - - <properties> - <property name="ProductName" value="My Product" /> - <property name="ProductVersion" value="1.0.0" /> - <property name="Manufacturer" value="ACME Inc." /> - <property name="ProductCode" value="{29D8F096-3371-4cba-87E1-A8C6511F7B4C}" /> - <property name="UpgradeCode" value="{69E66919-0DE1-4280-B4C1-94049F76BA1A}" /> - </properties> - - -
-
- - - - Contains within it one to any number of app, registry, ini, or dirfile elements. - These elements are used to search for an existing filesystem directory, file, or - Windows Registry setting. A property in the installer database is - then set with the value obtained from the search. - -

<app>

- - More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/complocator_table.asp - - - - Attribute - Type - Description - Required - - - componentid - string - The component ID of the component whose key path is to be used for the search. - True - - - type - msi:MSILocatorTypeDirFile - Valid input: file or directory - True - - - setproperty - string - A name used to refer to the property within the Msi database. Set at install time. - True - - -

</app>

-

<registry>

- - More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/reglocator_table.asp - - - - Attribute - Type - Description - Required - - - type - msi:MSILocatorTypeDirFileReg64 - Valid input: registry, file, directory, 64bit - True - - - path - string - Depending on the type specified: - - Path is a directory. - Path is a registry key. - - - True - - - root - msi:MSIRegistryKeyRoot - Valid input: - - dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. - machine represents HKEY_LOCAL_MACHINE - classes represents HKEY_CLASSES_ROOT - user represents HKEY_CURRENT_USER - users represents HKEY_USERS - - - True - - -
    -

    Nested Elements:

    -

    <value>

    -

    Parameters

    - - - Attribute - Type - Description - Required - - - name - string - Depending on the type specified: - - Key path is a file name. - Key path is a registry value. - - - False - - - setproperty - string - A name used to refer to the property within the Msi database. Set at install time. - True - - -

    </value>

    -
-

</registry>

-

<ini>

- - More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/inilocator_table.asp - - - - Attribute - Type - Description - Required - - - filename - string - The .ini file name. (The .ini file must be present in the default Microsoft Windows directory.) - - True - - - section - string - Section name within the .ini file. - - True - - - key - string - Key value within the section. - - True - - - field - msi:nonNegativeInt - The field in the .ini line. If Field is Null or 0, then the entire line is read. - This must be a non-negative number. - - False - - - type - msi:MSILocatorTypeDirFileRaw - Valid input: file ,directory, or raw - True - - - setproperty - string - A name used to refer to the property within the Msi database. Set at install time. - True - - -

</ini>

-

<dirfile>

- - More information on these attributes can be found at: - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/drlocator_table.asp - and - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/signature_table.asp - - - - Attribute - Type - Description - Required - - - parent - string - An identifier to RegLocator, IniLocator, or CompLocator tables. - If it does not expand to a full path, then all the fixed drives of the user's system are searched by using the Path. -
In order to determine what the key is for a table, prefix the property name assigned - to that locator with SIG_ -
- False -
- - path - string - the path on the user's system. This is a either a full path or a relative subpath - below the directory specified in the Parent column. - - False - - - depth - msi:nonNegativeInt - The depth below the path that the installer searches for the file or directory. - - False - - - setproperty - string - A name used to refer to the property within the Msi database. Set at install time. - True - -
-
    -

    Nested Elements:

    -

    <file>

    -

    Parameters

    - - - Attribute - Type - Description - Required - - - name - string - The name of the file. - True - - - minversion - string - The minimum version of the file, with a language comparison. If this field is - specified, then the file must have a version that is at least equal to MinVersion. - If the file has an equal version to the MinVersion field value but the language - specified in the Languages column differs, the file does not satisfy the signature - filter criteria. - False - - - maxversion - string - The maximum version of the file. If this field is specified, then the file - must have a version that is at most equal to MaxVersion. - False - - - minsize - msi:nonNegativeInt - The minimum size of the file. If this field is specified, then the file - under inspection must have a size that is at least equal to MinSize. This must - be a non-negative number. - False - - - maxsize - msi:nonNegativeInt - The maximum size of the file. If this field is specified, then the file - under inspection must have a size that is at most equal to MaxSize. This must - be a non-negative number. - False - - - mindate - msi:nonNegativeInt - The minimum modification date and time of the file. If this field is - specified, then the file under inspection must have a modification date and time - that is at least equal to MinDate. This must be a non-negative number. - False - - - maxdate - msi:nonNegativeInt - The maximum creation date of the file. If this field is specified, then the - file under inspection must have a creation date that is at most equal to MaxDate. - This must be a non-negative number. - False - - - languages - string - The languages supported by the file. - False - - -

    </file>

    -
-

</dirfile>

-

Examples

- - Get the path of the web directory and the version of IIS. Create new properties in the Msi file with those values. - - <search> - <registry type="registry" path="Software\Microsoft\InetStp" root="machine" > - <value name="PathWWWRoot" setproperty="IISWWWROOT" /> - </registry> - <registry type="registry" path="SYSTEM\CurrentControlSet\Services\W3SVC\Parameters" root="machine" > - <value name="MajorVersion" setproperty="IISVERSION" /> - </registry> - </search> - - - - Shows two ways to get the default key value for the specified key. Create new properties in the Msi file with those values. - - <search> - <registry type="registry" path="Software\Microsoft\MessengerService" root="machine" > - <value setproperty="MSGSRVNAME" /> - <value name="" setproperty="MSGSRVNAME2" /> - </registry> - </search> - - -
-
- - - - Contains within it one to any number of launchcondition elements. - Launch conditions are conditions that all must be satisfied for the - installation to begin. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to identify the launch condition. - True - - - condition - string - Expression that must evaluate to True for installation to begin. - True - - -

Nested Elements:

-

<description>

-
    - Localizable text to display when the condition fails and the installation must be terminated. -
-

</description>

-

Examples

- - Create a check to make sure that IIS 5.x is installed. - - <launchconditions> - <launchcondition name="CheckIIS" condition="(IISVERSION = &quot;#5&quot;)" > - <description> - This setup requires Internet information Server 5.x. Please install Internet Information Server and run this setup again. - </description> - </launchcondition> - </launchconditions> - - -
-
- - - - Creates custom tables not directly managed by default features of - the installer task. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A unique name used to identify the table. - True - - -

Nested Elements:

-

<columns>

-
    -

    <column>

    -
      - Defines the columns making up the table -

      Parameters

      - - - Attribute - Type - Description - Required - - - name - string - A unique name used to define the column. - True - - - nullable - bool - When set to true, allows the column to accept null values; false does not allow null values. - True - - - category - msi:MSITableColumnCategoryType - Valid input: - - Text - UpperCase - LowerCase - Integer - DoubleInteger - Time/Date - Identifier - Property - Filename - WildCardFilename - Path - Paths - AnyPath - DefaultDir - RegPath - Formatted - Template - Condition - GUID - Version - Language - Binary - Cabinet - Shortcut - - More information here: http://msdn.microsoft.com/library/en-us/msi/setup/column_data_types.asp - - False - - - type - string - Overrides the category specification. An example of valid input would be: S255 - False - - - key - bool - When set to true, the column is used to form the primary key for the table; false specifies that the column is not used to form the primary key. - False - - - minvalue - int - This field applies to columns having numeric value. The field contains the minimum permissible value. This can be the minimum value for an integer or the minimum value for a date or version string. - False - - - maxvalue - int - This field applies to columns having numeric value. The field is the maximum permissible value. This may be the maximum value for an integer or the maximum value for a date or version string. - False - - - keytable - string - This field applies to columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. This can be a list of tables separated by semicolons. - False - - - keycolumn - int - This field applies to table columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. The permissible range of the KeyColumn field is 1-32. - False - - - set - string - This is a list of permissible values for this field separated by semicolons. This field is usually used for enums. - False - - - description - string - A description of the data that is stored in the column. - False - - -
    -

    </column>

    -
-

</columns>

-

<rows>

-
    -

    <row>

    -
      - Defines the data for a row in the table -

      <columns>

      -
        -

        <column>

        -
          - Defines data for a specific cell in the row -

          Parameters

          - - - Attribute - Type - Description - Required - - - name - string - Name of the column to populate. - True - - - value - string - Value to populate the cell with. - True - - -
        -

        </column>

        -
      -

      </columns>

      -
    -

    </row>

    -
-

</rows>

-

Examples

- - - Build the IniFile table. Since the WriteIniValues and RemoveIniValues actions exist in the template, they will use this table. - - - <tables> - <table name="IniFile"> - <columns> - <column name="IniFile" nullable="false" category="Identifier" key="true" description="The key for this table." /> - <column name="FileName" nullable="false" category="Text" description="The localizable name of the .ini file in which to write the information. " /> - <column name="DirProperty" nullable="true" category="Identifier" description="Name of a property having a value that resolves to the full path of the folder containing the .ini file. " /> - <column name="Section" nullable="false" category="Formatted" description="The localizable .ini file section." /> - <column name="Key" nullable="false" category="Formatted" description="The localizable .ini file key within the section" /> - <column name="Value" nullable="false" category="Formatted" description="The localizable value to be written. " /> - <column name="Action" nullable="false" category="Integer" description="The type of modification to be made. " /> - <column name="Component_" nullable="false" category="Identifier" description="External key into the first column of the Component table referencing the component that controls the installation of the .ini value. " /> - </columns> - <rows> - <row> - <columns> - <column name="IniFile" value="MyInternetShortcut" /> - <column name="FileName" value="MyInternetAddr.url" /> - <column name="DirProperty" value="D__MYDIR" /> - <column name="Section" value="InternetShortcut" /> - <column name="Key" value="URL" /> - <column name="Value" value="[TARGETURL]" /> - <column name="Action" value="0" /> - <column name="Component_" value="C__Documentation" /> - </columns> - </row> - </rows> - </table> - </tables> - - -
-
- - - - Specifies the directory layout for the product. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the directory. - True - - - foldername - string - The directory's name (localizable)under the parent directory. - True - - - root - string - A reference to the directory's parent directory. This can be a property name or one of the predefined directories included with the default template: - - AdminToolsFolder - AppDataFolder - CommonAppDataFolder - CommonFiles64Folder - CommonFilesFolder - DesktopFolder - FavoritesFolder - FontsFolder - LocalAppDataFolder - MyPicturesFolder - PersonalFolder - ProgramFilesFolder - ProgramMenuFolder - ProgramFiles64Folder - SendToFolder - StartMenuFolder - StartupFolder - System16Folder - System64Folder - SystemFolder - TARGETDIR - TempFolder - TemplateFolder - WindowsFolder - WindowsVolume - - - True - - -

Nested Elements:

-

<directory>

-
    - Sub directories. Note, this element can contain nested <directory/> sub elements. -

    Parameters

    - - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the directory. - True - - - foldername - string - The directory's name (localizable)under the parent directory. - True - - -
-

</directory>

-

Examples

- - Define a sample directory structure. - - <directories> - <directory name="D__ACME" foldername="ACME" root="TARGETDIR" > - <directory name="D__ACME_MyProduct" foldername="My Product" /> - </directory> - </directories> - - -
-
- - - - Used to modify the environment variables of the target computer at - runtime. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - The localizable name of the environment variable. The key values are written or removed depending upon - which of the characters in the following table are prefixed to the name. There is no effect in the ordering of - the symbols used in a prefix. - - - Prefix - Description - - - = - Create the environment variable if it does not exist, and then set it during installation. If the environment variable exists, set it during the installation. - - - + - Create the environment variable if it does not exist, then set it during installation. This has no effect on the value of the environment variable if it already exists. - - - - - Remove the environment variable when the component is removed. This symbol can be combined with any prefix. - - - ! - Remove the environment variable during an installation. The installer only removes an environment variable during an installation if the name and value of the variable match the entries in the Name and Value fields of the Environment table. If you want to remove an environment variable, regardless of its value, use the '!' syntax, and leave the Value field empty. - - - * - This prefix is used with Microsoft® Windows® NT/Windows® 2000 to indicate that the name refers to a system environment variable. If no asterisk is present, the installer writes the variable to the user's environment. Microsoft Windows 95/98 ignores the asterisk and add the environment variable to autoexec.bat. This symbol can be combined with any prefix. A package that is used for per-machine installations should write environment variables to the machine's environment by including * in the Name column. For more information, see http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp - - - =- - The environment variable is set on install and removed on uninstall. This is the usual behavior. - - - !- - Removes an environment variable during an install or uninstall. - - - More information can be found here: http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp - - True - - - append - string - Localizable value that is to be set as a formatted string - True - - - component - string - Refrence to a component. Allows the variabled to be modified when the component is un/installed. - True - - -

Examples

- - Append the installation path to the user PATH variable. - - <environment> - <variable name="PATH" append="'[TARGETDIR]'" component="C__MainFiles" /> - </environment> - - -
-
- - - - Groups sets of files into named sets, these can be used to install - and perform operations on a set of files as one entity. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the component. - True - - - id - string - A string GUID unique to this component, version, and language.
Note that the letters of these GUIDs must be - uppercase. Utilities such as GUIDGEN can generate GUIDs containing lowercase letters. The lowercase letters must be - changed to uppercase to make these valid component code GUIDs. -
- True -
- - attr - int - This column contains a bit flag that specifies options for remote execution. Add the indicated bit to the total value in the column to include an option. - - - Value - Description - - - 0 - Component cannot be run from source.
- Set this bit for all components belonging to a feature to prevent the feature from being run-from-network or - run-from-source. Note that if a feature has no components, the feature always shows run-from-source and - run-from-my-computer as valid options. -
-
- - 1 - Component can only be run from source.
- Set this bit for all components belonging to a feature to prevent the feature from being run-from-my-computer. - Note that if a feature has no components, the feature always shows run-from-source and run-from-my-computer as - valid options. -
-
- - 2 - Component can run locally or from source. - - - 4 - If this bit is set, the value in the key element is used as a key into the Registry table.
- If the Value field of the corresponding record in the Registry table is null, the Name field in that record must - not contain "+", "-", or "*". For more information, see the description of the Name field in Registry table.
- Setting this bit is recommended for registry entries written to the HKCU hive. This ensures the installer writes - the necessary HKCU registry entries when there are multiple users on the same machine. -
-
- - 16 - If this bit is set, the installer does not remove the component during an uninstall. The installer registers an extra system client for the component in the Windows Installer registry settings. - - - - 32 - If this bit is set, the value in the KeyPath column is a key into the ODBCDataSource table. - - - 64 - If this bit is set, the installer reevaluates the value of the statement in the Condition column - upon a reinstall. If the value was previously False and has changed to True, the installer installs the component. - If the value was previously True and has changed to False, the installer removes the component even if the component - has other products as clients.
This bit should only be set for transitive components. See Using Transitive - Components. -
-
- - 128 - If this bit is set, the installer does not install or reinstall the component if a key path file or - a key path registry entry for the component already exists. The application does register itself as a client of - the component.
- Use this flag only for components that are being registered by the Registry table. -
-
- - 256 - Set this bit to mark this as a 64-bit component. This attribute facilitates the installation of - packages that include both 32-bit and 64-bit components. If this bit is not set, the component is registered - as a 32-bit component. - - -
-
- True -
- - directory - string - Refrence to a directory. Defines the directory location for where the files assigned to the component are to be placed. - True - - - feature - string - Refrence to a feature. Maps a feature to the component. Used to determine if the component is to be installed or not. - True - - - condition - string - A conditional statement that can control whether a component is installed. If the condition is null or evaluates to - true, then the component is enabled. If the condition evaluates to False, then the component is disabled and is not - installed. - False - - - fileattr - int - Integer containing bit flags representing file attributes.
- The following table shows the definition of the bit field. - - - Value - Description - - - 1 - Read-Only - - - 2 - Hidden - - - 4 - System - - - 512 - The file is vital for the proper operation of the component to which it belongs - - - 1024 - The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. - - - 4096 - This bit must only be added by a patch and if the file is being added by the patch. - - - 8192 - The file's source type is uncompressed. If set, ignore the Word Count Summary Property. - If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression - state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed - and msidbFileAttributesCompressed. - - - 16384 - The file's source type is compressed. If set, ignore the Word Count Summary Property. - If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of - the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and - msidbFileAttributesCompressed. - - -
- False -
- - checkinterop - bool - Used to determine if file(s) in the fileset are interop file(s). If true, extra information will be added in the install - package to register each interop file. If false, the file(s) will not be not be checked and the extra registration information - will not be added to the msi. - False - - - installassembliestogac - bool - Used to determine if assemblies should be installed to the Global Assembly Cache. - If true, all assemblies in the fileset will be added to the GAC. If false, the assemblies will be installed - to the specified directory (as a normal file would). Note: If an assembly is specified to be installed into the GAC, it will not - also be installed to the directory specified. - False - - - keepsubdirs - bool - Used to determine if directories in the fileset should be built. - If true, all subdirectories of the fileset basedir will be built. If false the directories structure will be - flattened. The default is false. - False - -
-

Nested Elements:

-

<keyfile>

-
    - This value points to a file or folder belonging to the component that the installer uses to detect the component. Two components cannot share the same key path value. -

    Parameters

    - - - Attribute - Type - Description - Required - - - file - string - Name of the key (file) to use. Also, this could be an id of a registry key value. - True - - -
-

</keyfile>

-

<fileset>

-
    - Specifies the files to include with the component -
-

</fileset>

-

<forceid>

-
    - Used to force specific attributes on a per file basis -

    Parameters

    - - - Attribute - Type - Description - Required - - - file - string - Name of the file, in the fileset, to override. - True - - - id - string - Unique GUID to assign to the file. - True - - - attr - int - Integer containing bit flags representing file attributes.
    - The following table shows the definition of the bit field. - - - Value - Description - - - 1 - Read-Only - - - 2 - Hidden - - - 4 - System - - - 512 - The file is vital for the proper operation of the component to which it belongs - - - 1024 - The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. - - - 4096 - This bit must only be added by a patch and if the file is being added by the patch. - - - 8192 - The file's source type is uncompressed. If set, ignore the Word Count Summary Property. - If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression - state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed - and msidbFileAttributesCompressed. - - - 16384 - The file's source type is compressed. If set, ignore the Word Count Summary Property. - If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of - the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and - msidbFileAttributesCompressed. - - -
    - False -
    - - version - string - This field is the version string for a versioned file. This field is blank for non-versioned files. - False - - - language - string - A list of decimal language IDs separated by commas. - False - - - checkinterop - bool - Used to determine if file is an interop file. If true, extra information will be added in the install - package to register the interop file. If false, the file will not be not be checked and the extra registration information - will not be added to the msi. - False - - - installtogac - bool - If true, and if the file is an assembly, it will be installed to the GAC. If false, the file - will be installed to the directory specified by the component. Note: If an assembly is specified to - be installed into the GAC, it will not also be installed to the directory specified. - False - -
    -
-

</forceid>

-

Examples

- - Define a sample component structure. - - <components> - <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" > - <key file="default.aspx" /> - <fileset basedir="${install.dir}"> - <include name="*.*" /> - </fileset> - </component> - </components> - - - - Install files to TARGETDIR and assemblies to the GAC (Global Assembly Cache). Do not install MyOtherAssembly.dll to the GAC, but rather install it with the other files (to TARGETDIR) - - <components> - <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" installassembliestogac="true" > - <key file="MyAssemblyName.xml" /> - <fileset basedir="${install.dir}"> - <include name="*.*" /> - </fileset> - <forceid file="MyOtherAssembly.dll" id="_4EB7CCB23D394958988ED817DA00B9D1" installtogac="false" /> - </component> - </components> - - - - Assign a registry entry to a specific component. - - <components> - <component name="C__RegistryEntry" id="{06C654AA-273D-4E39-885C-3E5225D9F336}" attr="4" directory="TARGETDIR" feature="F__DefaultFeature" > - <key file="R__822EC365A8754FACBF6C713BFE4E57F0" /> - </component> - </components> - . - . - . - <registry> - <key path="SOFTWARE\MyCompany\MyProduct\" root="machine" component="C__RegistryEntry"> - <value id="R__822EC365A8754FACBF6C713BFE4E57F0" name="MyKeyName" value="MyKeyValue" /> - </key> - </registry> - - -
-
- - - - Creates custom dialogs that can gather information not handled by - the default installer template. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the dialog. - True - - - hcenter - int - Horizontal position of the dialog box. The range is 0 to 100, with 0 at the left edge of the screen and 100 at the right edge. - True - - - vcenter - int - Vertical position of the dialog box. The range is 0 to 100, with 0 at the top edge of the screen and 100 at the bottom edge. - True - - - width - int - Width of the rectangular boundary of the dialog box. This number must be non-negative. - True - - - height - int - Height of the rectangular boundary of the dialog box. This number must be non-negative. - True - - - attr - int - A 32-bit word that specifies the attribute flags to be applied to this dialog box. This number must be non-negative. - - - Value - Description - - - 1 - Visible - - - 2 - Modal - - - 4 - Minimize - - - 8 - SysModal - - - 16 - KeepModeless - - - 32 - TrackDiskSpace - - - 64 - UseCustomPalette - - - 128 - RTLRO - - - 256 - RightAligned - - - 512 - LeftScroll - - - 896 - BiDi - - - 65536 - Error - - - More information here: http://msdn.microsoft.com/library/en-us/msi/setup/dialog_style_bits.asp - - True - - - title - string - A localizable text string specifying the title to be displayed in the title bar of the dialog box. - True - - - firstcontrol - string - An external key to the second column of the Control table. Combining this field with the Dialog field identifies a - unique control in the Control table. This defines the control that takes the focus when the dialog box is created. This - column is ignored in an Error dialog box.
- Because static text cannot take the focus, a Text control that describes an Edit, PathEdit, ListView, ComboBox or - VolumeSelectCombo control must be made the first control in the dialog box to ensure compatibility with screen readers. -
- True -
- - defaultcontrol - string - An external key to the second column of the Control table. Combining this field with the Dialog field results in - a primary key into the Control table that defines the default control. Hitting the Return key is equivalent to clicking - on the default control. If this column is left blank, then there is no default control. This column is ignored in the - Error dialog box. - - True - - - cancelcontrol - string - An external key to the second column of the Control table. Combining this field with the Dialog field results in - a primary key of the Control table that defines the cancel control. Hitting the ESC key or clicking the Close button in - the dialog box is equivalent to clicking on the cancel control. This column is ignored in an Error dialog box.
- The cancel control is hidden during rollback or the removal of backed up files. The protected UI handler hides the control - upon receiving a INSTALLMESSAGE_COMMONDATA message. -
- True -
-
-

Examples

- - Add a web folder dialog: - - <dialogs> - <dialog name="WebFolderDlg" hcenter="50" vcenter="50" width="370" height="270" attr="39" title="[ProductName] [Setup]" firstcontrol="Next" defaultcontrol="Next" cancelcontrol="Cancel" /> - </dialogs> - - -
-
- - - - Creates user interface controls displayed on custom dialogs. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Name of the control. This name must be unique within a dialog box but can be repeated on different dialog boxes. - True - - - dialog - string - Refrence to a dialog. Used to associate the control with the dialog. - True - - - type - string - The type of the control. - - - Control name - Description - - - Billboard - Displays billboards based on progress messages. - - - Bitmap - Displays a static picture of a bitmap. - - - CheckBox - A two-state check box. - - - ComboBox - A drop-down list with an edit field. - - - DirectoryCombo - Select all except the last segment of the path. - - - DirectoryList - Displays folders below the main part of path. - - - Edit - A regular edit field for any string or integer. - - - GroupBox - Displays a rectangle that groups other controls together. - - - Icon - Displays a static picture of an icon. - - - Line - Displays a horizontal line. - - - ListBox - A drop-down list without an edit field. - - - ListView - Displays a column of values with icons for selection. - - - MaskedEdit - An edit field with a mask in the text field. - - - PathEdit - Displays folder name or entire path in an edit field. - - - ProgressBar - Bar graph that changes length as it receives progress messages. - - - PushButton - Displays a basic push button. - - - RadioButtonGroup - A group of radio buttons. - - - ScrollableText - Displays a long string of text. - - - SelectionTree - Displays information from the Feature table and enables the user to change their selection state. - - - Text - Displays static text. - - - VolumeCostList - Displays costing information on different volumes. - - - VolumeSelectCombo - Selects volume from an alphabetical list. - - - More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/controls.asp - True - - - x - int - Horizontal coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. - True - - - y - int - Vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. - True - - - width - int - Width of the rectangular boundary of the control. This must be a non-negative number. - True - - - height - int - Height of the rectangular boundary of the control. This must be a non-negative number. - True - - - attr - int - A 32-bit word that specifies the bit flags to be applied to this control. This must be a non-negative number, and the allowed values depend upon the type of control.For a list of all control attributes, and the value to enter in this field, see Control Attributes. - True - - - property - string - The name of a defined property to be linked to this control. Radio button, list box, and combo box values are tied into a group by being linked to the same property. This column is required for active controls and is ignored by static controls. - False - - - text - string - A localizable string used to set the initial text contained in a control. The string can also contain embedded properties. - False - - - nextcontrol - string - The name of another control on the same dialog box. If the focus in the dialog box is on the control in the Control column, hitting the tab key moves the focus to the control listed here. Therefore this is used to specify the tab order of the controls on the dialog box. The links between the controls must form a closed cycle. Some controls, such as static text controls, can be left out of the cycle. In that case, this field may be left blank. - False - - - help - string - Optional, localizable text strings that are used with the Help button. The string is divided into two parts by a separator character (|). The first part of the string is used as ToolTip text. This text is used by screen readers for controls that contain a picture. The second part of the string is reserved for future use. The separator character is required even if only one of the two kinds of text is present. - False - - - remove - bool - If true, the control is removed. If false, the control is added. - False - - -

Examples

- - Remove the Browse button from the customize dialog and add controls for a web dialog - - <controls> - <!-- Remove the Browse button from customize dialog --> - <control dialog="CustomizeDlg" name="Browse" type="PushButton" - x="304" y="200" width="56" height="17" attr="3" remove="true" /> - <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" - x="25" y="85" width="175" height="95" attr="7" remove="true" /> - <!-- Re add the tree control with the proper next control --> - <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" - x="25" y="85" width="175" height="95" attr="7" - property="_BrowseProperty" text="Tree of selections" nextcontrol="Reset" /> - <!-- Adds the controls associated with the webfolder dialog --> - <control dialog="WebFolderDlg" name="BannerBitmap" type="Bitmap" - x="0" y="0" width="374" height="44" attr="1" - text="[BannerBitmap]" nextcontrol="VDirLabel" /> - <control dialog="WebFolderDlg" name="Title" type="Text" - x="15" y="6" width="200" height="15" attr="196611" - text="[DlgTitleFont]Virtual Directory Information" /> - <control dialog="WebFolderDlg" name="Description" type="Text" - x="25" y="23" width="280" height="15" attr="196611" - text="Please enter your virtual directory and port information." /> - <control dialog="WebFolderDlg" name="BannerLine" type="Line" - x="0" y="44" width="374" height="0" attr="1" /> - <control dialog="WebFolderDlg" name="VDirLabel" type="Text" - x="18" y="73" width="348" height="15" attr="3" - text="&Virtual directory:" - nextcontrol="Edit_VDir" /> - <control dialog="WebFolderDlg" name="Edit_VDir" type="Edit" - x="18" y="85" width="252" height="18" attr="7" - property="TARGETVDIR" - text="[TARGETVDIR]" - nextcontrol="PortLabel" /> - <control dialog="WebFolderDlg" name="PortLabel" type="Text" - x="18" y="110" width="348" height="15" attr="3" - text="&Port:" - nextcontrol="Edit_Port" /> - <control dialog="WebFolderDlg" name="Edit_Port" type="Edit" - x="18" y="122" width="48" height="18" attr="7" - property="TARGETPORT" - text="[TARGETPORT]" - nextcontrol="Back" /> - <control dialog="WebFolderDlg" name="BottomLine" type="Line" - x="0" y="234" width="374" height="0" attr="1" /> - <control dialog="WebFolderDlg" name="Back" type="PushButton" - x="180" y="243" width="56" height="17" attr="3" - text="[ButtonText_Back]" nextcontrol="Next" /> - <control dialog="WebFolderDlg" name="Next" type="PushButton" - x="236" y="243" width="56" height="17" attr="3" - text="[ButtonText_Next]" nextcontrol="Cancel" /> - <control dialog="WebFolderDlg" name="Cancel" type="PushButton" - x="304" y="243" width="56" height="17" attr="3" - text="[ButtonText_Cancel]" nextcontrol="BannerBitmap" /> - </controls> - - -
-
- - - - Used to validate and perform operations as the result of information - entered by the user into controls on custom dialogs. - -

Parameters

- - - Attribute - Type - Description - Required - - - dialog - string - Refrence to a dialog. Used to associate the control with the dialog. - True - - - control - string - Refrence to a control. Maps to a control for the specified dialog. - True - - - action - string - The action that is to be taken on the control. The possible actions are shown in the following table. - - - Value - Description - - - Default - Set control as the default. - - - Disable - Disable the control. - - - Enable - Enable the control. - - - Hide - Hide the control. - - - Show - Display the control. - - - - True - - - condition - string - A conditional statement that specifies under which conditions the action should be triggered. If this statement does not evaluate to TRUE, the action does not take place. If it is set to 1, the action is always applied. - True - - - remove - bool - If true, the control condition is removed. If false, the control condition is added. - False - - -

Examples

- - Remove the control condition for the Browse button from the customize dialog and add control conditions for a web dialog - - <controlconditions> - <!-- Remove control condition for Browse button on customizeDlg --> - <controlcondition dialog="CustomizeDlg" control="Browse" action="Hide" - condition="Installed" remove="true" /> - <!-- Add control conditions for the web folder dialog --> - <controlcondition dialog="WebFolderDlg" control="Back" action="Disable" - condition="ShowUserRegistrationDlg=""" /> - <controlcondition dialog="WebFolderDlg" control="Back" action="Enable" - condition="ShowUserRegistrationDlg<>""" /> - </controlconditions> - - -
-
- - - - Used to route the flow of the installation process as the result of - events raised by the user interacting with controls on dialogs. - -

Parameters

- - - Attribute - Type - Description - Required - - - dialog - string - Refrence to a dialog. Used to associate the control with the dialog. - True - - - control - string - Refrence to a control. Maps to a control for the specified dialog. - True - - - name - string - An identifier that specifies the type of event that should take place when the user interacts with the control - specified by Dialog_ and Control_. For a list of possible values see ControlEvent Overview.
- To set a property with a control, put [Property_Name] in this field and the new value in the argument field. Put { } - into the argument field to enter the null value. -
- True -
- - argument - string - A value used as a modifier when triggering a particular event. - True - - - condition - string - A conditional statement that determines whether the installer activates the event in the Event column. The installer - triggers the event if the conditional statement in the Condition field evaluates to True. Therefore put a 1 in this column - to ensure that the installer triggers the event. The installer does not trigger the event if the Condition field contains - a statement that evaluates to False. The installer does not trigger an event with a blank in the Condition field unless no - other events of the control evaluate to True. If none of the Condition fields for the control named in the Control_ field - evaluate to True, the installer triggers the one event having a blank Condition field, and if more than one Condition field - is blank it triggers the one event of these with the largest value in the Ordering field. - False - - - order - int - An integer used to order several events tied to the same control. This must be a non-negative number. - False - - - remove - bool - If true, the control condition is removed. If false, the control condition is added. - False - -
-

Examples

- - Remove the control events for the Browse button from the customize dialog and add events conditions for a web dialog - - - <controlevents> - <!-- Remove the old control events --> - <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" - argument="SetupTypeDlg" condition="ProductID" remove="true" /> - <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" - argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg <> 1" remove="true" /> - <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" - argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg = 1" remove="true" /> - <!-- Remove control events for Browse button on CustomizeDlg --> - <controlevent dialog="CustomizeDlg" control="Browse" name="SelectionBrowse" - argument="BrowseDlg" condition="1" remove="true" /> - <!-- Add new control events for the web dialog --> - <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" - argument="WebFolderDlg" condition="ProductID" /> - <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" - argument="WebFolderDlg" condition="ShowWebFolderDlg <> 1" /> - <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" - argument="WebFolderDlg" condition="ShowWebFolderDlg = 1" /> - <controlevent dialog="WebFolderDlg" control="Cancel" name="SpawnDialog" - argument="CancelDlg" order="0" /> - <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" - argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg<>1" - order="0" /> - <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" - argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg=1" - order="0" /> - <!-- Virtual Directory Control Events --> - <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" - argument="WEBCA_CreateURLs" condition="1" order="0" /> - <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" - argument="WEBCA_EvaluateURLsMB" condition="1" order="1" /> - <controlevent dialog="WebFolderDlg" control="Next" name="SetTargetPath" - argument="TARGETDIR" condition="1" order="2" /> - <controlevent dialog="WebFolderDlg" control="Next" name="NewDialog" - argument="SetupTypeDlg" condition="1" order="3" /> - </controlevents> - - -
-
- - - - Makes modifications to the Windows Registry of the target computer - at runtime. - -

Parameters

- - - Attribute - Type - Description - Required - - - component - string - Refrence to a component. The component that controls the installation of the registry value. - True - - - root - msi:MSIRegistryKeyRoot - Valid input: - - dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. - machine represents HKEY_LOCAL_MACHINE - classes represents HKEY_CLASSES_ROOT - user represents HKEY_CURRENT_USER - users represents HKEY_USERS - - - True - - - path - string - Registry key. - True - - -

Nested Elements:

-

<value>

-
    - Specifies the registry value to add to the target machine. - - - Attribute - Type - Description - Required - - - name - string - The registry value name (localizable). If this is Null, then the data entered into the Value column are - written to the default registry key.
    - If the Value column is Null, then the strings shown in the following table in the Name column have special - significance. - - - String - Description - - - + - The key is to be created, if absent, when the component is installed. - - - - - The key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. - - - * - The key is to be created, if absent, when the component is installed. Additionally, the key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. - - -
    - False -
    - - value - string - The localizable registry value. The field is Formatted. If the value is attached to one of the following prefixes (i.e. #%value) then the value is interpreted as described in the table. Note that each prefix begins with a number sign (#). If the value begins with two or more consecutive number signs (#), the first # is ignored and value is interpreted and stored as a string. - - - Prefix - Description - - - #x - The value is interpreted and stored as a hexadecimal value (REG_BINARY). - - - #% - The value is interpreted and stored as an expandable string (REG_EXPAND_SZ). - - - # - The value is interpreted and stored as an integer (REG_DWORD). - - - - If the value contains the sequence tilde [~], then the value is interpreted as a Null-delimited list of strings (REG_MULTI_SZ). For example, to specify a list containing the three strings a, b and c, use "a[~]b[~]c." - The sequence [~] within the value separates the individual strings and is interpreted and stored as a Null character. - If a [~] precedes the string list, the strings are to be appended to any existing registry value strings. If an appending string already occurs in the registry value, the original occurrence of the string is removed. - If a [~] follows the end of the string list, the strings are to be prepended to any existing registry value strings. If a prepending string already occurs in the registry value, the original occurrence of the string is removed. - If a [~] is at both the beginning and the end or at neither the beginning nor the end of the string list, the strings are to replace any existing registry value strings. - Otherwise, the value is interpreted and stored as a string (REG_SZ). - - - False - - - dword - string - A dword value to input, if the value attribute is null. This removes the requirement of adding "#" before the value. - False - - - id - string - Primary key used to identify a registry record. - False - -
    -
-

</value>

-

Examples

- - Add the a couple registry entries on the target machine. - - <registry> - <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > - <value name="ProductVersion" value="1.0.0" /> - <value name="ProductDir" value="[TARGETDIR]" /> - <value name="VirtualDir" value="[TARGETVDIR]" /> - </key> - </registry> - - - - Add a default key value to the specified registry key path - - <registry> - <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > - <value value="1.0.0" /> - </key> - </registry> - - - - Another way to add a default key value to the specified registry key path - - <registry> - <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > - <value name="" value="1.0.0" /> - </key> - </registry> - - - - Specify hexadecimal value (REG_BINARY) for the default key - - <registry> - <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > - <value> - 1a,81,0a,03,01,00,06,00,00,00,d3,15,fd,00,01,00,00,00,00,00,01, - 00,00,00,00,00,00,00,00,00,00,00,b0,90,ce,09,01,00,00,00,00,00,ff,ff,ff,00, - 00,00,00,00,00,00,00,00,6d,7a,0a,03,01,00,00,00,00,00,00,00,38,40,00,00,00, - 00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,01,00,00,00,00,0f,00,00,00, - f0,ff,ff,ff,54,69,6d,65,73,20,4e,65,77,20,52,6f,6d,61,6e,f4,6f,d4,08,02,00 - </value> - </key> - </registry> - - -
-
- - - - Stores icons to be used with shortcuts, file extensions, CLSIDs or - similar uses. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Name of the icon file. - True - - - value - string - The binary icon data in PE (.dll or .exe) or icon (.ico) format. - True - - -

Examples

- - Add a compiled help icon to the msi database; To be used with a shortcut. - - <icons> - <icon name="CHMICON" value="${resource.dir}\chm.ico" /> - </icons> - - -
-
- - - - Creates shortcuts on the target computer. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Unique name identifying the shortcut. - True - - - directory - string - Reference to a directory. The location of where the shortcut should be created. - True - - - filename - string - The localizable name of the shortcut to be created. - True - - - component - string - Reference to a component. The installer uses the installation state of this specified component to determine whether the shortcut is created or deleted. This component must have a valid key path for the shortcut to be installed. If the Target column contains the name of a feature, the file launched by the shortcut is the key file of the component listed in this column. - True - - - target - string - The shortcut target. The installer evaluates this field as a Formatted string. The field should contains a property identifier enclosed by square brackets ([ ]), that is expanded into the file or a folder pointed to by the shortcut. - True - - - arguments - string - The command-line arguments for the shortcut.
Note that the resolution of properties in the Arguments field is limited. A property formatted as [Property] in this field can only be resolved if the property already has the intended value when the component owning the shortcut is installed. For example, for the argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and the component that owns the shortcut. -
- False -
- - hotkey - string - The hotkey for the shortcut. The low-order byte contains the virtual-key code for the key, and the high-order byte contains modifier flags. This must be a non-negative number. Authors of installation packages are generally recommend not to set this option, because this can add duplicate hotkeys to a users desktop. In addition, the practice of assigning hotkeys to shortcuts can be problematic for users using hotkeys for accessibility. - False - - - icon - string - Reference to an icon. - False - - - iconindex - int - The icon index for the shortcut. This must be a non-negative number. - False - - - showcmd - int - The Show command for the application window.
The following values may be used. The values are as defined for the Windows API function ShowWindow. - - - Value - Description - - - 1 - SW_SHOWNORMAL - - - 3 - SW_SHOWMAXIMIZED - - - 7 - SW_SHOWMINNOACTIVE - - -
- False -
- - wkdir - string - The name of the property that has the path of the working directory for the shortcut. - False - -
-

Nested Elements:

-

<description>

-
    - The localizable description of the shortcut. -
-

</description>

-

Examples

- - Add a compiled help icon to the msi database; To be used with a shortcut. - - <shortcuts> - <shortcut name="HelpFiles" directory="D__PROGRAMMENU_ACME_MYPRODUCT" filename="Help File" component="C__MainFiles" target="[$C__MainFiles]\Help.chm" icon="CHMICON" iconindex="0" showcmd="3" > - <description>My Product help documentation</description> - </shortcut> - </shortcuts> - - -
-
- - - - Stores the binary data for items such as bitmaps, animations, and - icons. The binary table is also used to store data for custom - actions. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A unique key that identifies the particular binary data. If the binary data is for a control, the key appears in the Text column of the associated control in the Control table. This key must be unique among all controls requiring binary data. - True - - - value - string - The binary file to add. - True - - -

Examples

- - Add the custom action dll to create/modify virtual directories - - <binaries> - <binary name="MSVBDPCADLL" value="${resource.dir}\MSVBDPCA.DLL" /> - </binaries> - - -
-
- - - - Used to configure executables that may be run during steps in the - installation process to do things outside the bounds of MSI - technology's feature set. This is the main spot you can extend MSI - technology to perform custom processes via compiled code. - -

Parameters

- - - Attribute - Type - Description - Required - - - action - string - Name of the action. The action normally appears in a sequence table unless it is called by another custom action. If the name matches any built-in action, then the custom action is never called. - True - - - type - string - A field of flag bits specifying the basic type of custom action and options. See Summary List of All Custom Action Types for a list of the basic types. See Custom Action Return Processing Options, Custom Action Execution Scheduling Options, Custom Action Hidden Target Option, and Custom Action In-Script Execution Options. - True - - - source - string - A property name or external key into another table. For a discussion of the possible custom action sources, see Custom Action Sources and the Summary List of All Custom Action Types. For example, the Source column may contain an external key into the first column of one of the following tables containing the source of the custom action code.
- Directory table for calling existing executables.
- File table for calling executables and DLLs that have just been installed.
- Binary table for calling executables, DLLs, and data stored in the database.
- Property table for calling executables whose paths are held by a property. -
- True -
- - target - string - An execution parameter that depends on the basic type of custom action. See the Summary List of All Custom Action Types for a description of what should be entered in this field for each type of custom action. For example, this field may contain the following depending on the custom action. - - - Target - Custom Action - - - Entry point (required) - Calling a DLL. - - - Executable name with arguments (required) - Calling an existing executable. - - - Command line arguments (optional) - Calling an executable just installed. - - - Target file name (required) - Creating a file from custom data. - - - Null - Executing script code. - - - - True - -
-

Examples

- - Add some custom actions related to the virtual directory dialog and custom action. - - <customactions> - <!-- Custom actions creating entry points into the custom action dll specified in the binary table --> - <customaction action="WEBCA_GatherWebFolderProperties" type="1" source="MSVBDPCADLL" target="GatherWebFolderProperties" /> - <customaction action="WEBCA_ApplyWebFolderProperties" type="1537" source="MSVBDPCADLL" target="ApplyWebFolderProperties" /> - <customaction action="WEBCA_RollbackApplyWebFolderProperties" type="1281" source="MSVBDPCADLL" target="RollbackApplyWebFolderProperties" /> - <customaction action="WEBCA_CreateURLs" type="1" source="MSVBDPCADLL" target="CreateURLs" /> - <customaction action="WEBCA_EvaluateURLs" type="1" source="MSVBDPCADLL" target="EvaluateURLs" /> - <customaction action="WEBCA_EvaluateURLsNoFail" type="1" source="MSVBDPCADLL" target="EvaluateURLsNoFail" /> - <customaction action="WEBCA_EvaluateURLsMB" type="1" source="MSVBDPCADLL" target="EvaluateURLsMB" /> - <customaction action="WEBCA_CreateAppRoots" type="1" source="MSVBDPCADLL" target="CreateAppRoots" /> - - <!-- Custom actions to set default control values in the webfolder dialog --> - <customaction action="WEBCA_TARGETVDIR" type="307" source="TARGETVDIR" target="Default VDir" /> - <customaction action="WEBCA_TARGETPORT" type="307" source="TARGETPORT" target="80" /> - </customactions> - - -
-
- - - - Used to modify the sequence of tasks/events that execute during the - overall installation process. - -

Parameters

- - - Attribute - Type - Description - Required - - - type - msi:MSISequenceTable - Valid inputs: - - installexecute represents InstallExecuteSequence Table. - installui represents InstallUISequence Table - adminexecute represents AdminExecuteSequence Table - adminui represents AdminUISequence Table - advtexecute represents AdvtUISequence Table - - - True - - - action - string - Name of the action to execute. This is either a built-in action or a custom action. - True - - - value - int - Number that determines the sequence position in which this action is to be executed.
- A positive value represents the sequence position. A Null value indicates that the action is not executed. The following - negative values indicate that this action is to be executed if the installer returns the associated termination flag. No - more than one action may have a negative value entered in the Sequence field. - - - Value - Description - - - -1 - Successful completion. - - - -2 - User terminates install. - - - -3 - Fatal exit terminates. - - - -4 - Install is suspended. - - -
- True -
- - condition - string - This field contains a conditional expression. If the expression evaluates to False, then the action is skipped. If the expression syntax is invalid, then the sequence terminates, returning iesBadActionData. - False - -
-

Examples

- - Add the sequences to support virtual directories - - <sequences> - <sequence type="installexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> - <sequence type="installexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> - <sequence type="installexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_GatherWebFolderProperties" value="3701" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_ApplyWebFolderProperties" value="3701" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_RollbackApplyWebFolderProperties" value="3701" condition="NOT Installed" /> - <sequence type="installexecute" action="WEBCA_CreateAppRoots" value="3701" condition="NOT Installed" /> - <sequence type="installui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> - <sequence type="installui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> - <sequence type="installui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> - <sequence type="installui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> - <sequence type="adminexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> - <sequence type="adminexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> - <sequence type="adminexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> - <sequence type="adminexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> - <sequence type="adminui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> - <sequence type="adminui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> - <sequence type="adminui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> - <sequence type="adminui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> - </sequences> - - -
-
- - - - Creates text to be displayed in a progress dialog box and written - to the log for actions that take a long time to execute. The text - displayed consists of the action description and optionally formatted - data from the action. The entries in the ActionText table typically - refer to actions in sequence tables. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Unique name identifying the action. - True - - - template - string - A localized format template is used to format action data records for display during action execution. If no template is supplied, then the action data will not be displayed. - False - - -

Nested Elements:

-

<description>

-
    - Localized description displayed in the progress dialog box or written to the log when the action is executing. -
-

</description>

-

Examples

- - Add the related action text for the web folder actions. - - <actiontext> - <action name="WEBCA_GatherWebFolderProperties" > - <description>Gathering web folder properties</description> - </action> - <action name="WEBCA_ApplyWebFolderProperties" > - <description>Applying web folder properties</description> - </action> - <action name="WEBCA_RollbackApplyWebFolderProperties" > - <description>Removing web folder properties</description> - </action> - <action name="WEBCA_CreateURLs" > - <description>Creating URLs</description> - </action> - <action name="WEBCA_EvaluateURLs" > - <description>Evaluating URLs</description> - </action> - <action name="WEBCA_EvaluateURLsNoFail" > - <description>Evaluating URLs and do not fail if URL is invalid</description> - </action> - <action name="WEBCA_EvaluateURLsMB" > - <description>Evaluating URLs</description> - </action> - <action name="WEBCA_CreateAppRoots" > - <description>Creating application roots</description> - </action> - <action name="WEBCA_TARGETVDIR" > - <description>Set TARGETVDIR property to the specified virtual dir</description> - </action> - <action name="WEBCA_TARGETPORT" > - <description>Set TARGETPORT property to the specified virtual dir port</description> - </action> - </actiontext> - - -
-
- - - - Adds Verbs and a handler for the specified file type. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - directory - string - Refrence to a directory. The directory to add the specific verb/handler to IIS for the specified file type. - True - - - extension - string - File name extension to specifically handle - False - - - exepath - string - Path to the Internet Server API (ISAPI) or Common Gateway Interface (CGI) program to run to process a request. - False - - - verbs - string - Internet Information Services verbs that are allowed for the executable file. Only verbs entered in this field will be allowed. - False - - -

Examples

- - Add the aspx app mapping - - <appmappings> - <appmapping directory="D__ACME_MyProduct" extension=".aspx" exepath="[DOTNETFOLDER]aspnet_isapi.dll" verbs="GET,HEAD,POST,DEBUG" /> - </appmappings> - - -
-
- - - - Determines the local path equivalent for a url and stores this - information in a property. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - The name of the URLProperty to convert - True - - - property - string - The name of the property to store the directory information. - True - - -

Examples

- - Convert the TARGETURL property to a directory and store that information in TARGETDIR - - <urlproperties> - <urlproperty name="TARGETURL" property="TARGETDIR" /> - </urlproperties> - - -
-
- - - - Creates a URLProperty representing the virtual directory and port. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Property containing the virtual directory - True - - - portproperty - string - Property containing the network port number to use. - True - - - urlproperty - string - URLProperty to store the url in - True - - -

Examples

- - Convert the virtual directory and port to a url and store the value in a property. - - <vdirproperties> - <vdirproperty name="TARGETVDIR" portproperty="TARGETPORT" urlproperty="TARGETURL" /> - </vdirproperties> - - -
-
- - - - Create a Web application definition and marks it as running in-process - or out-of-process. If an application already exists at the specified - path, you can use this method to reconfigure the application from - in-process to out-of-process, or the reverse. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - component - string - Reference to a component. Determines when the approot will be created. - True - - - urlproperty - string - URLProperty with stored url - True - - - inprocflag - int - Specifies whether the application being created is to run in-process (0), out-of-process (1), or in a pooled process (2). If the application already exists and is running, changing the value of this flag will cause the application definition to be deleted and a new application created to run in the specified process space. - True - - -

Examples

- - Convert the virtual directory and port to a url and store the value in a property. - - <approots> - <approot component="C__MainFiles" urlproperty="TARGETURL" inprocflag="2" /> - </approots> - - -
-
- - - - Specifies directory security in IIS. Can also configure the default - documents supported by each directory. - - This not an officially Microsoft supported table. -

Parameters

- - - Attribute - Type - Description - Required - - - directory - string - Reference to a directory. This is the directory that gets modified with the specific attributes. - True - - - attr - int - Attributes to set for the directory. - - - Value - Flag Name - Description - - - 1 - AccessRead - The file or the contents of the folder may be read through Microsoft Internet Explorer. - - - 2 - AccessWrite - Users are allowed to upload files and their associated properties to the enabled directory on your server or to change content in a Write-enabled file. Write can be implemented only with a browser that supports the PUT feature of the HTTP 1.1 protocol standard. - - - 4 - AccessExecute - The file or the contents of the folder may be executed, regardless of file type. - - - 8 - AccessSSL - File access requires SSL file permission processing, with or without a client certificate. - - - 16 - AccessSource - Users are allowed to access source code if either Read or Write permissions are set. Source code includes scripts in Microsoft ® Active Server Pages (ASP) applications. - - - 32 - AccessSSLNegotiateCert - SSL file access processing requests a certificate from the client. A value of false indicates that access continues if the client does not have a certificate. Some versions of Internet Explorer will close the connection if the server requests a certificate and a certificate is not available (even if AccessSSLRequireCert is also set to true). - - - 64 - AccessSSLRequireCert - SSL file access processing requests a certificate from the client. If the client provides no certificate, the connection is closed. AccessSSLNegotiateCert must also be set to true when using AccessSSLRequireCert. - - - 128 - AccessSSLMapCert - SSL file permission processing maps a client certificate to a Microsoft Windows ® operating system user-account. The AccessSSLNegotiateCert property must also be set to true for the mapping to occur. - - - 256 - AccessSSL128 - File access requires SSL file permission processing with a minimum key size of 128 bits, with or without a client certificate. - - - 512 - AccessScript - The file or the contents of the folder may be executed if they are script files or static content. A value of false only allows static files, such as HTML files, to be served. - - - 1024 - AccessNoRemoteWrite - Remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. - - - 4096 - AccessNoRemoteRead - Remote requests to view files are denied; only requests from the same computer as the IIS server succeed if the AccessRead property is set to true. You cannot set AccessNoRemoteRead to false to enable remote requests, and set AccessRead to false to disable local requests. - - - 8192 - AccessNoRemoteExecute - Remote requests to execute applications are denied; only requests from the same computer as the IIS server succeed if the AccessExecute property is set to true. You cannot set AccessNoRemoteExecute to false to enable remote requests, and set AccessExecute to false to disable local requests. - - - 16384 - AccessNoRemoteScript - Requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. - - - 32768 - AccessNoPhysicalDir - Access to the physical path is not allowed. - - - - True - - - defaultdoc - string - Adds a filename to the Default Documents to process. Add multiple separated with a comma (Eg. "Default.aspx,Default.htm") - False - - -

Examples

- - Specify permissions for the directory structure. - - <iisproperties> - <iisproperty directory="TARGETDIR" attr="626" defaultdoc="Default.aspx" /> - <iisproperty directory="D__BIN" attr="112" /> - <iisproperty directory="D__SomeSubDir" attr="114" /> - </iisproperties> - - -
-
- - - Summary description for MsiTaskInfo. - - - - - Loads the banner image. - - The MSI database. - - - - Loads the background image. - - The MSI database. - - - - Loads the license file. - - The MSI database. - - - - Loads records for the Media table. - - The MSI database. - The sequence number of the last file in the .cab. - - - - Loads records for the Features table. - - The MSI database. - - - - Adds a feature record to the Features table. - - The MSI database Feature table. - The MSI database Condition table. - The name of this feature's parent. - The MSI database. - This Feature's Schema element. - The tree depth of this feature. - The tree order of this feature. - - - - Loads records for the LaunchCondition table - - The MSI database. - - - - Merges Merge Modules into the MSI Database. - - The MSI Database. - The path to temporary files. - - - - Creates a Windows Installer (also known as Microsoft Installer, or MSI) - setup database for installing software on the Windows Platform. - - - - Requires cabarc.exe in the path. This tool is part of the - Microsoft Cabinet SDK. - - - Requires mergemod.dll version 2.0 or greater. This dll is part of the - Microsoft Platform SDK. - - - See the Roadmap to Windows Installer Documentation - at Microsoft's MSDN website for more information. - - - - - - Initializes task and verifies parameters. - - - - - Executes the task. - - - - - An .rtf (rich text format) file containing the license agreement - for your software. The contents of this file will be displayed to - the user when setup runs and must be accepted to continue. - - - - - A .bmp (bitmap) file 495x60 pixels in size that will be displayed - as the banner (top) image of the installation user interface. - - - - - A .bmp (bitmap) file 495x315 pixels in size that will be displayed - as the background image of the installation user interface. - - - - - - Groups sets of components into named sets, these can be used to - layout the tree control that allows users to select and deselect - features of your software product when a custom installation is - selected at runtime. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - A name used to refer to the feature. - True - - - display - int - The number in this field specifies the order in which the feature is to be displayed in the user interface. - The value also determines if the feature is initially displayed expanded or collapsed.
- If the value is null or zero, the record is not displayed. If the value is odd, the feature node is expanded initially. - If the value is even, the feature node is collapsed initially. -
- True -
- - title - string - Short string of text identifying the feature. This string is listed as an item by the SelectionTree control of the Selection Dialog. - False - - - typical - bool - Determines if the feature should be included in a "typical" install. This is useful for when the user selects to just install the typical features. - False - - - directory - string - Refrence to a directory. Specify a corresponding directory to go with the feature. - False - - - attr - int - Any combination of the following: - - - Value - Description - - - 0 - Components of this feature that are not marked for installation from source are installed locally. - - - 1 - Components of this feature not marked for local installation are installed to run from the source CD-ROM or server. - - - 2 - Set this attribute and the state of the feature is the same as the state of the feature's parent. - - - 4 - Set this attribute and the feature state is Advertise. - - - 8 - Note that this bit works only with features that are listed by the ADVERTISE property.
Set this attribute to prevent the feature from being advertised.
-
- - 16 - Set this attribute and the user interface does not display an option to change the feature state to Absent. Setting this attribute forces the feature to the installation state, whether or not the feature is visible in the UI. - - - 32 - Set this attribute and advertising is disabled for the feature if the operating system shell does not support Windows Installer descriptors. - -
- More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/feature_table.asp -
- False -
-
-

Nested Elements:

-

<feature>

-
    - Nested feature elements are supported. -
-

</feature>

-

<description>

-
    - Longer string of text describing the feature. This localizable string is displayed by the Text control of the Selection Dialog. -
-

</description>

-

<conditions>

-
    -

    <condition>

    -
      - - - Attribute - Type - Description - Required - - - expression - string - If this conditional expression evaluates to TRUE, then the Level column in the Feature table is set to the - conditional install level.
      - The expression in the Condition column should not contain reference to the installed state of any feature or component. - This is because the expressions in the Condition column are evaluated before the installer evaluates the installed - states of features and components. Any expression in the Condition table that attempts to check the installed state - of a feature or component always evaluates to false.
      - For information on the syntax of conditional statements, see Conditional Statement Syntax. -
      - True -
      - - level - int - The installer sets the install level of this feature to the level specified in this column if the expression in - the Condition column evaluates to TRUE. Set this value to 0 to have the component not install if the condition is not met.
      - For any installation, there is a defined install level, which is an integral value from 1 to 32,767. The initial value - is determined by the InstallLevel property, which is set in the Property table.
      - A feature is installed only if the feature level value is less than or equal to the current install level. The user - interface can be authored such that once the installation is initialized, the installer allows the user to modify the - install level of any feature in the Feature table. For example, an author can define install level values that represent - specific installation options, such as Complete, Typical, or Minimum, and then create a dialog box that uses - SetInstallLevel ControlEvents to enable the user to select one of these states. Depending on the state the user selects, - the dialog box sets the install level property to the corresponding value. If the author assigns Typical a level of 100 - and the user selects Typical, only those features with a level of 100 or less are installed. In addition, the Custom - option could lead to another dialog box containing a Selection Tree control. The Selection Tree would then allow the user - to individually change whether each feature is installed.
      - True -
      -
      -
    -

    </condition>

    -
-

</conditions>

-

Examples

- - Define a sample features structure. - - <features> - <feature name="F__Default" title="My Product" display="1" typical="true" directory="TARGETDIR"> - <description>My Product from ACME, Inc. </description> - <feature name="F__MainFiles" display="0" typical="true" /> - </feature> - <feature name="F__Help" title="My Product Help Files" display="1" typical="false" directory="D__ACME_MyProduct_Help" /> - </features> - - -
-
- - Includes pre-packaged installation components (.msm files) as part - of the msi database. This feature allows reuse of installation - components that use MSI technology from other setup vendors or as - created by the . + Name/value pairs which will be set in the PROPERTY table of the + installer database. + + + The properties element contains within it one to any number of property elements.
+ Public property names cannot contain lowercase letters.
+ Private property names must contain some lowercase letters.
+ Property names prefixed with % represent system and user environment variables. These are + never entered into the Property + table. The permanent settings of environment variables can only be modified using the Environment Table. + More information is available here.

Parameters

@@ -5624,62 +2598,3088 @@ Required - feature + name string - Refrence to a feature. Used to associate the merge module with the feature (and the feature's directory) for when to install the components in the merge module. + A name used to refer to the property. + True + + + value + string + The value of the property. This value can contain references to other, predefined properties to build a compound property. True -

Nested Elements:

-

<modules>

-
    - Specifies the merge module(s) to include with the specified feature. -
-

</modules>

-

<configurationitems>

-
    -

    <configurationitem>

    -
      - Specifies the value for a configurable item -

      Parameters

      - - - Attribute - Type - Description - Required - - - module - string - Merge module filename to limit the configuration item to. If this is not set, the configuration item will be applied to all merge modules in the fileset. - True - - - name - string - Name of item for which data is to be set - True - - - value - string - Value of the configurable item - True - - -
    -

    </configurationitem>

    -
-

</configurationitems>

Examples

- Add the NAnt merge module to the install. + Define the required properties. - <mergemodules> - <merge feature="F__NAntMSM"> - <modules> - <include name="${nant.dir}\Install\NAnt.msm" /> + <properties> + <property name="ProductName" value="My Product" /> + <property name="ProductVersion" value="1.0.0" /> + <property name="Manufacturer" value="ACME Inc." /> + <property name="ProductCode" value="{29D8F096-3371-4cba-87E1-A8C6511F7B4C}" /> + <property name="UpgradeCode" value="{69E66919-0DE1-4280-B4C1-94049F76BA1A}" /> + </properties> + + +
+
+ + + + Contains within it one to any number of app, registry, ini, or dirfile elements. + These elements are used to search for an existing filesystem directory, file, or + Windows Registry setting. A property in the installer database is + then set with the value obtained from the search. + +

<app>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/complocator_table.asp + + + + Attribute + Type + Description + Required + + + componentid + string + The component ID of the component whose key path is to be used for the search. + True + + + type + msi:MSILocatorTypeDirFile + Valid input: file or directory + True + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

</app>

+

<registry>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/reglocator_table.asp + + + + Attribute + Type + Description + Required + + + type + msi:MSILocatorTypeDirFileReg64 + Valid input: registry, file, directory, 64bit + True + + + path + string + Depending on the type specified: + + Path is a directory. + Path is a registry key. + + + True + + + root + msi:MSIRegistryKeyRoot + Valid input: + + dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. + machine represents HKEY_LOCAL_MACHINE + classes represents HKEY_CLASSES_ROOT + user represents HKEY_CURRENT_USER + users represents HKEY_USERS + + + True + + +
    +

    Nested Elements:

    +

    <value>

    +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + Depending on the type specified: + + Key path is a file name. + Key path is a registry value. + + + False + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

    </value>

    +
+

</registry>

+

<ini>

+ + More information on these attributes can be found at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/inilocator_table.asp + + + + Attribute + Type + Description + Required + + + filename + string + The .ini file name. (The .ini file must be present in the default Microsoft Windows directory.) + + True + + + section + string + Section name within the .ini file. + + True + + + key + string + Key value within the section. + + True + + + field + msi:nonNegativeInt + The field in the .ini line. If Field is Null or 0, then the entire line is read. + This must be a non-negative number. + + False + + + type + msi:MSILocatorTypeDirFileRaw + Valid input: file ,directory, or raw + True + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + + +

</ini>

+

<dirfile>

+ + More information on these attributes can be found at: + http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/drlocator_table.asp + and + http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/signature_table.asp + + + + Attribute + Type + Description + Required + + + parent + string + An identifier to RegLocator, IniLocator, or CompLocator tables. + If it does not expand to a full path, then all the fixed drives of the user's system are searched by using the Path. +
In order to determine what the key is for a table, prefix the property name assigned + to that locator with SIG_ +
+ False +
+ + path + string + the path on the user's system. This is a either a full path or a relative subpath + below the directory specified in the Parent column. + + False + + + depth + msi:nonNegativeInt + The depth below the path that the installer searches for the file or directory. + + False + + + setproperty + string + A name used to refer to the property within the Msi database. Set at install time. + True + +
+
    +

    Nested Elements:

    +

    <file>

    +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + The name of the file. + True + + + minversion + string + The minimum version of the file, with a language comparison. If this field is + specified, then the file must have a version that is at least equal to MinVersion. + If the file has an equal version to the MinVersion field value but the language + specified in the Languages column differs, the file does not satisfy the signature + filter criteria. + False + + + maxversion + string + The maximum version of the file. If this field is specified, then the file + must have a version that is at most equal to MaxVersion. + False + + + minsize + msi:nonNegativeInt + The minimum size of the file. If this field is specified, then the file + under inspection must have a size that is at least equal to MinSize. This must + be a non-negative number. + False + + + maxsize + msi:nonNegativeInt + The maximum size of the file. If this field is specified, then the file + under inspection must have a size that is at most equal to MaxSize. This must + be a non-negative number. + False + + + mindate + msi:nonNegativeInt + The minimum modification date and time of the file. If this field is + specified, then the file under inspection must have a modification date and time + that is at least equal to MinDate. This must be a non-negative number. + False + + + maxdate + msi:nonNegativeInt + The maximum creation date of the file. If this field is specified, then the + file under inspection must have a creation date that is at most equal to MaxDate. + This must be a non-negative number. + False + + + languages + string + The languages supported by the file. + False + + +

    </file>

    +
+

</dirfile>

+

Examples

+ + Get the path of the web directory and the version of IIS. Create new properties in the Msi file with those values. + + <search> + <registry type="registry" path="Software\Microsoft\InetStp" root="machine" > + <value name="PathWWWRoot" setproperty="IISWWWROOT" /> + </registry> + <registry type="registry" path="SYSTEM\CurrentControlSet\Services\W3SVC\Parameters" root="machine" > + <value name="MajorVersion" setproperty="IISVERSION" /> + </registry> + </search> + + + + Shows two ways to get the default key value for the specified key. Create new properties in the Msi file with those values. + + <search> + <registry type="registry" path="Software\Microsoft\MessengerService" root="machine" > + <value setproperty="MSGSRVNAME" /> + <value name="" setproperty="MSGSRVNAME2" /> + </registry> + </search> + + +
+
+ + + + Contains within it one to any number of launchcondition elements. + Launch conditions are conditions that all must be satisfied for the + installation to begin. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to identify the launch condition. + True + + + condition + string + Expression that must evaluate to True for installation to begin. + True + + +

Nested Elements:

+

<description>

+
    + Localizable text to display when the condition fails and the installation must be terminated. +
+

</description>

+

Examples

+ + Create a check to make sure that IIS 5.x is installed. + + <launchconditions> + <launchcondition name="CheckIIS" condition="(IISVERSION = &quot;#5&quot;)" > + <description> + This setup requires Internet information Server 5.x. Please install Internet Information Server and run this setup again. + </description> + </launchcondition> + </launchconditions> + + +
+
+ + + + Creates custom tables not directly managed by default features of + the installer task. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A unique name used to identify the table. + True + + +

Nested Elements:

+

<columns>

+
    +

    <column>

    +
      + Defines the columns making up the table +

      Parameters

      + + + Attribute + Type + Description + Required + + + name + string + A unique name used to define the column. + True + + + nullable + bool + When set to true, allows the column to accept null values; false does not allow null values. + True + + + category + msi:MSITableColumnCategoryType + Valid input: + + Text + UpperCase + LowerCase + Integer + DoubleInteger + Time/Date + Identifier + Property + Filename + WildCardFilename + Path + Paths + AnyPath + DefaultDir + RegPath + Formatted + Template + Condition + GUID + Version + Language + Binary + Cabinet + Shortcut + + More information here: http://msdn.microsoft.com/library/en-us/msi/setup/column_data_types.asp + + False + + + type + string + Overrides the category specification. An example of valid input would be: S255 + False + + + key + bool + When set to true, the column is used to form the primary key for the table; false specifies that the column is not used to form the primary key. + False + + + minvalue + int + This field applies to columns having numeric value. The field contains the minimum permissible value. This can be the minimum value for an integer or the minimum value for a date or version string. + False + + + maxvalue + int + This field applies to columns having numeric value. The field is the maximum permissible value. This may be the maximum value for an integer or the maximum value for a date or version string. + False + + + keytable + string + This field applies to columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. This can be a list of tables separated by semicolons. + False + + + keycolumn + int + This field applies to table columns that are external keys. The field identified in Column must link to the column number specified by KeyColumn in the table named in KeyTable. The permissible range of the KeyColumn field is 1-32. + False + + + set + string + This is a list of permissible values for this field separated by semicolons. This field is usually used for enums. + False + + + description + string + A description of the data that is stored in the column. + False + + +
    +

    </column>

    +
+

</columns>

+

<rows>

+
    +

    <row>

    +
      + Defines the data for a row in the table +

      <columns>

      +
        +

        <column>

        +
          + Defines data for a specific cell in the row +

          Parameters

          + + + Attribute + Type + Description + Required + + + name + string + Name of the column to populate. + True + + + value + string + Value to populate the cell with. + True + + +
        +

        </column>

        +
      +

      </columns>

      +
    +

    </row>

    +
+

</rows>

+

Examples

+ + + Build the IniFile table. Since the WriteIniValues and RemoveIniValues actions exist in the template, they will use this table. + + + <tables> + <table name="IniFile"> + <columns> + <column name="IniFile" nullable="false" category="Identifier" key="true" description="The key for this table." /> + <column name="FileName" nullable="false" category="Text" description="The localizable name of the .ini file in which to write the information. " /> + <column name="DirProperty" nullable="true" category="Identifier" description="Name of a property having a value that resolves to the full path of the folder containing the .ini file. " /> + <column name="Section" nullable="false" category="Formatted" description="The localizable .ini file section." /> + <column name="Key" nullable="false" category="Formatted" description="The localizable .ini file key within the section" /> + <column name="Value" nullable="false" category="Formatted" description="The localizable value to be written. " /> + <column name="Action" nullable="false" category="Integer" description="The type of modification to be made. " /> + <column name="Component_" nullable="false" category="Identifier" description="External key into the first column of the Component table referencing the component that controls the installation of the .ini value. " /> + </columns> + <rows> + <row> + <columns> + <column name="IniFile" value="MyInternetShortcut" /> + <column name="FileName" value="MyInternetAddr.url" /> + <column name="DirProperty" value="D__MYDIR" /> + <column name="Section" value="InternetShortcut" /> + <column name="Key" value="URL" /> + <column name="Value" value="[TARGETURL]" /> + <column name="Action" value="0" /> + <column name="Component_" value="C__Documentation" /> + </columns> + </row> + </rows> + </table> + </tables> + + +
+
+ + + + Specifies the directory layout for the product. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the directory. + True + + + foldername + string + The directory's name (localizable)under the parent directory. + True + + + root + string + A reference to the directory's parent directory. This can be a property name or one of the predefined directories included with the default template: + + AdminToolsFolder + AppDataFolder + CommonAppDataFolder + CommonFiles64Folder + CommonFilesFolder + DesktopFolder + FavoritesFolder + FontsFolder + LocalAppDataFolder + MyPicturesFolder + PersonalFolder + ProgramFilesFolder + ProgramMenuFolder + ProgramFiles64Folder + SendToFolder + StartMenuFolder + StartupFolder + System16Folder + System64Folder + SystemFolder + TARGETDIR + TempFolder + TemplateFolder + WindowsFolder + WindowsVolume + + + True + + +

Nested Elements:

+

<directory>

+
    + Sub directories. Note, this element can contain nested <directory/> sub elements. +

    Parameters

    + + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the directory. + True + + + foldername + string + The directory's name (localizable)under the parent directory. + True + + +
+

</directory>

+

Examples

+ + Define a sample directory structure. + + <directories> + <directory name="D__ACME" foldername="ACME" root="TARGETDIR" > + <directory name="D__ACME_MyProduct" foldername="My Product" /> + </directory> + </directories> + + +
+
+ + + + Used to modify the environment variables of the target computer at + runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + The localizable name of the environment variable. The key values are written or removed depending upon + which of the characters in the following table are prefixed to the name. There is no effect in the ordering of + the symbols used in a prefix. + + + Prefix + Description + + + = + Create the environment variable if it does not exist, and then set it during installation. If the environment variable exists, set it during the installation. + + + + + Create the environment variable if it does not exist, then set it during installation. This has no effect on the value of the environment variable if it already exists. + + + - + Remove the environment variable when the component is removed. This symbol can be combined with any prefix. + + + ! + Remove the environment variable during an installation. The installer only removes an environment variable during an installation if the name and value of the variable match the entries in the Name and Value fields of the Environment table. If you want to remove an environment variable, regardless of its value, use the '!' syntax, and leave the Value field empty. + + + * + This prefix is used with Microsoft® Windows® NT/Windows® 2000 to indicate that the name refers to a system environment variable. If no asterisk is present, the installer writes the variable to the user's environment. Microsoft Windows 95/98 ignores the asterisk and add the environment variable to autoexec.bat. This symbol can be combined with any prefix. A package that is used for per-machine installations should write environment variables to the machine's environment by including * in the Name column. For more information, see http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp + + + =- + The environment variable is set on install and removed on uninstall. This is the usual behavior. + + + !- + Removes an environment variable during an install or uninstall. + + + More information can be found here: http://msdn.microsoft.com/library/en-us/msi/setup/environment_table.asp + + True + + + append + string + Localizable value that is to be set as a formatted string + True + + + component + string + Refrence to a component. Allows the variabled to be modified when the component is un/installed. + True + + +

Examples

+ + Append the installation path to the user PATH variable. + + <environment> + <variable name="PATH" append="'[TARGETDIR]'" component="C__MainFiles" /> + </environment> + + +
+
+ + + + Groups sets of files into named sets, these can be used to install + and perform operations on a set of files as one entity. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the component. + True + + + id + string + A string GUID unique to this component, version, and language.
Note that the letters of these GUIDs must be + uppercase. Utilities such as GUIDGEN can generate GUIDs containing lowercase letters. The lowercase letters must be + changed to uppercase to make these valid component code GUIDs. +
+ True +
+ + attr + int + This column contains a bit flag that specifies options for remote execution. Add the indicated bit to the total value in the column to include an option. + + + Value + Description + + + 0 + Component cannot be run from source.
+ Set this bit for all components belonging to a feature to prevent the feature from being run-from-network or + run-from-source. Note that if a feature has no components, the feature always shows run-from-source and + run-from-my-computer as valid options. +
+
+ + 1 + Component can only be run from source.
+ Set this bit for all components belonging to a feature to prevent the feature from being run-from-my-computer. + Note that if a feature has no components, the feature always shows run-from-source and run-from-my-computer as + valid options. +
+
+ + 2 + Component can run locally or from source. + + + 4 + If this bit is set, the value in the key element is used as a key into the Registry table.
+ If the Value field of the corresponding record in the Registry table is null, the Name field in that record must + not contain "+", "-", or "*". For more information, see the description of the Name field in Registry table.
+ Setting this bit is recommended for registry entries written to the HKCU hive. This ensures the installer writes + the necessary HKCU registry entries when there are multiple users on the same machine. +
+
+ + 16 + If this bit is set, the installer does not remove the component during an uninstall. The installer registers an extra system client for the component in the Windows Installer registry settings. + + + + 32 + If this bit is set, the value in the KeyPath column is a key into the ODBCDataSource table. + + + 64 + If this bit is set, the installer reevaluates the value of the statement in the Condition column + upon a reinstall. If the value was previously False and has changed to True, the installer installs the component. + If the value was previously True and has changed to False, the installer removes the component even if the component + has other products as clients.
This bit should only be set for transitive components. See Using Transitive + Components. +
+
+ + 128 + If this bit is set, the installer does not install or reinstall the component if a key path file or + a key path registry entry for the component already exists. The application does register itself as a client of + the component.
+ Use this flag only for components that are being registered by the Registry table. +
+
+ + 256 + Set this bit to mark this as a 64-bit component. This attribute facilitates the installation of + packages that include both 32-bit and 64-bit components. If this bit is not set, the component is registered + as a 32-bit component. + + +
+
+ True +
+ + directory + string + Refrence to a directory. Defines the directory location for where the files assigned to the component are to be placed. + True + + + feature + string + Refrence to a feature. Maps a feature to the component. Used to determine if the component is to be installed or not. + True + + + condition + string + A conditional statement that can control whether a component is installed. If the condition is null or evaluates to + true, then the component is enabled. If the condition evaluates to False, then the component is disabled and is not + installed. + False + + + fileattr + int + Integer containing bit flags representing file attributes.
+ The following table shows the definition of the bit field. + + + Value + Description + + + 1 + Read-Only + + + 2 + Hidden + + + 4 + System + + + 512 + The file is vital for the proper operation of the component to which it belongs + + + 1024 + The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. + + + 4096 + This bit must only be added by a patch and if the file is being added by the patch. + + + 8192 + The file's source type is uncompressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression + state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed + and msidbFileAttributesCompressed. + + + 16384 + The file's source type is compressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of + the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and + msidbFileAttributesCompressed. + + +
+ False +
+ + checkinterop + bool + Used to determine if file(s) in the fileset are interop file(s). If true, extra information will be added in the install + package to register each interop file. If false, the file(s) will not be not be checked and the extra registration information + will not be added to the msi. + False + + + installassembliestogac + bool + Used to determine if assemblies should be installed to the Global Assembly Cache. + If true, all assemblies in the fileset will be added to the GAC. If false, the assemblies will be installed + to the specified directory (as a normal file would). Note: If an assembly is specified to be installed into the GAC, it will not + also be installed to the directory specified. + False + + + keepsubdirs + bool + Used to determine if directories in the fileset should be built. + If true, all subdirectories of the fileset basedir will be built. If false the directories structure will be + flattened. The default is false. + False + +
+

Nested Elements:

+

<keyfile>

+
    + This value points to a file or folder belonging to the component that the installer uses to detect the component. Two components cannot share the same key path value. +

    Parameters

    + + + Attribute + Type + Description + Required + + + file + string + Name of the key (file) to use. Also, this could be an id of a registry key value. + True + + +
+

</keyfile>

+

<fileset>

+
    + Specifies the files to include with the component +
+

</fileset>

+

<forceid>

+
    + Used to force specific attributes on a per file basis +

    Parameters

    + + + Attribute + Type + Description + Required + + + file + string + Name of the file, in the fileset, to override. + True + + + id + string + Unique GUID to assign to the file. + True + + + attr + int + Integer containing bit flags representing file attributes.
    + The following table shows the definition of the bit field. + + + Value + Description + + + 1 + Read-Only + + + 2 + Hidden + + + 4 + System + + + 512 + The file is vital for the proper operation of the component to which it belongs + + + 1024 + The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. + + + 4096 + This bit must only be added by a patch and if the file is being added by the patch. + + + 8192 + The file's source type is uncompressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression + state of the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed + and msidbFileAttributesCompressed. + + + 16384 + The file's source type is compressed. If set, ignore the Word Count Summary Property. + If neither msidbFileAttributesNoncompressed or msidbFileAttributesCompressed are set, the compression state of + the file is specified by the Word Count Summary Property. Do not set both msidbFileAttributesNoncompressed and + msidbFileAttributesCompressed. + + +
    + False +
    + + version + string + This field is the version string for a versioned file. This field is blank for non-versioned files. + False + + + language + string + A list of decimal language IDs separated by commas. + False + + + checkinterop + bool + Used to determine if file is an interop file. If true, extra information will be added in the install + package to register the interop file. If false, the file will not be not be checked and the extra registration information + will not be added to the msi. + False + + + installtogac + bool + If true, and if the file is an assembly, it will be installed to the GAC. If false, the file + will be installed to the directory specified by the component. Note: If an assembly is specified to + be installed into the GAC, it will not also be installed to the directory specified. + False + +
    +
+

</forceid>

+

Examples

+ + Define a sample component structure. + + <components> + <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" > + <key file="default.aspx" /> + <fileset basedir="${install.dir}"> + <include name="*.*" /> + </fileset> + </component> + </components> + + + + Install files to TARGETDIR and assemblies to the GAC (Global Assembly Cache). Do not install MyOtherAssembly.dll to the GAC, but rather install it with the other files (to TARGETDIR) + + <components> + <component name="C__MainFiles" id="{26AA7144-E683-441D-9843-3C79AEC1C636}" attr="2" directory="TARGETDIR" feature="F__MainFiles" installassembliestogac="true" > + <key file="MyAssemblyName.xml" /> + <fileset basedir="${install.dir}"> + <include name="*.*" /> + </fileset> + <forceid file="MyOtherAssembly.dll" id="_4EB7CCB23D394958988ED817DA00B9D1" installtogac="false" /> + </component> + </components> + + + + Assign a registry entry to a specific component. + + <components> + <component name="C__RegistryEntry" id="{06C654AA-273D-4E39-885C-3E5225D9F336}" attr="4" directory="TARGETDIR" feature="F__DefaultFeature" > + <key file="R__822EC365A8754FACBF6C713BFE4E57F0" /> + </component> + </components> + . + . + . + <registry> + <key path="SOFTWARE\MyCompany\MyProduct\" root="machine" component="C__RegistryEntry"> + <value id="R__822EC365A8754FACBF6C713BFE4E57F0" name="MyKeyName" value="MyKeyValue" /> + </key> + </registry> + + +
+
+ + + + Creates custom dialogs that can gather information not handled by + the default installer template. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the dialog. + True + + + hcenter + int + Horizontal position of the dialog box. The range is 0 to 100, with 0 at the left edge of the screen and 100 at the right edge. + True + + + vcenter + int + Vertical position of the dialog box. The range is 0 to 100, with 0 at the top edge of the screen and 100 at the bottom edge. + True + + + width + int + Width of the rectangular boundary of the dialog box. This number must be non-negative. + True + + + height + int + Height of the rectangular boundary of the dialog box. This number must be non-negative. + True + + + attr + int + A 32-bit word that specifies the attribute flags to be applied to this dialog box. This number must be non-negative. + + + Value + Description + + + 1 + Visible + + + 2 + Modal + + + 4 + Minimize + + + 8 + SysModal + + + 16 + KeepModeless + + + 32 + TrackDiskSpace + + + 64 + UseCustomPalette + + + 128 + RTLRO + + + 256 + RightAligned + + + 512 + LeftScroll + + + 896 + BiDi + + + 65536 + Error + + + More information here: http://msdn.microsoft.com/library/en-us/msi/setup/dialog_style_bits.asp + + True + + + title + string + A localizable text string specifying the title to be displayed in the title bar of the dialog box. + True + + + firstcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field identifies a + unique control in the Control table. This defines the control that takes the focus when the dialog box is created. This + column is ignored in an Error dialog box.
+ Because static text cannot take the focus, a Text control that describes an Edit, PathEdit, ListView, ComboBox or + VolumeSelectCombo control must be made the first control in the dialog box to ensure compatibility with screen readers. +
+ True +
+ + defaultcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field results in + a primary key into the Control table that defines the default control. Hitting the Return key is equivalent to clicking + on the default control. If this column is left blank, then there is no default control. This column is ignored in the + Error dialog box. + + True + + + cancelcontrol + string + An external key to the second column of the Control table. Combining this field with the Dialog field results in + a primary key of the Control table that defines the cancel control. Hitting the ESC key or clicking the Close button in + the dialog box is equivalent to clicking on the cancel control. This column is ignored in an Error dialog box.
+ The cancel control is hidden during rollback or the removal of backed up files. The protected UI handler hides the control + upon receiving a INSTALLMESSAGE_COMMONDATA message. +
+ True +
+
+

Examples

+ + Add a web folder dialog: + + <dialogs> + <dialog name="WebFolderDlg" hcenter="50" vcenter="50" width="370" height="270" attr="39" title="[ProductName] [Setup]" firstcontrol="Next" defaultcontrol="Next" cancelcontrol="Cancel" /> + </dialogs> + + +
+
+ + + + Creates user interface controls displayed on custom dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the control. This name must be unique within a dialog box but can be repeated on different dialog boxes. + True + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + type + string + The type of the control. + + + Control name + Description + + + Billboard + Displays billboards based on progress messages. + + + Bitmap + Displays a static picture of a bitmap. + + + CheckBox + A two-state check box. + + + ComboBox + A drop-down list with an edit field. + + + DirectoryCombo + Select all except the last segment of the path. + + + DirectoryList + Displays folders below the main part of path. + + + Edit + A regular edit field for any string or integer. + + + GroupBox + Displays a rectangle that groups other controls together. + + + Icon + Displays a static picture of an icon. + + + Line + Displays a horizontal line. + + + ListBox + A drop-down list without an edit field. + + + ListView + Displays a column of values with icons for selection. + + + MaskedEdit + An edit field with a mask in the text field. + + + PathEdit + Displays folder name or entire path in an edit field. + + + ProgressBar + Bar graph that changes length as it receives progress messages. + + + PushButton + Displays a basic push button. + + + RadioButtonGroup + A group of radio buttons. + + + ScrollableText + Displays a long string of text. + + + SelectionTree + Displays information from the Feature table and enables the user to change their selection state. + + + Text + Displays static text. + + + VolumeCostList + Displays costing information on different volumes. + + + VolumeSelectCombo + Selects volume from an alphabetical list. + + + More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/controls.asp + True + + + x + int + Horizontal coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. + True + + + y + int + Vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. + True + + + width + int + Width of the rectangular boundary of the control. This must be a non-negative number. + True + + + height + int + Height of the rectangular boundary of the control. This must be a non-negative number. + True + + + attr + int + A 32-bit word that specifies the bit flags to be applied to this control. This must be a non-negative number, and the allowed values depend upon the type of control.For a list of all control attributes, and the value to enter in this field, see Control Attributes. + True + + + property + string + The name of a defined property to be linked to this control. Radio button, list box, and combo box values are tied into a group by being linked to the same property. This column is required for active controls and is ignored by static controls. + False + + + text + string + A localizable string used to set the initial text contained in a control. The string can also contain embedded properties. + False + + + nextcontrol + string + The name of another control on the same dialog box. If the focus in the dialog box is on the control in the Control column, hitting the tab key moves the focus to the control listed here. Therefore this is used to specify the tab order of the controls on the dialog box. The links between the controls must form a closed cycle. Some controls, such as static text controls, can be left out of the cycle. In that case, this field may be left blank. + False + + + help + string + Optional, localizable text strings that are used with the Help button. The string is divided into two parts by a separator character (|). The first part of the string is used as ToolTip text. This text is used by screen readers for controls that contain a picture. The second part of the string is reserved for future use. The separator character is required even if only one of the two kinds of text is present. + False + + + remove + bool + If true, the control is removed. If false, the control is added. + False + + +

Examples

+ + Remove the Browse button from the customize dialog and add controls for a web dialog + + <controls> + <!-- Remove the Browse button from customize dialog --> + <control dialog="CustomizeDlg" name="Browse" type="PushButton" + x="304" y="200" width="56" height="17" attr="3" remove="true" /> + <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" + x="25" y="85" width="175" height="95" attr="7" remove="true" /> + <!-- Re add the tree control with the proper next control --> + <control dialog="CustomizeDlg" name="Tree" type="SelectionTree" + x="25" y="85" width="175" height="95" attr="7" + property="_BrowseProperty" text="Tree of selections" nextcontrol="Reset" /> + <!-- Adds the controls associated with the webfolder dialog --> + <control dialog="WebFolderDlg" name="BannerBitmap" type="Bitmap" + x="0" y="0" width="374" height="44" attr="1" + text="[BannerBitmap]" nextcontrol="VDirLabel" /> + <control dialog="WebFolderDlg" name="Title" type="Text" + x="15" y="6" width="200" height="15" attr="196611" + text="[DlgTitleFont]Virtual Directory Information" /> + <control dialog="WebFolderDlg" name="Description" type="Text" + x="25" y="23" width="280" height="15" attr="196611" + text="Please enter your virtual directory and port information." /> + <control dialog="WebFolderDlg" name="BannerLine" type="Line" + x="0" y="44" width="374" height="0" attr="1" /> + <control dialog="WebFolderDlg" name="VDirLabel" type="Text" + x="18" y="73" width="348" height="15" attr="3" + text="&Virtual directory:" + nextcontrol="Edit_VDir" /> + <control dialog="WebFolderDlg" name="Edit_VDir" type="Edit" + x="18" y="85" width="252" height="18" attr="7" + property="TARGETVDIR" + text="[TARGETVDIR]" + nextcontrol="PortLabel" /> + <control dialog="WebFolderDlg" name="PortLabel" type="Text" + x="18" y="110" width="348" height="15" attr="3" + text="&Port:" + nextcontrol="Edit_Port" /> + <control dialog="WebFolderDlg" name="Edit_Port" type="Edit" + x="18" y="122" width="48" height="18" attr="7" + property="TARGETPORT" + text="[TARGETPORT]" + nextcontrol="Back" /> + <control dialog="WebFolderDlg" name="BottomLine" type="Line" + x="0" y="234" width="374" height="0" attr="1" /> + <control dialog="WebFolderDlg" name="Back" type="PushButton" + x="180" y="243" width="56" height="17" attr="3" + text="[ButtonText_Back]" nextcontrol="Next" /> + <control dialog="WebFolderDlg" name="Next" type="PushButton" + x="236" y="243" width="56" height="17" attr="3" + text="[ButtonText_Next]" nextcontrol="Cancel" /> + <control dialog="WebFolderDlg" name="Cancel" type="PushButton" + x="304" y="243" width="56" height="17" attr="3" + text="[ButtonText_Cancel]" nextcontrol="BannerBitmap" /> + </controls> + + +
+
+ + + + Used to validate and perform operations as the result of information + entered by the user into controls on custom dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + control + string + Refrence to a control. Maps to a control for the specified dialog. + True + + + action + string + The action that is to be taken on the control. The possible actions are shown in the following table. + + + Value + Description + + + Default + Set control as the default. + + + Disable + Disable the control. + + + Enable + Enable the control. + + + Hide + Hide the control. + + + Show + Display the control. + + + + True + + + condition + string + A conditional statement that specifies under which conditions the action should be triggered. If this statement does not evaluate to TRUE, the action does not take place. If it is set to 1, the action is always applied. + True + + + remove + bool + If true, the control condition is removed. If false, the control condition is added. + False + + +

Examples

+ + Remove the control condition for the Browse button from the customize dialog and add control conditions for a web dialog + + <controlconditions> + <!-- Remove control condition for Browse button on customizeDlg --> + <controlcondition dialog="CustomizeDlg" control="Browse" action="Hide" + condition="Installed" remove="true" /> + <!-- Add control conditions for the web folder dialog --> + <controlcondition dialog="WebFolderDlg" control="Back" action="Disable" + condition="ShowUserRegistrationDlg=""" /> + <controlcondition dialog="WebFolderDlg" control="Back" action="Enable" + condition="ShowUserRegistrationDlg<>""" /> + </controlconditions> + + +
+
+ + + + Used to route the flow of the installation process as the result of + events raised by the user interacting with controls on dialogs. + +

Parameters

+ + + Attribute + Type + Description + Required + + + dialog + string + Refrence to a dialog. Used to associate the control with the dialog. + True + + + control + string + Refrence to a control. Maps to a control for the specified dialog. + True + + + name + string + An identifier that specifies the type of event that should take place when the user interacts with the control + specified by Dialog_ and Control_. For a list of possible values see ControlEvent Overview.
+ To set a property with a control, put [Property_Name] in this field and the new value in the argument field. Put { } + into the argument field to enter the null value. +
+ True +
+ + argument + string + A value used as a modifier when triggering a particular event. + True + + + condition + string + A conditional statement that determines whether the installer activates the event in the Event column. The installer + triggers the event if the conditional statement in the Condition field evaluates to True. Therefore put a 1 in this column + to ensure that the installer triggers the event. The installer does not trigger the event if the Condition field contains + a statement that evaluates to False. The installer does not trigger an event with a blank in the Condition field unless no + other events of the control evaluate to True. If none of the Condition fields for the control named in the Control_ field + evaluate to True, the installer triggers the one event having a blank Condition field, and if more than one Condition field + is blank it triggers the one event of these with the largest value in the Ordering field. + False + + + order + int + An integer used to order several events tied to the same control. This must be a non-negative number. + False + + + remove + bool + If true, the control condition is removed. If false, the control condition is added. + False + +
+

Examples

+ + Remove the control events for the Browse button from the customize dialog and add events conditions for a web dialog + + + <controlevents> + <!-- Remove the old control events --> + <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" + argument="SetupTypeDlg" condition="ProductID" remove="true" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg <> 1" remove="true" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg = 1" remove="true" /> + <!-- Remove control events for Browse button on CustomizeDlg --> + <controlevent dialog="CustomizeDlg" control="Browse" name="SelectionBrowse" + argument="BrowseDlg" condition="1" remove="true" /> + <!-- Add new control events for the web dialog --> + <controlevent dialog="UserRegistrationDlg" control="Next" name="NewDialog" + argument="WebFolderDlg" condition="ProductID" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="WebFolderDlg" condition="ShowWebFolderDlg <> 1" /> + <controlevent dialog="SetupTypeDlg" control="Back" name="NewDialog" + argument="WebFolderDlg" condition="ShowWebFolderDlg = 1" /> + <controlevent dialog="WebFolderDlg" control="Cancel" name="SpawnDialog" + argument="CancelDlg" order="0" /> + <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" + argument="LicenseAgreementDlg" condition="ShowUserRegistrationDlg<>1" + order="0" /> + <controlevent dialog="WebFolderDlg" control="Back" name="NewDialog" + argument="UserRegistrationDlg" condition="ShowUserRegistrationDlg=1" + order="0" /> + <!-- Virtual Directory Control Events --> + <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" + argument="WEBCA_CreateURLs" condition="1" order="0" /> + <controlevent dialog="WebFolderDlg" control="Next" name="DoAction" + argument="WEBCA_EvaluateURLsMB" condition="1" order="1" /> + <controlevent dialog="WebFolderDlg" control="Next" name="SetTargetPath" + argument="TARGETDIR" condition="1" order="2" /> + <controlevent dialog="WebFolderDlg" control="Next" name="NewDialog" + argument="SetupTypeDlg" condition="1" order="3" /> + </controlevents> + + +
+
+ + + + Makes modifications to the Windows Registry of the target computer + at runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + component + string + Refrence to a component. The component that controls the installation of the registry value. + True + + + root + msi:MSIRegistryKeyRoot + Valid input: + + dependent - If this is a per-user installation, the registry value is written under HKEY_CURRENT_USER. If this is a per-machine installation, the registry value is written under HKEY_LOCAL_MACHINE. Note that a per-machine installation is specified by setting the ALLUSERS property to 1. + machine represents HKEY_LOCAL_MACHINE + classes represents HKEY_CLASSES_ROOT + user represents HKEY_CURRENT_USER + users represents HKEY_USERS + + + True + + + path + string + Registry key. + True + + +

Nested Elements:

+

<value>

+
    + Specifies the registry value to add to the target machine. + + + Attribute + Type + Description + Required + + + name + string + The registry value name (localizable). If this is Null, then the data entered into the Value column are + written to the default registry key.
    + If the Value column is Null, then the strings shown in the following table in the Name column have special + significance. + + + String + Description + + + + + The key is to be created, if absent, when the component is installed. + + + - + The key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. + + + * + The key is to be created, if absent, when the component is installed. Additionally, the key is to be deleted, if present, with all of its values and subkeys, when the component is uninstalled. + + +
    + False +
    + + value + string + The localizable registry value. The field is Formatted. If the value is attached to one of the following prefixes (i.e. #%value) then the value is interpreted as described in the table. Note that each prefix begins with a number sign (#). If the value begins with two or more consecutive number signs (#), the first # is ignored and value is interpreted and stored as a string. + + + Prefix + Description + + + #x + The value is interpreted and stored as a hexadecimal value (REG_BINARY). + + + #% + The value is interpreted and stored as an expandable string (REG_EXPAND_SZ). + + + # + The value is interpreted and stored as an integer (REG_DWORD). + + + + If the value contains the sequence tilde [~], then the value is interpreted as a Null-delimited list of strings (REG_MULTI_SZ). For example, to specify a list containing the three strings a, b and c, use "a[~]b[~]c." + The sequence [~] within the value separates the individual strings and is interpreted and stored as a Null character. + If a [~] precedes the string list, the strings are to be appended to any existing registry value strings. If an appending string already occurs in the registry value, the original occurrence of the string is removed. + If a [~] follows the end of the string list, the strings are to be prepended to any existing registry value strings. If a prepending string already occurs in the registry value, the original occurrence of the string is removed. + If a [~] is at both the beginning and the end or at neither the beginning nor the end of the string list, the strings are to replace any existing registry value strings. + Otherwise, the value is interpreted and stored as a string (REG_SZ). + + + False + + + dword + string + A dword value to input, if the value attribute is null. This removes the requirement of adding "#" before the value. + False + + + id + string + Primary key used to identify a registry record. + False + +
    +
+

</value>

+

Examples

+ + Add the a couple registry entries on the target machine. + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value name="ProductVersion" value="1.0.0" /> + <value name="ProductDir" value="[TARGETDIR]" /> + <value name="VirtualDir" value="[TARGETVDIR]" /> + </key> + </registry> + + + + Add a default key value to the specified registry key path + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value value="1.0.0" /> + </key> + </registry> + + + + Another way to add a default key value to the specified registry key path + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value name="" value="1.0.0" /> + </key> + </registry> + + + + Specify hexadecimal value (REG_BINARY) for the default key + + <registry> + <key component="C__MainFiles" root="machine" path="SOFTWARE\ACME\My Product\" > + <value> + 1a,81,0a,03,01,00,06,00,00,00,d3,15,fd,00,01,00,00,00,00,00,01, + 00,00,00,00,00,00,00,00,00,00,00,b0,90,ce,09,01,00,00,00,00,00,ff,ff,ff,00, + 00,00,00,00,00,00,00,00,6d,7a,0a,03,01,00,00,00,00,00,00,00,38,40,00,00,00, + 00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,01,00,00,00,00,0f,00,00,00, + f0,ff,ff,ff,54,69,6d,65,73,20,4e,65,77,20,52,6f,6d,61,6e,f4,6f,d4,08,02,00 + </value> + </key> + </registry> + + +
+
+ + + + Stores icons to be used with shortcuts, file extensions, CLSIDs or + similar uses. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the icon file. + True + + + value + string + The binary icon data in PE (.dll or .exe) or icon (.ico) format. + True + + +

Examples

+ + Add a compiled help icon to the msi database; To be used with a shortcut. + + <icons> + <icon name="CHMICON" value="${resource.dir}\chm.ico" /> + </icons> + + +
+
+ + + + Creates shortcuts on the target computer. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Unique name identifying the shortcut. + True + + + directory + string + Reference to a directory. The location of where the shortcut should be created. + True + + + filename + string + The localizable name of the shortcut to be created. + True + + + component + string + Reference to a component. The installer uses the installation state of this specified component to determine whether the shortcut is created or deleted. This component must have a valid key path for the shortcut to be installed. If the Target column contains the name of a feature, the file launched by the shortcut is the key file of the component listed in this column. + True + + + target + string + The shortcut target. The installer evaluates this field as a Formatted string. The field should contains a property identifier enclosed by square brackets ([ ]), that is expanded into the file or a folder pointed to by the shortcut. + True + + + arguments + string + The command-line arguments for the shortcut.
Note that the resolution of properties in the Arguments field is limited. A property formatted as [Property] in this field can only be resolved if the property already has the intended value when the component owning the shortcut is installed. For example, for the argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and the component that owns the shortcut. +
+ False +
+ + hotkey + string + The hotkey for the shortcut. The low-order byte contains the virtual-key code for the key, and the high-order byte contains modifier flags. This must be a non-negative number. Authors of installation packages are generally recommend not to set this option, because this can add duplicate hotkeys to a users desktop. In addition, the practice of assigning hotkeys to shortcuts can be problematic for users using hotkeys for accessibility. + False + + + icon + string + Reference to an icon. + False + + + iconindex + int + The icon index for the shortcut. This must be a non-negative number. + False + + + showcmd + int + The Show command for the application window.
The following values may be used. The values are as defined for the Windows API function ShowWindow. + + + Value + Description + + + 1 + SW_SHOWNORMAL + + + 3 + SW_SHOWMAXIMIZED + + + 7 + SW_SHOWMINNOACTIVE + + +
+ False +
+ + wkdir + string + The name of the property that has the path of the working directory for the shortcut. + False + +
+

Nested Elements:

+

<description>

+
    + The localizable description of the shortcut. +
+

</description>

+

Examples

+ + Add a compiled help icon to the msi database; To be used with a shortcut. + + <shortcuts> + <shortcut name="HelpFiles" directory="D__PROGRAMMENU_ACME_MYPRODUCT" filename="Help File" component="C__MainFiles" target="[$C__MainFiles]\Help.chm" icon="CHMICON" iconindex="0" showcmd="3" > + <description>My Product help documentation</description> + </shortcut> + </shortcuts> + + +
+
+ + + + Stores the binary data for items such as bitmaps, animations, and + icons. The binary table is also used to store data for custom + actions. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A unique key that identifies the particular binary data. If the binary data is for a control, the key appears in the Text column of the associated control in the Control table. This key must be unique among all controls requiring binary data. + True + + + value + string + The binary file to add. + True + + +

Examples

+ + Add the custom action dll to create/modify virtual directories + + <binaries> + <binary name="MSVBDPCADLL" value="${resource.dir}\MSVBDPCA.DLL" /> + </binaries> + + +
+
+ + + + Used to configure executables that may be run during steps in the + installation process to do things outside the bounds of MSI + technology's feature set. This is the main spot you can extend MSI + technology to perform custom processes via compiled code. + +

Parameters

+ + + Attribute + Type + Description + Required + + + action + string + Name of the action. The action normally appears in a sequence table unless it is called by another custom action. If the name matches any built-in action, then the custom action is never called. + True + + + type + string + A field of flag bits specifying the basic type of custom action and options. See Summary List of All Custom Action Types for a list of the basic types. See Custom Action Return Processing Options, Custom Action Execution Scheduling Options, Custom Action Hidden Target Option, and Custom Action In-Script Execution Options. + True + + + source + string + A property name or external key into another table. For a discussion of the possible custom action sources, see Custom Action Sources and the Summary List of All Custom Action Types. For example, the Source column may contain an external key into the first column of one of the following tables containing the source of the custom action code.
+ Directory table for calling existing executables.
+ File table for calling executables and DLLs that have just been installed.
+ Binary table for calling executables, DLLs, and data stored in the database.
+ Property table for calling executables whose paths are held by a property. +
+ True +
+ + target + string + An execution parameter that depends on the basic type of custom action. See the Summary List of All Custom Action Types for a description of what should be entered in this field for each type of custom action. For example, this field may contain the following depending on the custom action. + + + Target + Custom Action + + + Entry point (required) + Calling a DLL. + + + Executable name with arguments (required) + Calling an existing executable. + + + Command line arguments (optional) + Calling an executable just installed. + + + Target file name (required) + Creating a file from custom data. + + + Null + Executing script code. + + + + True + +
+

Examples

+ + Add some custom actions related to the virtual directory dialog and custom action. + + <customactions> + <!-- Custom actions creating entry points into the custom action dll specified in the binary table --> + <customaction action="WEBCA_GatherWebFolderProperties" type="1" source="MSVBDPCADLL" target="GatherWebFolderProperties" /> + <customaction action="WEBCA_ApplyWebFolderProperties" type="1537" source="MSVBDPCADLL" target="ApplyWebFolderProperties" /> + <customaction action="WEBCA_RollbackApplyWebFolderProperties" type="1281" source="MSVBDPCADLL" target="RollbackApplyWebFolderProperties" /> + <customaction action="WEBCA_CreateURLs" type="1" source="MSVBDPCADLL" target="CreateURLs" /> + <customaction action="WEBCA_EvaluateURLs" type="1" source="MSVBDPCADLL" target="EvaluateURLs" /> + <customaction action="WEBCA_EvaluateURLsNoFail" type="1" source="MSVBDPCADLL" target="EvaluateURLsNoFail" /> + <customaction action="WEBCA_EvaluateURLsMB" type="1" source="MSVBDPCADLL" target="EvaluateURLsMB" /> + <customaction action="WEBCA_CreateAppRoots" type="1" source="MSVBDPCADLL" target="CreateAppRoots" /> + + <!-- Custom actions to set default control values in the webfolder dialog --> + <customaction action="WEBCA_TARGETVDIR" type="307" source="TARGETVDIR" target="Default VDir" /> + <customaction action="WEBCA_TARGETPORT" type="307" source="TARGETPORT" target="80" /> + </customactions> + + +
+
+ + + + Used to modify the sequence of tasks/events that execute during the + overall installation process. + +

Parameters

+ + + Attribute + Type + Description + Required + + + type + msi:MSISequenceTable + Valid inputs: + + installexecute represents InstallExecuteSequence Table. + installui represents InstallUISequence Table + adminexecute represents AdminExecuteSequence Table + adminui represents AdminUISequence Table + advtexecute represents AdvtUISequence Table + + + True + + + action + string + Name of the action to execute. This is either a built-in action or a custom action. + True + + + value + int + Number that determines the sequence position in which this action is to be executed.
+ A positive value represents the sequence position. A Null value indicates that the action is not executed. The following + negative values indicate that this action is to be executed if the installer returns the associated termination flag. No + more than one action may have a negative value entered in the Sequence field. + + + Value + Description + + + -1 + Successful completion. + + + -2 + User terminates install. + + + -3 + Fatal exit terminates. + + + -4 + Install is suspended. + + +
+ True +
+ + condition + string + This field contains a conditional expression. If the expression evaluates to False, then the action is skipped. If the expression syntax is invalid, then the sequence terminates, returning iesBadActionData. + False + +
+

Examples

+ + Add the sequences to support virtual directories + + <sequences> + <sequence type="installexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="installexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="installexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_GatherWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_ApplyWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_RollbackApplyWebFolderProperties" value="3701" condition="NOT Installed" /> + <sequence type="installexecute" action="WEBCA_CreateAppRoots" value="3701" condition="NOT Installed" /> + <sequence type="installui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="installui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="installui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="installui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> + <sequence type="adminexecute" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="adminexecute" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="adminexecute" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="adminexecute" action="WEBCA_EvaluateURLs" value="753" condition="NOT Installed" /> + <sequence type="adminui" action="WEBCA_TARGETVDIR" value="750" condition="TARGETVDIR=&quot;&quot;" /> + <sequence type="adminui" action="WEBCA_TARGETPORT" value="750" condition="TARGETPORT=&quot;&quot;" /> + <sequence type="adminui" action="WEBCA_CreateURLs" value="752" condition="NOT Installed" /> + <sequence type="adminui" action="WEBCA_EvaluateURLsNoFail" value="753" condition="NOT Installed" /> + </sequences> + + +
+
+ + + + Creates text to be displayed in a progress dialog box and written + to the log for actions that take a long time to execute. The text + displayed consists of the action description and optionally formatted + data from the action. The entries in the ActionText table typically + refer to actions in sequence tables. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Unique name identifying the action. + True + + + template + string + A localized format template is used to format action data records for display during action execution. If no template is supplied, then the action data will not be displayed. + False + + +

Nested Elements:

+

<description>

+
    + Localized description displayed in the progress dialog box or written to the log when the action is executing. +
+

</description>

+

Examples

+ + Add the related action text for the web folder actions. + + <actiontext> + <action name="WEBCA_GatherWebFolderProperties" > + <description>Gathering web folder properties</description> + </action> + <action name="WEBCA_ApplyWebFolderProperties" > + <description>Applying web folder properties</description> + </action> + <action name="WEBCA_RollbackApplyWebFolderProperties" > + <description>Removing web folder properties</description> + </action> + <action name="WEBCA_CreateURLs" > + <description>Creating URLs</description> + </action> + <action name="WEBCA_EvaluateURLs" > + <description>Evaluating URLs</description> + </action> + <action name="WEBCA_EvaluateURLsNoFail" > + <description>Evaluating URLs and do not fail if URL is invalid</description> + </action> + <action name="WEBCA_EvaluateURLsMB" > + <description>Evaluating URLs</description> + </action> + <action name="WEBCA_CreateAppRoots" > + <description>Creating application roots</description> + </action> + <action name="WEBCA_TARGETVDIR" > + <description>Set TARGETVDIR property to the specified virtual dir</description> + </action> + <action name="WEBCA_TARGETPORT" > + <description>Set TARGETPORT property to the specified virtual dir port</description> + </action> + </actiontext> + + +
+
+ + + + Adds Verbs and a handler for the specified file type. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + directory + string + Refrence to a directory. The directory to add the specific verb/handler to IIS for the specified file type. + True + + + extension + string + File name extension to specifically handle + False + + + exepath + string + Path to the Internet Server API (ISAPI) or Common Gateway Interface (CGI) program to run to process a request. + False + + + verbs + string + Internet Information Services verbs that are allowed for the executable file. Only verbs entered in this field will be allowed. + False + + +

Examples

+ + Add the aspx app mapping + + <appmappings> + <appmapping directory="D__ACME_MyProduct" extension=".aspx" exepath="[DOTNETFOLDER]aspnet_isapi.dll" verbs="GET,HEAD,POST,DEBUG" /> + </appmappings> + + +
+
+ + + + Determines the local path equivalent for a url and stores this + information in a property. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + The name of the URLProperty to convert + True + + + property + string + The name of the property to store the directory information. + True + + +

Examples

+ + Convert the TARGETURL property to a directory and store that information in TARGETDIR + + <urlproperties> + <urlproperty name="TARGETURL" property="TARGETDIR" /> + </urlproperties> + + +
+
+ + + + Creates a URLProperty representing the virtual directory and port. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Property containing the virtual directory + True + + + portproperty + string + Property containing the network port number to use. + True + + + urlproperty + string + URLProperty to store the url in + True + + +

Examples

+ + Convert the virtual directory and port to a url and store the value in a property. + + <vdirproperties> + <vdirproperty name="TARGETVDIR" portproperty="TARGETPORT" urlproperty="TARGETURL" /> + </vdirproperties> + + +
+
+ + + + Create a Web application definition and marks it as running in-process + or out-of-process. If an application already exists at the specified + path, you can use this method to reconfigure the application from + in-process to out-of-process, or the reverse. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + component + string + Reference to a component. Determines when the approot will be created. + True + + + urlproperty + string + URLProperty with stored url + True + + + inprocflag + int + Specifies whether the application being created is to run in-process (0), out-of-process (1), or in a pooled process (2). If the application already exists and is running, changing the value of this flag will cause the application definition to be deleted and a new application created to run in the specified process space. + True + + +

Examples

+ + Convert the virtual directory and port to a url and store the value in a property. + + <approots> + <approot component="C__MainFiles" urlproperty="TARGETURL" inprocflag="2" /> + </approots> + + +
+
+ + + + Specifies directory security in IIS. Can also configure the default + documents supported by each directory. + + This not an officially Microsoft supported table. +

Parameters

+ + + Attribute + Type + Description + Required + + + directory + string + Reference to a directory. This is the directory that gets modified with the specific attributes. + True + + + attr + int + Attributes to set for the directory. + + + Value + Flag Name + Description + + + 1 + AccessRead + The file or the contents of the folder may be read through Microsoft Internet Explorer. + + + 2 + AccessWrite + Users are allowed to upload files and their associated properties to the enabled directory on your server or to change content in a Write-enabled file. Write can be implemented only with a browser that supports the PUT feature of the HTTP 1.1 protocol standard. + + + 4 + AccessExecute + The file or the contents of the folder may be executed, regardless of file type. + + + 8 + AccessSSL + File access requires SSL file permission processing, with or without a client certificate. + + + 16 + AccessSource + Users are allowed to access source code if either Read or Write permissions are set. Source code includes scripts in Microsoft ® Active Server Pages (ASP) applications. + + + 32 + AccessSSLNegotiateCert + SSL file access processing requests a certificate from the client. A value of false indicates that access continues if the client does not have a certificate. Some versions of Internet Explorer will close the connection if the server requests a certificate and a certificate is not available (even if AccessSSLRequireCert is also set to true). + + + 64 + AccessSSLRequireCert + SSL file access processing requests a certificate from the client. If the client provides no certificate, the connection is closed. AccessSSLNegotiateCert must also be set to true when using AccessSSLRequireCert. + + + 128 + AccessSSLMapCert + SSL file permission processing maps a client certificate to a Microsoft Windows ® operating system user-account. The AccessSSLNegotiateCert property must also be set to true for the mapping to occur. + + + 256 + AccessSSL128 + File access requires SSL file permission processing with a minimum key size of 128 bits, with or without a client certificate. + + + 512 + AccessScript + The file or the contents of the folder may be executed if they are script files or static content. A value of false only allows static files, such as HTML files, to be served. + + + 1024 + AccessNoRemoteWrite + Remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. + + + 4096 + AccessNoRemoteRead + Remote requests to view files are denied; only requests from the same computer as the IIS server succeed if the AccessRead property is set to true. You cannot set AccessNoRemoteRead to false to enable remote requests, and set AccessRead to false to disable local requests. + + + 8192 + AccessNoRemoteExecute + Remote requests to execute applications are denied; only requests from the same computer as the IIS server succeed if the AccessExecute property is set to true. You cannot set AccessNoRemoteExecute to false to enable remote requests, and set AccessExecute to false to disable local requests. + + + 16384 + AccessNoRemoteScript + Requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. + + + 32768 + AccessNoPhysicalDir + Access to the physical path is not allowed. + + + + True + + + defaultdoc + string + Adds a filename to the Default Documents to process. Add multiple separated with a comma (Eg. "Default.aspx,Default.htm") + False + + +

Examples

+ + Specify permissions for the directory structure. + + <iisproperties> + <iisproperty directory="TARGETDIR" attr="626" defaultdoc="Default.aspx" /> + <iisproperty directory="D__BIN" attr="112" /> + <iisproperty directory="D__SomeSubDir" attr="114" /> + </iisproperties> + + +
+
+ + + Summary description for MsiTaskInfo. + + + + + Loads the banner image. + + The MSI database. + + + + Loads the background image. + + The MSI database. + + + + Loads the license file. + + The MSI database. + + + + Loads records for the Media table. + + The MSI database. + The sequence number of the last file in the .cab. + + + + Loads records for the Features table. + + The MSI database. + + + + Adds a feature record to the Features table. + + The MSI database Feature table. + The MSI database Condition table. + The name of this feature's parent. + The MSI database. + This Feature's Schema element. + The tree depth of this feature. + The tree order of this feature. + + + + Loads records for the LaunchCondition table + + The MSI database. + + + + Merges Merge Modules into the MSI Database. + + The MSI Database. + The path to temporary files. + + + + Creates a Windows Installer (also known as Microsoft Installer, or MSI) + setup database for installing software on the Windows Platform. + + + + Requires cabarc.exe in the path. This tool is part of the + Microsoft Cabinet SDK. + + + Requires mergemod.dll version 2.0 or greater. This dll is part of the + Microsoft Platform SDK. + + + See the Roadmap to Windows Installer Documentation + at Microsoft's MSDN website for more information. + + + + + + Initializes task and verifies parameters. + + + + + Executes the task. + + + + + An .rtf (rich text format) file containing the license agreement + for your software. The contents of this file will be displayed to + the user when setup runs and must be accepted to continue. + + + + + A .bmp (bitmap) file 495x60 pixels in size that will be displayed + as the banner (top) image of the installation user interface. + + + + + A .bmp (bitmap) file 495x315 pixels in size that will be displayed + as the background image of the installation user interface. + + + + + + Groups sets of components into named sets, these can be used to + layout the tree control that allows users to select and deselect + features of your software product when a custom installation is + selected at runtime. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + A name used to refer to the feature. + True + + + display + int + The number in this field specifies the order in which the feature is to be displayed in the user interface. + The value also determines if the feature is initially displayed expanded or collapsed.
+ If the value is null or zero, the record is not displayed. If the value is odd, the feature node is expanded initially. + If the value is even, the feature node is collapsed initially. +
+ True +
+ + title + string + Short string of text identifying the feature. This string is listed as an item by the SelectionTree control of the Selection Dialog. + False + + + typical + bool + Determines if the feature should be included in a "typical" install. This is useful for when the user selects to just install the typical features. + False + + + directory + string + Refrence to a directory. Specify a corresponding directory to go with the feature. + False + + + attr + int + Any combination of the following: + + + Value + Description + + + 0 + Components of this feature that are not marked for installation from source are installed locally. + + + 1 + Components of this feature not marked for local installation are installed to run from the source CD-ROM or server. + + + 2 + Set this attribute and the state of the feature is the same as the state of the feature's parent. + + + 4 + Set this attribute and the feature state is Advertise. + + + 8 + Note that this bit works only with features that are listed by the ADVERTISE property.
Set this attribute to prevent the feature from being advertised.
+
+ + 16 + Set this attribute and the user interface does not display an option to change the feature state to Absent. Setting this attribute forces the feature to the installation state, whether or not the feature is visible in the UI. + + + 32 + Set this attribute and advertising is disabled for the feature if the operating system shell does not support Windows Installer descriptors. + +
+ More information found here: http://msdn.microsoft.com/library/en-us/msi/setup/feature_table.asp +
+ False +
+
+

Nested Elements:

+

<feature>

+
    + Nested feature elements are supported. +
+

</feature>

+

<description>

+
    + Longer string of text describing the feature. This localizable string is displayed by the Text control of the Selection Dialog. +
+

</description>

+

<conditions>

+
    +

    <condition>

    +
      + + + Attribute + Type + Description + Required + + + expression + string + If this conditional expression evaluates to TRUE, then the Level column in the Feature table is set to the + conditional install level.
      + The expression in the Condition column should not contain reference to the installed state of any feature or component. + This is because the expressions in the Condition column are evaluated before the installer evaluates the installed + states of features and components. Any expression in the Condition table that attempts to check the installed state + of a feature or component always evaluates to false.
      + For information on the syntax of conditional statements, see Conditional Statement Syntax. +
      + True +
      + + level + int + The installer sets the install level of this feature to the level specified in this column if the expression in + the Condition column evaluates to TRUE. Set this value to 0 to have the component not install if the condition is not met.
      + For any installation, there is a defined install level, which is an integral value from 1 to 32,767. The initial value + is determined by the InstallLevel property, which is set in the Property table.
      + A feature is installed only if the feature level value is less than or equal to the current install level. The user + interface can be authored such that once the installation is initialized, the installer allows the user to modify the + install level of any feature in the Feature table. For example, an author can define install level values that represent + specific installation options, such as Complete, Typical, or Minimum, and then create a dialog box that uses + SetInstallLevel ControlEvents to enable the user to select one of these states. Depending on the state the user selects, + the dialog box sets the install level property to the corresponding value. If the author assigns Typical a level of 100 + and the user selects Typical, only those features with a level of 100 or less are installed. In addition, the Custom + option could lead to another dialog box containing a Selection Tree control. The Selection Tree would then allow the user + to individually change whether each feature is installed.
      + True +
      +
      +
    +

    </condition>

    +
+

</conditions>

+

Examples

+ + Define a sample features structure. + + <features> + <feature name="F__Default" title="My Product" display="1" typical="true" directory="TARGETDIR"> + <description>My Product from ACME, Inc. </description> + <feature name="F__MainFiles" display="0" typical="true" /> + </feature> + <feature name="F__Help" title="My Product Help Files" display="1" typical="false" directory="D__ACME_MyProduct_Help" /> + </features> + + +
+
+ + + + Includes pre-packaged installation components (.msm files) as part + of the msi database. This feature allows reuse of installation + components that use MSI technology from other setup vendors or as + created by the . + +

Parameters

+ + + Attribute + Type + Description + Required + + + feature + string + Refrence to a feature. Used to associate the merge module with the feature (and the feature's directory) for when to install the components in the merge module. + True + + +

Nested Elements:

+

<modules>

+
    + Specifies the merge module(s) to include with the specified feature. +
+

</modules>

+

<configurationitems>

+
    +

    <configurationitem>

    +
      + Specifies the value for a configurable item +

      Parameters

      + + + Attribute + Type + Description + Required + + + module + string + Merge module filename to limit the configuration item to. If this is not set, the configuration item will be applied to all merge modules in the fileset. + True + + + name + string + Name of item for which data is to be set + True + + + value + string + Value of the configurable item + True + + +
    +

    </configurationitem>

    +
+

</configurationitems>

+

Examples

+ + Add the NAnt merge module to the install. + + <mergemodules> + <merge feature="F__NAntMSM"> + <modules> + <include name="${nant.dir}\Install\NAnt.msm" /> </modules> </merge> </mergemodules> @@ -5704,516 +5704,516 @@
- - Summary description for MsmTaskInfo. - + + Summary description for MsmTaskInfo. + - - Loads records for the ModuleSignature table. - - The MSM database. + + Loads records for the ModuleSignature table. + + The MSM database. - - Loads records for the ModuleDependency table. - - The MSM database. + + Loads records for the ModuleDependency table. + + The MSM database. - - Loads records for the ModuleExclusion table. - - The MSM database. + + Loads records for the ModuleExclusion table. + + The MSM database. - - Loads records for the ModuleInstallUISequence, ModuleInstallExecuteSequence, - ModuleAdminUISequence, ModuleAdminExecute, and ModuleAdvtExecuteSequence tables. - - The MSM database. + + Loads records for the ModuleInstallUISequence, ModuleInstallExecuteSequence, + ModuleAdminUISequence, ModuleAdminExecute, and ModuleAdvtExecuteSequence tables. + + The MSM database. - - Loads records for the ModuleIgnoreTable table. - - The MSM database. + + Loads records for the ModuleIgnoreTable table. + + The MSM database. - - Loads records for the ModuleSubstitution table. - - The MSM database. + + Loads records for the ModuleSubstitution table. + + The MSM database. - - Loads records for the ModuleConfiguration table. - - The MSM database. + + Loads records for the ModuleConfiguration table. + + The MSM database. - - Builds a Windows Installer Merge Module (MSM) database. - - - Requires cabarc.exe in the path. This tool is part of the - Microsoft Cabinet SDK. - + + Builds a Windows Installer Merge Module (MSM) database. + + + Requires cabarc.exe in the path. This tool is part of the + Microsoft Cabinet SDK. + - - Initializes task and verifies parameters. - + + Initializes task and verifies parameters. + - - Executes the task. - + + Executes the task. + - - Stores a unique identifier for a merge module. To be used as the merge module's ModuleSignature - + + Stores a unique identifier for a merge module. To be used as the merge module's ModuleSignature + - - Specifies the numeric language ID or IDs for a merge module. - + + Specifies the numeric language ID or IDs for a merge module. + - - Stores the version number of a merge module. - + + Stores the version number of a merge module. + - - - Lists other merge modules that are required for this merge module - to operate properly. - - - Contains any number of dependency elements. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - id - string - Identifier of the merge module required - True - - - language - string - Numeric language ID of the dependent merge module. Can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. If the field contains a group language ID, any merge module with having a language code in that group satisfies the dependency. If the RequiredLanguage is set to 0, any merge module filling the other requirements satisfies the dependency. - True - - - version - string - Version of the dependent merge module. If ommited, any version fills the dependency. - False - - -

Examples

- - Make sure that the NAnt merge module is included - - <moduledependencies> - <dependency id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" /> - </moduledependencies> - - -
+ + + Lists other merge modules that are required for this merge module + to operate properly. + + + Contains any number of dependency elements. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + id + string + Identifier of the merge module required + True + + + language + string + Numeric language ID of the dependent merge module. Can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. If the field contains a group language ID, any merge module with having a language code in that group satisfies the dependency. If the RequiredLanguage is set to 0, any merge module filling the other requirements satisfies the dependency. + True + + + version + string + Version of the dependent merge module. If ommited, any version fills the dependency. + False + + +

Examples

+ + Make sure that the NAnt merge module is included + + <moduledependencies> + <dependency id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" /> + </moduledependencies> + + +
- - - Lists other merge modules that are incompatible in the same - installer database. - - - Contains any number of exclusion elements. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - id - string - Identifier of the merge module required - True - - - language - string - Numeric language ID of the merge module in ExcludedID. The ExcludedLanguage column can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. The ExcludedLanguage column can accept negative language IDs. The meaning of the value in the ExcludedLanguage column is as follows. - - - ExcludedLanguage - Description - - - > 0 - Exclude the language IDs specified by ExcludedLanguage. - - - = 0 - Exclude no language IDs. - - - < 0 - Exclude all language IDs except those specified by ExcludedLanguage. - - - - True - - - minversion - string - Minimum version excluded from a range. If ommitted, all versions before maxversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. - False - - - maxversion - string - Maximum version excluded from a range. If ommitted, all versions after minversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. - False - - -

Examples

- - Exclude the all NAnt merge modules created before version 0.85.0 - - <moduleexclusions> - <exclusion id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" maxversion="0.85.0" /> - </moduleexclusions> - - -
+ + + Lists other merge modules that are incompatible in the same + installer database. + + + Contains any number of exclusion elements. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + id + string + Identifier of the merge module required + True + + + language + string + Numeric language ID of the merge module in ExcludedID. The ExcludedLanguage column can specify the language ID for a single language, such as 1033 for U.S. English, or specify the language ID for a language group, such as 9 for any English. The ExcludedLanguage column can accept negative language IDs. The meaning of the value in the ExcludedLanguage column is as follows. + + + ExcludedLanguage + Description + + + > 0 + Exclude the language IDs specified by ExcludedLanguage. + + + = 0 + Exclude no language IDs. + + + < 0 + Exclude all language IDs except those specified by ExcludedLanguage. + + + + True + + + minversion + string + Minimum version excluded from a range. If ommitted, all versions before maxversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. + False + + + maxversion + string + Maximum version excluded from a range. If ommitted, all versions after minversion are excluded. If both minversion and maxversion are ommitted there is no exclusion based on version. + False + + +

Examples

+ + Exclude the all NAnt merge modules created before version 0.85.0 + + <moduleexclusions> + <exclusion id="NAnt_MergeModule.2D2FB50C_DADF_4813_8932_8EF1E8CB8E80" language="0" maxversion="0.85.0" /> + </moduleexclusions> + + +
- - - Used to modify the sequence of tasks/events that execute during the - overall installation process. - -

Parameters

- - - Attribute - Type - Description - Required - - - type - msi:MSISequenceTable - Valid inputs: - - installexecute represents ModuleInstallExecuteSequence Table. - installui represents ModuleInstallUISequence Table - adminexecute represents ModuleAdminExecuteSequence Table - adminui represents ModuleAdminUISequence Table - advtexecute represents ModuleAdvtUISequence Table - - - True - - - action - string - Action to insert into sequence. Refers to one of the installer standard actions, or an entry in the merge module's CustomAction table or Dialog table.
If a standard action is used in the Action column of a merge module sequence table, the BaseAction and After attributes must be ommitted.
- True -
- - sequence - int - The sequence number of a standard action. If a custom action or dialog is entered into the Action column of this row, this attribute must be ommitted
When using standard actions in merge module sequence tables, the value in the Sequence column should be the recommended action sequence number. If the sequence number in the merge module differs from that for the same action in the .msi file sequence table, the merge tool uses the sequence number from the .msi file. See the suggested sequences in Using a Sequence Table for the recommended sequence numbers of standard actions.
- False -
- - baseaction - string - Can contain a standard action, a custom action specified in the merge module's custom action table, or a dialog specified in the module's dialog table. Is a key into the Action column of this table. It cannot be a foreign key into another merge table or table in the .msi file. This means that every standard action, custom action, or dialog listed in the BaseAction column must also be listed in the Action column of another record in this table. - False - - - after - bool - Boolean for whether Action comes before or after BaseAction - - - Value - Description - - - True - Action to come after BaseAction - - - False - Action to come before BaseAction - - - - False - - - condition - string - A conditional statement that indicates if the action is be executed. - False - -
-
+ + + Used to modify the sequence of tasks/events that execute during the + overall installation process. + +

Parameters

+ + + Attribute + Type + Description + Required + + + type + msi:MSISequenceTable + Valid inputs: + + installexecute represents ModuleInstallExecuteSequence Table. + installui represents ModuleInstallUISequence Table + adminexecute represents ModuleAdminExecuteSequence Table + adminui represents ModuleAdminUISequence Table + advtexecute represents ModuleAdvtUISequence Table + + + True + + + action + string + Action to insert into sequence. Refers to one of the installer standard actions, or an entry in the merge module's CustomAction table or Dialog table.
If a standard action is used in the Action column of a merge module sequence table, the BaseAction and After attributes must be ommitted.
+ True +
+ + sequence + int + The sequence number of a standard action. If a custom action or dialog is entered into the Action column of this row, this attribute must be ommitted
When using standard actions in merge module sequence tables, the value in the Sequence column should be the recommended action sequence number. If the sequence number in the merge module differs from that for the same action in the .msi file sequence table, the merge tool uses the sequence number from the .msi file. See the suggested sequences in Using a Sequence Table for the recommended sequence numbers of standard actions.
+ False +
+ + baseaction + string + Can contain a standard action, a custom action specified in the merge module's custom action table, or a dialog specified in the module's dialog table. Is a key into the Action column of this table. It cannot be a foreign key into another merge table or table in the .msi file. This means that every standard action, custom action, or dialog listed in the BaseAction column must also be listed in the Action column of another record in this table. + False + + + after + bool + Boolean for whether Action comes before or after BaseAction + + + Value + Description + + + True + Action to come after BaseAction + + + False + Action to come before BaseAction + + + + False + + + condition + string + A conditional statement that indicates if the action is be executed. + False + +
+
- - - If a table in the merge module is listed in the ModuleIgnoreTable - table, it is not merged into the .msi file. If the table already - exists in the .msi file, it is not modified by the merge. The tables - in the ModuleIgnoreTable can therefore contain data that is unneeded - after the merge. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - table - string - Name of the table in the merge module that is not to be merged into the .msi file. - True - - -

Examples

- - Ensure the module is compatible for users who have versions of Mergemod.dll earlier than 2.0 - - <moduleignoretables> - <table name="ModuleConfiguration" /> - <table name="ModuleSubstitution" /> - <table name="_ModuleConfigurationGroup" /> - </moduleignoretables> - - -
+ + + If a table in the merge module is listed in the ModuleIgnoreTable + table, it is not merged into the .msi file. If the table already + exists in the .msi file, it is not modified by the merge. The tables + in the ModuleIgnoreTable can therefore contain data that is unneeded + after the merge. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + table + string + Name of the table in the merge module that is not to be merged into the .msi file. + True + + +

Examples

+ + Ensure the module is compatible for users who have versions of Mergemod.dll earlier than 2.0 + + <moduleignoretables> + <table name="ModuleConfiguration" /> + <table name="ModuleSubstitution" /> + <table name="_ModuleConfigurationGroup" /> + </moduleignoretables> + + +
- - - The ModuleSubstitution table specifies the configurable fields of a - module database and provides a template for the configuration of each - field. The user or merge tool may query this table to determine what - configuration operations are to take place. This table is not merged - into the target database. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - table - string - Name of the table being modified in the module database. - True - - - row - string - Specifies the primary keys of the target row in the table named in the Table column. Multiple primary keys are separated by semicolons. Target rows are selected for modification before any changes are made to the target table. If one record in the ModuleSubstitution table changes the primary key field of a target row, other records in the ModuleSubstitution table are applied based on the original primary key data, not the resulting of primary key substitutions. The order of row substitution is undefined.
Values in this column are always in CMSM special format. A literal semicolon (';') or equal sign ('=') can be added by prefixing the character with a backslash. '\'. A null value for a key is signified by a null, a leading semicolon, two consecutive semicolons, or a trailing semicolon, depending on whether the null value is a sole, first, middle, or final key column value.
- True -
- - column - string - Specifies the target column in the row named in the Row column. If multiple rows in the ModuleSubstitution table change different columns of the same target row, all the column substitutions are performed before the modified row is inserted into the database. The order of column substitution is undefined. - True - - - value - string - Contains a string that provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column. When a substitution string of the form [=ItemA] is encountered, the string, including the bracket characters, is replaced by the value for the configurable "ItemA." The configurable item "ItemA" is specified in the Name column of the ModuleConfiguration table and its value is provided by the merge tool. If the merge tool declines to provide a value for any item in a replacement string, the default value specified in the DefaultValue column of the ModuleConfiguration Table is substituted. If a string references an item not in the ModuleConfiguration table, the merge fails. - - - This column uses CMSM special format. A literal semicolon (';') or equals sign ('=') can be added to the table by prefixing the character with a backslash. '\'. - - - The Value field may contain multiple substitution strings. For example, the configuration of items "Food1" and "Food2" in the string: "[=Food1] is good, but [=Food2] is better because [=Food2] is more nutritious." - - - Replacement strings must not be nested. The template "[=AB[=CDE]]" is invalid. - - - If the Value field evaluates to null, and the target field is not nullable, the merge fails and an error object of type msmErrorBadNullSubstitution is created and added to the error list. For details, see the error types described in get_Type Function. - - - If the Value field evaluates to the null GUID: {00000000-0000-0000-0000-000000000000}, the null GUID is replaced by the name of the feature before the row is merged into the module. For details, see Referencing Features in Merge Modules. - - - The template in the Value field is evaluated before being inserted into the target field. Substitution into a row is done before replacing any features. - - - If the Value column evaluates to a string of only integer characters (with an optional + or -), the string is converted into an integer before being substituted into an target field of the Integer Format Type. If the template evaluates to a string that does not consist only of integer characters (and an optional + or -) the result cannot be substituted into an integer target field. Attempting to insert a non-integer into an integer field causes the merge to fail and adds a msmErrorBadSubstitutionType error object to the error list. - - - If the target column specified in the Table and Column fields is a Text Format Type, and evaluation of the Value field results in an Integer Format Type, a decimal representation of the number is inserted into the target text field. - - - If the target field is an Integer Format Type, and the Value field consists of a non-delimited list of items in Bitfield Format, the value in the target field is combined using the bitwise AND operator with the inverse of the bitwise OR of all of the mask values from the items, then combined using the bitwise OR operator with each of the integer or bitfield items when masked by their corresponding mask values. Essentially, this explicitly sets the bits from the properties to the provided values but leaves all other bits in the cell alone. - - - If the Value field evaluates to a Key Format Type, and is a key into a table that uses multiple primary keys, the item name may be followed by a semicolon and an integer value that indicates the 1-based index into the set of values that together make a primary key. If no integer is specified, the value 1 is used. For example, the Control table has two primary key columns, Dialog_ and Control. The value of an item "Item1" that is a key into the Control table will be of the form "DialogName;ControlName", where DialogName is the value in the Dialog_ table and ControlName is the value in the Control column. To substitute just ControlName, the substitution string [=Item1;2] should be used. - - - - False - -
-
+ + + The ModuleSubstitution table specifies the configurable fields of a + module database and provides a template for the configuration of each + field. The user or merge tool may query this table to determine what + configuration operations are to take place. This table is not merged + into the target database. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + table + string + Name of the table being modified in the module database. + True + + + row + string + Specifies the primary keys of the target row in the table named in the Table column. Multiple primary keys are separated by semicolons. Target rows are selected for modification before any changes are made to the target table. If one record in the ModuleSubstitution table changes the primary key field of a target row, other records in the ModuleSubstitution table are applied based on the original primary key data, not the resulting of primary key substitutions. The order of row substitution is undefined.
Values in this column are always in CMSM special format. A literal semicolon (';') or equal sign ('=') can be added by prefixing the character with a backslash. '\'. A null value for a key is signified by a null, a leading semicolon, two consecutive semicolons, or a trailing semicolon, depending on whether the null value is a sole, first, middle, or final key column value.
+ True +
+ + column + string + Specifies the target column in the row named in the Row column. If multiple rows in the ModuleSubstitution table change different columns of the same target row, all the column substitutions are performed before the modified row is inserted into the database. The order of column substitution is undefined. + True + + + value + string + Contains a string that provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column. When a substitution string of the form [=ItemA] is encountered, the string, including the bracket characters, is replaced by the value for the configurable "ItemA." The configurable item "ItemA" is specified in the Name column of the ModuleConfiguration table and its value is provided by the merge tool. If the merge tool declines to provide a value for any item in a replacement string, the default value specified in the DefaultValue column of the ModuleConfiguration Table is substituted. If a string references an item not in the ModuleConfiguration table, the merge fails. + + + This column uses CMSM special format. A literal semicolon (';') or equals sign ('=') can be added to the table by prefixing the character with a backslash. '\'. + + + The Value field may contain multiple substitution strings. For example, the configuration of items "Food1" and "Food2" in the string: "[=Food1] is good, but [=Food2] is better because [=Food2] is more nutritious." + + + Replacement strings must not be nested. The template "[=AB[=CDE]]" is invalid. + + + If the Value field evaluates to null, and the target field is not nullable, the merge fails and an error object of type msmErrorBadNullSubstitution is created and added to the error list. For details, see the error types described in get_Type Function. + + + If the Value field evaluates to the null GUID: {00000000-0000-0000-0000-000000000000}, the null GUID is replaced by the name of the feature before the row is merged into the module. For details, see Referencing Features in Merge Modules. + + + The template in the Value field is evaluated before being inserted into the target field. Substitution into a row is done before replacing any features. + + + If the Value column evaluates to a string of only integer characters (with an optional + or -), the string is converted into an integer before being substituted into an target field of the Integer Format Type. If the template evaluates to a string that does not consist only of integer characters (and an optional + or -) the result cannot be substituted into an integer target field. Attempting to insert a non-integer into an integer field causes the merge to fail and adds a msmErrorBadSubstitutionType error object to the error list. + + + If the target column specified in the Table and Column fields is a Text Format Type, and evaluation of the Value field results in an Integer Format Type, a decimal representation of the number is inserted into the target text field. + + + If the target field is an Integer Format Type, and the Value field consists of a non-delimited list of items in Bitfield Format, the value in the target field is combined using the bitwise AND operator with the inverse of the bitwise OR of all of the mask values from the items, then combined using the bitwise OR operator with each of the integer or bitfield items when masked by their corresponding mask values. Essentially, this explicitly sets the bits from the properties to the provided values but leaves all other bits in the cell alone. + + + If the Value field evaluates to a Key Format Type, and is a key into a table that uses multiple primary keys, the item name may be followed by a semicolon and an integer value that indicates the 1-based index into the set of values that together make a primary key. If no integer is specified, the value 1 is used. For example, the Control table has two primary key columns, Dialog_ and Control. The value of an item "Item1" that is a key into the Control table will be of the form "DialogName;ControlName", where DialogName is the value in the Dialog_ table and ControlName is the value in the Control column. To substitute just ControlName, the substitution string [=Item1;2] should be used. + + + + False + +
+
- - - Identifies the configurable attributes of the module. This table is - not merged into the database. - - - More information is available here. - -

Parameters

- - - Attribute - Type - Description - Required - - - name - string - Name of the configurable item. This name is referenced in the formatting template in the Value column of the ModuleSubstitution table. - True - - - format - msi:MSMModuleConfigurationFormat - Specifies the format of the data being changed - - text - key - integer - bitfield - - - True - - - type - string - Specifies the type for the data being changed. This type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this depend on the value in the Format attribute. - False - - - contextdata - string - Specifies a semantic context for the requested data. The type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this column depend on the values in the Format and Type attributes. - False - - - defaultvalue - string - Specifies a default value for the item in this record if the merge tool declines to provide a value. This value must have the format, type, and context of the item. If this is a "Key" format item, the foreign key must be a valid key into the tables of the module. Null may be a valid value for this column depending on the item. For "Key" format items, this value is in CMSM special format. For all other types, the value is treated literally.
Module authors must ensure that the module is valid in its default state. This ensures that versions of Mergemod.dll earlier than version 2.0 can still use the module in its default state.
- False -
- - attr - int - Bit field containing attributes for this configurable item. Null is equivalent to 0. - - - Value - Description - - - 1 - This attribute only applies to records that list a foreign key to a module table in their DefaultValue field. - - - 2 - When this attribute is set, null is not a valid response for this item. This attribute has no effect for Integer Format Types or Bitfield Format Types. - - - - False - - - displayname - string - Provides a short description of this item that the authoring tool may use in the user interface. This column may not be localized. Set this column to null to have the module is request that the authoring tool not expose this property in the UI. - False - - - description - string - Provides a description of this item that the authoring tool may use in UI elements. This string may be localized by the module's language transform. - False - - - helplocation - string - Provides either the name of a help file (without the .chm extension) or a semicolon delimited list of help namespaces. This can be ommitted if no help is available. - False - - - helpkeyword - string - Provides a keyword into the help file or namespace from the HelpLocation column. The interpretation of this keyword depends on the HelpLocation attribute. - False - -
-
+ + + Identifies the configurable attributes of the module. This table is + not merged into the database. + + + More information is available here. + +

Parameters

+ + + Attribute + Type + Description + Required + + + name + string + Name of the configurable item. This name is referenced in the formatting template in the Value column of the ModuleSubstitution table. + True + + + format + msi:MSMModuleConfigurationFormat + Specifies the format of the data being changed + + text + key + integer + bitfield + + + True + + + type + string + Specifies the type for the data being changed. This type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this depend on the value in the Format attribute. + False + + + contextdata + string + Specifies a semantic context for the requested data. The type is used to provide a context for any user-interface and is not used in the merge process. The valid values for this column depend on the values in the Format and Type attributes. + False + + + defaultvalue + string + Specifies a default value for the item in this record if the merge tool declines to provide a value. This value must have the format, type, and context of the item. If this is a "Key" format item, the foreign key must be a valid key into the tables of the module. Null may be a valid value for this column depending on the item. For "Key" format items, this value is in CMSM special format. For all other types, the value is treated literally.
Module authors must ensure that the module is valid in its default state. This ensures that versions of Mergemod.dll earlier than version 2.0 can still use the module in its default state.
+ False +
+ + attr + int + Bit field containing attributes for this configurable item. Null is equivalent to 0. + + + Value + Description + + + 1 + This attribute only applies to records that list a foreign key to a module table in their DefaultValue field. + + + 2 + When this attribute is set, null is not a valid response for this item. This attribute has no effect for Integer Format Types or Bitfield Format Types. + + + + False + + + displayname + string + Provides a short description of this item that the authoring tool may use in the user interface. This column may not be localized. Set this column to null to have the module is request that the authoring tool not expose this property in the UI. + False + + + description + string + Provides a description of this item that the authoring tool may use in UI elements. This string may be localized by the module's language transform. + False + + + helplocation + string + Provides either the name of a help file (without the .chm extension) or a semicolon delimited list of help namespaces. This can be ommitted if no help is available. + False + + + helpkeyword + string + Provides a keyword into the help file or namespace from the HelpLocation column. The interpretation of this keyword depends on the HelpLocation attribute. + False + +
+
- - Maintains a forward reference to a .tlb file - in the same directory as an assembly .dll - that has been registered for COM interop. - + + Maintains a forward reference to a .tlb file + in the same directory as an assembly .dll + that has been registered for COM interop. + @@ -6226,106 +6226,106 @@ The name of the Assembly's component. - - Retrieves the name of the Assembly's component. - - The Assembly's component Name. + + Retrieves the name of the Assembly's component. + + The Assembly's component Name. - - Retrieves the typelibrary filename. - - The typelibrary filename. + + Retrieves the typelibrary filename. + + The typelibrary filename. - - Retrieves the typelibrary id. - - The typelibrary id. + + Retrieves the typelibrary id. + + The typelibrary id. - - Retrieves the name of the assembly. - - The name of the assembly. + + Retrieves the name of the assembly. + + The name of the assembly. - - Retrieves the feature containing the typelibrary's file. - - The feature containing the typelibrary's file. + + Retrieves the feature containing the typelibrary's file. + + The feature containing the typelibrary's file. - - A task that generates a summary HTML - from a set of NUnit xml report files. - - - - This task can generate a combined HTML report out of a set of NUnit - result files generated using the XML Result Formatter. - - - All the properties defined in the current project will be passed - down to the XSLT file as template parameters, so you can access - properties such as nant.project.name, nant.version, etc. - - - - - - - - - - ]]> - - + + A task that generates a summary HTML + from a set of NUnit xml report files. + + + + This task can generate a combined HTML report out of a set of NUnit + result files generated using the XML Result Formatter. + + + All the properties defined in the current project will be passed + down to the XSLT file as template parameters, so you can access + properties such as nant.project.name, nant.version, etc. + + + + + + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Load a stylesheet from the assemblies resource stream. - - File name of the file to extract. + + Load a stylesheet from the assemblies resource stream. + + File name of the file to extract. - - Load a stylesheet from the file system. - - The XSLT file to load. + + Load a stylesheet from the file system. + + The XSLT file to load. - - Initializes the XmlDocument instance - used to summarize the test results - - + + Initializes the XmlDocument instance + used to summarize the test results + + - - Builds an XsltArgumentList with all - the properties defined in the - current project as XSLT parameters. - - + + Builds an XsltArgumentList with all + the properties defined in the + current project as XSLT parameters. + + - - Run the transform and output to filename - - - + + Run the transform and output to filename + + + @@ -6334,30 +6334,30 @@ - - The output language. - + + The output language. + - - Open all description method. Default to "false". - + + Open all description method. Default to "false". + - - The directory where the files resulting from the transformation - should be written to. The default is the project's base directory. - + + The directory where the files resulting from the transformation + should be written to. The default is the project's base directory. + - - Set of XML files to use as input - + + Set of XML files to use as input + - - Set of summary XML files to use as input. - + + Set of summary XML files to use as input. + @@ -6366,43 +6366,43 @@ - - Custom XmlResolver used to load the - XSLT files out of this assembly resources. - + + Custom XmlResolver used to load the + XSLT files out of this assembly resources. + - - Loads the specified file from our internal resources if its there - - - - - + + Loads the specified file from our internal resources if its there + + + + + - - Open file(s) in a client workspace for addition to the depot. - - - - Add all cs files under the given directory into the "new" changelist - (will be created if it doesn't already exist). - - - - ]]> - - - - Add Test.txt into the default changelist. - - - ]]> - - + + Open file(s) in a client workspace for addition to the depot. + + + + Add all cs files under the given directory into the "new" changelist + (will be created if it doesn't already exist). + + + + ]]> + + + + Add Test.txt into the default changelist. + + + ]]> + + @@ -6421,76 +6421,76 @@ - - Execute the perforce command assembled by subclasses. - + + Execute the perforce command assembled by subclasses. + - - The p4 server and port to connect to. The default is "perforce:1666". - + + The p4 server and port to connect to. The default is "perforce:1666". + - - The p4 client spec to use. The default is the current client. - + + The p4 client spec to use. The default is the current client. + - - The p4 username. The default is the current user. - + + The p4 username. The default is the current user. + - - The client, branch or label view to operate upon. The default is - "//...". - + + The client, branch or label view to operate upon. The default is + "//...". + - - Prepends a descriptive field (for example, text:, info:, error:, exit:) - to each line of output produced by a Perforce command. This is most - often used when scripting. The default is . - + + Prepends a descriptive field (for example, text:, info:, error:, exit:) + to each line of output produced by a Perforce command. This is most + often used when scripting. The default is . + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + - - Override the ExeName paramater for p4.exe - + + Override the ExeName paramater for p4.exe + - - Derived classes should override this to provide command-specific - commandline arguments. - + + Derived classes should override this to provide command-specific + commandline arguments. + - - Build the command string for this particular command. - - - The command string for this particular command. - + + Build the command string for this particular command. + + + The command string for this particular command. + - - File(s) to add. File name can contain wildcard characters. (Note: - this is not using p4 wildcard syntax, but the OS wildcards). - + + File(s) to add. File name can contain wildcard characters. (Note: + this is not using p4 wildcard syntax, but the OS wildcards). + - - Changelist that files will be added into. Changelist will be created - if not already present. - + + Changelist that files will be added into. Changelist will be created + if not already present. + @@ -6499,906 +6499,906 @@ - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Create or delete a changelist specification. - - - Create a new changelist called "mynewchange". - - - ]]> - - - - Delete the changelist called "mynewchange". - - - ]]> - - + + Create or delete a changelist specification. + + + Create a new changelist called "mynewchange". + + + ]]> + + + + Delete the changelist called "mynewchange". + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to create or delete. - + + Changelist to create or delete. + - - If causes passed in changelist to be - deleted. The default is . - + + If causes passed in changelist to be + deleted. The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Add/modify/delete a client spec in perforce. - - - - Add a client (modify if already present and have sufficient rights). - - - - ]]> - - - - Delete a client. - - - ]]> - - + + Add/modify/delete a client spec in perforce. + + + + Add a client (modify if already present and have sufficient rights). + + + + ]]> + + + + Delete a client. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Name of client to create/delete. - + + Name of client to create/delete. + - - Root path for client spec. - + + Root path for client spec. + - - Delete the named client. The default is . - + + Delete the named client. The default is . + - - Force a delete even if files are open. The default is - . - + + Force a delete even if files are open. The default is + . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Open file(s) in a client workspace for deletion from the depot. - - - - Mark all cs files under the give view for deletion and place them in - the "Deleting" changelist. - - - - ]]> - - + + Open file(s) in a client workspace for deletion from the depot. + + + + Mark all cs files under the give view for deletion and place them in + the "Deleting" changelist. + + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to place the marked for deletion item into. - + + Changelist to place the marked for deletion item into. + - - The client, branch or label view to operate upon. - + + The client, branch or label view to operate upon. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Opens file(s) in a client workspace for edit. - - - - Open all files in the ProjectX Test folder for edit, and place into - the default changelist. - - - - ]]> - - - - - Open all *.txt files in the ProjectX Test folder for edit, and place - into the "testing" changelist. - - - - ]]> - - + + Opens file(s) in a client workspace for edit. + + + + Open all files in the ProjectX Test folder for edit, and place into + the default changelist. + + + + ]]> + + + + + Open all *.txt files in the ProjectX Test folder for edit, and place + into the "testing" changelist. + + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to place the opened files into. - + + Changelist to place the opened files into. + - - File Type settings. - + + File Type settings. + - - The client, branch or label view to operate upon. - + + The client, branch or label view to operate upon. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Returns information from the "p4 info" command back into variables for - use within the build process. - - - Fill the variables using the task. - - - - ]]> - - + + Returns information from the "p4 info" command back into variables for + use within the build process. + + + Fill the variables using the task. + + + + ]]> + + - - The name of the property to store the p4 user name in. - + + The name of the property to store the p4 user name in. + - - The name of the property to store the p4 client name in. - + + The name of the property to store the p4 client name in. + - - The name of the property to store the p4 host name in. - + + The name of the property to store the p4 host name in. + - - The name of the property to store the p4 client root in. - + + The name of the property to store the p4 client root in. + - - Create or edit a label specification and its view. - - - Create a new label called "SDK_V1.2". - - - ]]> - - - - Delete the previously created label. - - - ]]> - - + + Create or edit a label specification and its view. + + + Create a new label called "SDK_V1.2". + + + ]]> + + + + Delete the previously created label. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Name of label to create/delete. - + + Name of label to create/delete. + - - Delete the named label. The default is . - + + Delete the named label. The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Synchronize a label with the contents of the current client workspace. - - - Apply a previously created label to the specified view. - - - ]]> - - + + Synchronize a label with the contents of the current client workspace. + + + Apply a previously created label to the specified view. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Name of the label to sync the specified or default view with. - + + Name of the label to sync the specified or default view with. + - - Delete the view defined in the label, or matching the input view - from the label. The default is . - + + Delete the view defined in the label, or matching the input view + from the label. The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Fetch a specific file from a Perforce depot without needing a clientspec - to map it. - - - - - - ]]> - - + + Fetch a specific file from a Perforce depot without needing a clientspec + to map it. + + + + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - The depot or local filename (including optional path) of the file - to fetch. - + + The depot or local filename (including optional path) of the file + to fetch. + - - The local filename to write the fetched file to. - + + The local filename to write the fetched file to. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Move opened files between changelists or change the files’ type. - - - This task has two different but related uses: - Moving opened files between changelists (default or named). - Changing the type of an opened file. - - - - Move the specified files matching the view into the "New" changelist. - - - - ]]> - - - - - Modify the specified files matching the view to the given file type. - The change won't affect the repository until submitted. - - - - ]]> - - + + Move opened files between changelists or change the files’ type. + + + This task has two different but related uses: + Moving opened files between changelists (default or named). + Changing the type of an opened file. + + + + Move the specified files matching the view into the "New" changelist. + + + + ]]> + + + + + Modify the specified files matching the view to the given file type. + The change won't affect the repository until submitted. + + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - The client, branch or label view to operate upon. - + + The client, branch or label view to operate upon. + - - Changelist to place the reopened files into. - + + Changelist to place the reopened files into. + - - File Type settings. - + + File Type settings. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Discard changes made to open files. - - - Revert all txt files in a given changelist. - - - ]]> - - - - - Revert all unchanged files opened in the given changelist. - - - - ]]> - - - - Revert all unchanged files opened in any changelist. - - - ]]> - - + + Discard changes made to open files. + + + Revert all txt files in a given changelist. + + + ]]> + + + + + Revert all unchanged files opened in the given changelist. + + + + ]]> + + + + Revert all unchanged files opened in any changelist. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to perform the revert action on. optional. - + + Changelist to perform the revert action on. optional. + - - Revert all unchanged or missing files from the changelist. default is false. optional. - + + Revert all unchanged or missing files from the changelist. default is false. optional. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Set registry variables that perforce uses. - - - Note: the environment variables that p4 uses will be set, but will not - be validated. - - - Modify any of the three variables (at least one required). - - - ]]> - - + + Set registry variables that perforce uses. + + + Note: the environment variables that p4 uses will be set, but will not + be validated. + + + Modify any of the three variables (at least one required). + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Send changes made to open files to the depot. - - - - Submit changelist "Temp", but first revert all unchanged files in the - changelist. - - - - ]]> - - - - Submit changelist, but leave the files open afterwards. - - - ]]> - - + + Send changes made to open files to the depot. + + + + Submit changelist "Temp", but first revert all unchanged files in the + changelist. + + + + ]]> + + + + Submit changelist, but leave the files open afterwards. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - - Changelist to submit. - + + Changelist to submit. + - - Keep the files open after submitting. The default is - . - + + Keep the files open after submitting. The default is + . + - - Revert all unchanged or missing files from the changelist. - The default is . - + + Revert all unchanged or missing files from the changelist. + The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Synchronize client space to a Perforce depot view. - - - - Sync to head using P4USER, P4PORT and P4CLIENT settings specified. - - - - ]]> - - - - Sync to head using default p4 environment variables. - - - ]]> - - - - Force a re-sync to head, refreshing all files. - - - ]]> - - - - Sync to a label. - - - ]]> - - + + Synchronize client space to a Perforce depot view. + + + + Sync to head using P4USER, P4PORT and P4CLIENT settings specified. + + + + ]]> + + + + Sync to head using default p4 environment variables. + + + ]]> + + + + Force a re-sync to head, refreshing all files. + + + ]]> + + + + Sync to a label. + + + ]]> + + - - Builds the command string for this particular command. - - - The command string for this particular command. - + + Builds the command string for this particular command. + + + The command string for this particular command. + - Label to sync client to; optional. - + Label to sync client to; optional. + - - Force a refresh of files. The default is . - + + Force a refresh of files. The default is . + - - This is an override used by the base class to get command specific args. - + + This is an override used by the base class to get command specific args. + - - Static helper class for Perforce tasks. - + + Static helper class for Perforce tasks. + - - ask p4 for the user name - - + + ask p4 for the user name + + - - ask p4 for the client name - - + + ask p4 for the client name + + - - Get a changelist number based on on its name - - - - - - + + Get a changelist number based on on its name + + + + + + - - Get a changelist number based on on its name - - - - - + + Get a changelist number based on on its name + + + + + - - Create a new label - - - - + + Create a new label + + + + - - Create a new Client - - - - - + + Create a new Client + + + + + - - Create a new changelist - - - - Description of Changelist - + + Create a new changelist + + + + Description of Changelist + - - call the p4 process to - - - + + call the p4 process to + + + - - call the p4 process to - - - + + call the p4 process to + + + - - Execute a process and return its ourput - - - - - + + Execute a process and return its ourput + + + + + - - Execute a process and return its ourput - - - - - - + + Execute a process and return its ourput + + + + + + - - Execute a process by name - - - - - + + Execute a process by name + + + + + - - Adds files to a PVCS repository. - - - - This task uses the addfiles PCLI command to add files to a PVCS repository. - - - - - Adds File1.txt and File2.txt to the root level of the - project database specified by the project-database property. - - - - - - - - - ]]> - - - - - Adds File1.txt and File2.txt to the folder project - of the project database specified by the project-database - property. - - - - - - - - - ]]> - - - - - Adds another_file.txt and all files and folders at and below - C:\Data to the project database specified by the project-database - property. - - - - - - - - - ]]> - - - - - Adds all files at and below C:\Data\ to the project database specified by the project-database - property. Workfiles will be copied to the workfile location and will overwrite any existing files (as - dictated by the copymode attribute). The relevant revisions will be locked in PVCS. Added files - will be assigned the SYSTEST promotion group. - - - - - - - - ]]> - - + + Adds files to a PVCS repository. + + + + This task uses the addfiles PCLI command to add files to a PVCS repository. + + + + + Adds File1.txt and File2.txt to the root level of the + project database specified by the project-database property. + + + + + + + + + ]]> + + + + + Adds File1.txt and File2.txt to the folder project + of the project database specified by the project-database + property. + + + + + + + + + ]]> + + + + + Adds another_file.txt and all files and folders at and below + C:\Data to the project database specified by the project-database + property. + + + + + + + + + ]]> + + + + + Adds all files at and below C:\Data\ to the project database specified by the project-database + property. Workfiles will be copied to the workfile location and will overwrite any existing files (as + dictated by the copymode attribute). The relevant revisions will be locked in PVCS. Added files + will be assigned the SYSTEST promotion group. + + + + + + + + ]]> + + - - Base class for all PVCS project database tasks that operate against one or more entities. - + + Base class for all PVCS project database tasks that operate against one or more entities. + - - A base class for PVCS tasks that deal with project databases. - - - - This class can be used as a base class for PVCS tasks that operate against a project database. It provides - common attributes and functionality for such tasks. - - + + A base class for PVCS tasks that deal with project databases. + + + + This class can be used as a base class for PVCS tasks that operate against a project database. It provides + common attributes and functionality for such tasks. + + - - Base class functionality for all PVCS tasks. - + + Base class functionality for all PVCS tasks. + - - This is the PCLI process that is run by this task. - + + This is the PCLI process that is run by this task. + - - Starts the process that is wrapped by this PVCS task. - - - Provided only to seal the implementation of StartProcess(). - - The process that was started. + + Starts the process that is wrapped by this PVCS task. + + + Provided only to seal the implementation of StartProcess(). + + The process that was started. - - Executes the task. - - - Provided only to seal the implementation of ExecuteTask(). - + + Executes the task. + + + Provided only to seal the implementation of ExecuteTask(). + - - Prepares the process wrapped by this task for execution. - - The process to prepare for execution. + + Prepares the process wrapped by this task for execution. + + The process to prepare for execution. - - Allows tasks to add their task-specific arguments to the collection of arguments to be passed to the - PVCS command-line tool. - - The collection of arguments. + + Allows tasks to add their task-specific arguments to the collection of arguments to be passed to the + PVCS command-line tool. + + The collection of arguments. - - Constructs the program arguments that should be used when executing the wrapped PVCS process. - - A string containing the program arguments. + + Constructs the program arguments that should be used when executing the wrapped PVCS process. + + A string containing the program arguments. - - Gets or sets the location of the PVCS binary command-line tools. - - - - Generally, the PVCS command-line tools will be available on the current path. However, if this is not - the case then this property allows an exact location to be specified. If this property is not set, the - task will assume that the PVCS binaries are available on the current path. - - + + Gets or sets the location of the PVCS binary command-line tools. + + + + Generally, the PVCS command-line tools will be available on the current path. However, if this is not + the case then this property allows an exact location to be specified. If this property is not set, the + task will assume that the PVCS binaries are available on the current path. + + - - Gets or sets the process that is run as a result of running this task. - + + Gets or sets the process that is run as a result of running this task. + - - Gets the program arguments with which to run the wrapped PVCS process. - + + Gets the program arguments with which to run the wrapped PVCS process. + - - Gets the executable name for the command-line tool to run for the PVCS task. - + + Gets the executable name for the command-line tool to run for the PVCS task. + - - Gets the PCLI command name that corresponds to the operation the task performs. - - - - By default, this property will return the name of the task minus the starting "pvcs". Subclasses need - only override this property if there is a mismatch between the task name and the PCLI command name. - - + + Gets the PCLI command name that corresponds to the operation the task performs. + + + + By default, this property will return the name of the task minus the starting "pvcs". Subclasses need + only override this property if there is a mismatch between the task name and the PCLI command name. + + @@ -7428,86 +7428,86 @@ - - Gets or sets a value indicating whether the operation should include subprojects. - - - - This is equivalent to the -z command-line option. - - + + Gets or sets a value indicating whether the operation should include subprojects. + + + + This is equivalent to the -z command-line option. + + - - Gets a value indicating whether the specific task implementation supports the includesubprojects - task attribute. If not, an exception will be thrown if an attempt is made to set the attribute. - + + Gets a value indicating whether the specific task implementation supports the includesubprojects + task attribute. If not, an exception will be thrown if an attempt is made to set the attribute. + - - Gets or sets the password to use when connecting to the project database. - - - - This is equivalent to the password part of the -id command-line option. - - + + Gets or sets the password to use when connecting to the project database. + + + + This is equivalent to the password part of the -id command-line option. + + - - Gets or sets the user ID to use when connecting to the project database. - - - - This is equivalent to the user ID part of the -id command-line option. - - + + Gets or sets the user ID to use when connecting to the project database. + + + + This is equivalent to the user ID part of the -id command-line option. + + - - Gets or sets the workspace to use when connecting to the project database. - - - - This is equivalent to the -sp command-line option. - - + + Gets or sets the workspace to use when connecting to the project database. + + + + This is equivalent to the -sp command-line option. + + - - Gets or sets the project database to utilize during the operation. - - - - This is equivalent to the -pr command-line option. - - + + Gets or sets the project database to utilize during the operation. + + + + This is equivalent to the -pr command-line option. + + - - Gets or sets the project path to utilize during the operation. - - - - This is equivalent to the -pp command-line option. - - + + Gets or sets the project path to utilize during the operation. + + + + This is equivalent to the -pp command-line option. + + - - Constructs and initializes an instance of PVCSMultipleEntityTask. - + + Constructs and initializes an instance of PVCSMultipleEntityTask. + - - Gets or sets the entities involved in the operation. - + + Gets or sets the entities involved in the operation. + @@ -7534,89 +7534,89 @@ - - Constructs and initializes an instance of PVCSAddFilesTask. - + + Constructs and initializes an instance of PVCSAddFilesTask. + - - Gets or sets the archive description for versioned files. - - - - This is equivalent to the -t parameter to the pcli addfiles command. - - + + Gets or sets the archive description for versioned files. + + + + This is equivalent to the -t parameter to the pcli addfiles command. + + - - Gets or sets the copy mode for the operation. - + + Gets or sets the copy mode for the operation. + - - Gets or sets a value indicating whether workfiles will be deleted after adding them to PVCS. - - - - This is equivalent to the -d parameter to the pcli addfiles command. - - + + Gets or sets a value indicating whether workfiles will be deleted after adding them to PVCS. + + + + This is equivalent to the -d parameter to the pcli addfiles command. + + - - Gets or sets the description for versioned files. - - - - This is equivalent to the -m parameter to the pcli addfiles command. - - + + Gets or sets the description for versioned files. + + + + This is equivalent to the -m parameter to the pcli addfiles command. + + - - Gets or sets a value indicating whether versioned files should be locked after being added to PVCS. - - - - This is equivalent to the -l parameter to the pcli addfiles command. - - + + Gets or sets a value indicating whether versioned files should be locked after being added to PVCS. + + + + This is equivalent to the -l parameter to the pcli addfiles command. + + - - Gets or sets the promotion group to which added files will be assigned. Setting this attribute to an - empty string indicates the versioned files will not be assigned to any promotion group. - - - - This is equivalent to the -g parameter to the pcli addfiles command. - - + + Gets or sets the promotion group to which added files will be assigned. Setting this attribute to an + empty string indicates the versioned files will not be assigned to any promotion group. + + + + This is equivalent to the -g parameter to the pcli addfiles command. + + - - Gets or sets a value indicating whether workfiles shouldn't be added if they already exist in the PVCS - repository. - - - - This is equivalent to the -qw parameter to the pcli addfiles command. - - + + Gets or sets a value indicating whether workfiles shouldn't be added if they already exist in the PVCS + repository. + + + + This is equivalent to the -qw parameter to the pcli addfiles command. + + - - Gets or sets the version label to assign to the added versioned files. - - - - This is equivalent to the -v parameter to the pcli addfiles command. - - + + Gets or sets the version label to assign to the added versioned files. + + + + This is equivalent to the -v parameter to the pcli addfiles command. + + @@ -7624,52 +7624,52 @@ - - Indicates the default copy mode should be used. - + + Indicates the default copy mode should be used. + - - Indicates that workfiles should be copied to the project workfile location is it doesn't already exist. - + + Indicates that workfiles should be copied to the project workfile location is it doesn't already exist. + - - Indicates that workfiles should be copied to the project workfile location and overwrite any existing - workfile. - + + Indicates that workfiles should be copied to the project workfile location and overwrite any existing + workfile. + - - Adds a user to a PVCS project or project database. - - - - This task uses the adduser PCLI command to add the user to the PVCS project or database. - - - - - Adds a user with name kb and password *Muse* to the project database specified by the - project-database property. - - - - ]]> - - - - - Adds a user with name kb and password *Muse* to the project database specified by the - project-database property. The user's logon will expire on the 26th of October, 2005. - - - - ]]> - - + + Adds a user to a PVCS project or project database. + + + + This task uses the adduser PCLI command to add the user to the PVCS project or database. + + + + + Adds a user with name kb and password *Muse* to the project database specified by the + project-database property. + + + + ]]> + + + + + Adds a user with name kb and password *Muse* to the project database specified by the + project-database property. The user's logon will expire on the 26th of October, 2005. + + + + ]]> + + @@ -7681,71 +7681,71 @@ - - Constructs and initializes an instance of PVCSAddUserTask. - + + Constructs and initializes an instance of PVCSAddUserTask. + - - Gets or sets the expiration date for the new user. - - - - This is equivalent to the -e parameter to the pcli adduser command. - - + + Gets or sets the expiration date for the new user. + + + + This is equivalent to the -e parameter to the pcli adduser command. + + - - Gets or sets the password for the new user. - + + Gets or sets the password for the new user. + - - Gets or sets the user name for the new user. - + + Gets or sets the user name for the new user. + - - Assigns a promotion group to versioned files. - - - - This task uses the assigngroup PCLI command to assign the group to versioned files. - - - - - Assigns the SYSTEST promotion group to all entities with the DEV promotion group in the - folder project. - - - - ]]> - - - - - Assigns the SYSTEST promotion group to revision 1.2 of all entities. - - - - ]]> - - + + Assigns a promotion group to versioned files. + + + + This task uses the assigngroup PCLI command to assign the group to versioned files. + + + + + Assigns the SYSTEST promotion group to all entities with the DEV promotion group in the + folder project. + + + + ]]> + + + + + Assigns the SYSTEST promotion group to revision 1.2 of all entities. + + + + ]]> + + - - Base class for all PVCS project database tasks that operate against a single entity. - + + Base class for all PVCS project database tasks that operate against a single entity. + @@ -7754,9 +7754,9 @@ - - Gets or sets the entity involved in the operation. - + + Gets or sets the entity involved in the operation. + @@ -7771,85 +7771,85 @@ - - Constructs and initializes an instance of PVCSAssignGroupTask. - + + Constructs and initializes an instance of PVCSAssignGroupTask. + - - Gets or sets the promotion group to assign to the versioned files. - - - - This is equivalent to the -g parameter to the pcli assigngroup command. - - + + Gets or sets the promotion group to assign to the versioned files. + + + + This is equivalent to the -g parameter to the pcli assigngroup command. + + - - Gets or sets the promotion group for the versioned files to be assigned the promotion group. - - - - This is equivalent to the -r parameter to the pcli assigngroup command. - - + + Gets or sets the promotion group for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + - - Gets or sets the revision for the versioned files to be assigned the promotion group. - - - - This is equivalent to the -r parameter to the pcli assigngroup command. - - - If this property has not yet been set, it will return Double.MaxValue. - - + + Gets or sets the revision for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + + If this property has not yet been set, it will return Double.MaxValue. + + - - Gets or sets the version label for the versioned files to be assigned the promotion group. - - - - This is equivalent to the -r parameter to the pcli assigngroup command. - - + + Gets or sets the version label for the versioned files to be assigned the promotion group. + + + + This is equivalent to the -r parameter to the pcli assigngroup command. + + - - Changes the promotion group for specified versioned files. - - - - This task uses the changegroup PCLI command to change the group for versioned files. - - - - - Changes the promotion group for file.txt from SYSTEST to DEV. - - - - ]]> - - - - - Changes the promotion group for all files from DEV to PROD. - - - - ]]> - - + + Changes the promotion group for specified versioned files. + + + + This task uses the changegroup PCLI command to change the group for versioned files. + + + + + Changes the promotion group for file.txt from SYSTEST to DEV. + + + + ]]> + + + + + Changes the promotion group for all files from DEV to PROD. + + + + ]]> + + @@ -7861,24 +7861,24 @@ - - Gets or sets the promotion group to change from. - - - - This is equivalent to the -gf parameter to the pcli changegroup command. - - + + Gets or sets the promotion group to change from. + + + + This is equivalent to the -gf parameter to the pcli changegroup command. + + - - Gets or sets the promotion group to change to. - - - - This is equivalent to the -gt parameter to the pcli changegroup command. - - + + Gets or sets the promotion group to change to. + + + + This is equivalent to the -gt parameter to the pcli changegroup command. + + @@ -7930,48 +7930,48 @@ The value for the command, or null if no value applies. - - Constructs an instance of PVCSCommandArgument with the specified information. - - The command string. - The value for the command, or null if no value applies. - The position for the command. + + Constructs an instance of PVCSCommandArgument with the specified information. + + The command string. + The value for the command, or null if no value applies. + The position for the command. - - Compares two PVCS command arguments based on their position. - - The PVCS command argument to compare to this. - - Less than zero if this instance is less than . - Zero if this instance is equal to . - Greater than zero if this instance is greater than . - + + Compares two PVCS command arguments based on their position. + + The PVCS command argument to compare to this. + + Less than zero if this instance is less than . + Zero if this instance is equal to . + Greater than zero if this instance is greater than . + - - Converts this command argument to its string representation. - - The string representation of this command argument. + + Converts this command argument to its string representation. + + The string representation of this command argument. - - Escapes a string command line argument. - - - - This method attempts to deal with the mess of keeping both PCLI and the shell happy with string - arguments. It's not perfect yet (try an argument with several backslashes before a double quote). It - would be nice to have a regex to handle this but I wouldn't even bother until this logic is spot on. - - - The string argument to escape. - The escaped string argument. + + Escapes a string command line argument. + + + + This method attempts to deal with the mess of keeping both PCLI and the shell happy with string + arguments. It's not perfect yet (try an argument with several backslashes before a double quote). It + would be nice to have a regex to handle this but I wouldn't even bother until this logic is spot on. + + + The string argument to escape. + The escaped string argument. - - Gets a string that contains the command to pass to PVCS. - + + Gets a string that contains the command to pass to PVCS. + @@ -7984,9 +7984,9 @@ - - Gets the position for the command. - + + Gets the position for the command. + @@ -7997,35 +7997,35 @@ - - Adds a new command argument to this collection with the specified information. - - The command string for the new command. + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. - - Adds a new command argument to this collection with the specified information. - - The command string for the new command. - - The command value for the new command, or null if no value applies. - + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. + + The command value for the new command, or null if no value applies. + - - Adds a new command argument to this collection with the specified information. - - The command string for the new command. - - The command value for the new command, or null if no value applies. - - The position for the new command. + + Adds a new command argument to this collection with the specified information. + + The command string for the new command. + + The command value for the new command, or null if no value applies. + + The position for the new command. - - Adds all specified command arguments to this collection. - - The collection of command arguments to add. + + Adds all specified command arguments to this collection. + + The collection of command arguments to add. @@ -8081,15 +8081,15 @@ - - Arguments that should appear before the PCLI command argument. This is useful for arguments to PCLI - itself (as opposed to the PCLI command). - + + Arguments that should appear before the PCLI command argument. This is useful for arguments to PCLI + itself (as opposed to the PCLI command). + - - PCLI command arguments that should appear before other PCLI command arguments. - + + PCLI command arguments that should appear before other PCLI command arguments. + @@ -8098,30 +8098,30 @@ - - PCLI command arguments that should appear after other PCLI command arguments. - + + PCLI command arguments that should appear after other PCLI command arguments. + - - Creates a project in a PVCS repository. - - - - This task uses the createproject PCLI command to create the project in the PVCS repository. - - - - - Creates a project called Songs in the project database specified by the project-database - property. The workfile location for the project is set to C:\Work\Songs. - - - - ]]> - - + + Creates a project in a PVCS repository. + + + + This task uses the createproject PCLI command to create the project in the PVCS repository. + + + + + Creates a project called Songs in the project database specified by the project-database + property. The workfile location for the project is set to C:\Work\Songs. + + + + ]]> + + @@ -8130,49 +8130,49 @@ - - Gets or sets the workfile location for the created project. - - - - This is equivalent to the -w parameter to the pcli createproject command. - - + + Gets or sets the workfile location for the created project. + + + + This is equivalent to the -w parameter to the pcli createproject command. + + - - Removes a specified promotion group from versioned files. - - - - This task uses the deletegroup PCLI command to remove the promotion group from the versioned files. - - - - - Removes the DEV promotion group from App.ico in the project database specified by the - project-database property. - - - - ]]> - - - - - Removes the DEV promotion group all files in the project database specified by the - project-database property. - - - - ]]> - - + + Removes a specified promotion group from versioned files. + + + + This task uses the deletegroup PCLI command to remove the promotion group from the versioned files. + + + + + Removes the DEV promotion group from App.ico in the project database specified by the + project-database property. + + + + ]]> + + + + + Removes the DEV promotion group all files in the project database specified by the + project-database property. + + + + ]]> + + @@ -8181,55 +8181,55 @@ - - Gets or sets the promotion group to delete. - - - - This is equivalent to the -g parameter to the pcli deletegroup command. - - + + Gets or sets the promotion group to delete. + + + + This is equivalent to the -g parameter to the pcli deletegroup command. + + - - Removes a label from specified versioned files or projects. - - - - This task uses the deletelabel PCLI command to remove the version label from the versioned files. - - - - - Removes the label called My Label from the versioned file called App.ico from the project - database specified by the project-database property. - - - - - - - - ]]> - - - - - Removes the label called My Label from all files at and below both folder1 and folder2 - in the project database specified by the project-database property. - - - - - - - - - ]]> - - + + Removes a label from specified versioned files or projects. + + + + This task uses the deletelabel PCLI command to remove the version label from the versioned files. + + + + + Removes the label called My Label from the versioned file called App.ico from the project + database specified by the project-database property. + + + + + + + + ]]> + + + + + Removes the label called My Label from all files at and below both folder1 and folder2 + in the project database specified by the project-database property. + + + + + + + + + ]]> + + @@ -8238,85 +8238,85 @@ - - Gets or sets the version label to remove. - - - - This is equivalent to the -v parameter to the pcli deletelabel command. - - + + Gets or sets the version label to remove. + + + + This is equivalent to the -v parameter to the pcli deletelabel command. + + - - Deletes folder, projects, versioned items and workspaces in a PVCS repository. - - - - This task uses the delete PCLI command to delete the items. - - - - - Deletes the versioned file called App.ico from the project database specified by the - project-database property. - - - - - - - - ]]> - - - - - Deletes the files called file1.txt and file2.txt from the project called folder in the - project database specified by the project-database property. - - - - - - - - - ]]> - - + + Deletes folder, projects, versioned items and workspaces in a PVCS repository. + + + + This task uses the delete PCLI command to delete the items. + + + + + Deletes the versioned file called App.ico from the project database specified by the + project-database property. + + + + + + + + ]]> + + + + + Deletes the files called file1.txt and file2.txt from the project called folder in the + project database specified by the project-database property. + + + + + + + + + ]]> + + - - Deletes the specified users from the PVCS access control database. - - - - This task uses the deleteuser PCLI command to delete the users. - - - - - Deletes the users called kb, kv and tb from the project database specified by the - project-database property. - - - - - - - - - - ]]> - - + + Deletes the specified users from the PVCS access control database. + + + + This task uses the deleteuser PCLI command to delete the users. + + + + + Deletes the users called kb, kv and tb from the project database specified by the + project-database property. + + + + + + + + + + ]]> + + @@ -8325,59 +8325,59 @@ - - Gets files from a PVCS repository. - - - - This task uses the get PCLI command to get the versioned files from PVCS. - - - - - Gets the versioned file called App.ico from the project database specified by the - project-database property. - - - - - - - - ]]> - - - - - Gets the versioned file called App.ico from the project database specified by the - project-database property. The file is also locked. - - - - - - - - ]]> - - - - - Gets all revisions assigned the SYSTEST promotion group from the project database specified by the - project-database property. The workfiles are touched after the get operation. - - - - - - - - ]]> - - + + Gets files from a PVCS repository. + + + + This task uses the get PCLI command to get the versioned files from PVCS. + + + + + Gets the versioned file called App.ico from the project database specified by the + project-database property. + + + + + + + + ]]> + + + + + Gets the versioned file called App.ico from the project database specified by the + project-database property. The file is also locked. + + + + + + + + ]]> + + + + + Gets all revisions assigned the SYSTEST promotion group from the project database specified by the + project-database property. The workfiles are touched after the get operation. + + + + + + + + ]]> + + @@ -8413,170 +8413,170 @@ - - Constructs and initializes an instance of PVCSGetTask. - + + Constructs and initializes an instance of PVCSGetTask. + - - Gets or sets the base project path. - - - - This is equivalent to the -bp parameter to the pcli get command. - - + + Gets or sets the base project path. + + + + This is equivalent to the -bp parameter to the pcli get command. + + - - Gets or sets an alternative location for workfiles. - - - - This is equivalent to the -a parameter to the pcli get command. - - + + Gets or sets an alternative location for workfiles. + + + + This is equivalent to the -a parameter to the pcli get command. + + - - Gets or sets a value indicating whether revisions involved in the get operation should be locked. - - - - This is equivalent to the -l parameter to the pcli get command. - - + + Gets or sets a value indicating whether revisions involved in the get operation should be locked. + + + + This is equivalent to the -l parameter to the pcli get command. + + - - Gets or sets whether the workfiles should be made writable. - - - - This is equivalent to the -w parameter to the pcli get command. - - + + Gets or sets whether the workfiles should be made writable. + + + + This is equivalent to the -w parameter to the pcli get command. + + - - Gets or sets the maximum date and time of workfiles to retrieve. - - - - This is equivalent to the -d parameter to the pcli get command. - - - If this property has not yet been set, it will return DateTime.MaxValue. - - + + Gets or sets the maximum date and time of workfiles to retrieve. + + + + This is equivalent to the -d parameter to the pcli get command. + + + If this property has not yet been set, it will return DateTime.MaxValue. + + - - Gets or sets a value indicating whether the workfile location for files should be overridden. - - - - This is equivalent to the -o parameter to the pcli get command. - - + + Gets or sets a value indicating whether the workfile location for files should be overridden. + + + + This is equivalent to the -o parameter to the pcli get command. + + - - Gets or sets the promotion group to get. - - - - This is equivalent to the -g parameter to the pcli get command. - - + + Gets or sets the promotion group to get. + + + + This is equivalent to the -g parameter to the pcli get command. + + - - Gets or sets the revision to get against. - - - - This is equivalent to the -r parameter to the pcli get command. - - - If this property has not yet been set, it will return Double.MaxValue. - - + + Gets or sets the revision to get against. + + + + This is equivalent to the -r parameter to the pcli get command. + + + If this property has not yet been set, it will return Double.MaxValue. + + - - Gets or sets a value indicating whether workfiles should be touched after the get. - - - - This is equivalent to the -t parameter to the pcli get command. - - + + Gets or sets a value indicating whether workfiles should be touched after the get. + + + + This is equivalent to the -t parameter to the pcli get command. + + - - Gets or sets a value indicating whether workfiles should only be gotten if they are newer than the - current workfile. - - - - This is equivalent to the -u parameter to the pcli get command (without specifying a - date or time). - - + + Gets or sets a value indicating whether workfiles should only be gotten if they are newer than the + current workfile. + + + + This is equivalent to the -u parameter to the pcli get command (without specifying a + date or time). + + - - Gets or sets the version label to get against. - - - - This is equivalent to the -v parameter to the pcli get command. - - + + Gets or sets the version label to get against. + + + + This is equivalent to the -v parameter to the pcli get command. + + - - Assigns a version label to a revision of the specified versioned files. - - - - This task uses the label PCLI command to label the items. - - - - - Labels all files in the project database specified by the project-database property. The label - applied is Beta. - - - - - - - - ]]> - - - - - Labels revision 1.8 of App.ico as Dodgy in the project database specified by the - project-database property. - - - - - - - - ]]> - - + + Assigns a version label to a revision of the specified versioned files. + + + + This task uses the label PCLI command to label the items. + + + + + Labels all files in the project database specified by the project-database property. The label + applied is Beta. + + + + + + + + ]]> + + + + + Labels revision 1.8 of App.ico as Dodgy in the project database specified by the + project-database property. + + + + + + + + ]]> + + @@ -8588,84 +8588,84 @@ - - Constructs and initializes an instance of PVCSLabel. - + + Constructs and initializes an instance of PVCSLabel. + - - Gets or sets a value indicating whether the label should "float" to the newest revision. - - - - This is equivalent to the -f parameter to the pcli label command. - - + + Gets or sets a value indicating whether the label should "float" to the newest revision. + + + + This is equivalent to the -f parameter to the pcli label command. + + - - Gets or sets the revision to label. - - - - This is equivalent to the -r parameter to the pcli label command. - - - If this property has not yet been set, it will return Double.MaxValue. - - + + Gets or sets the revision to label. + + + + This is equivalent to the -r parameter to the pcli label command. + + + If this property has not yet been set, it will return Double.MaxValue. + + - - Gets or sets the version label to assign. - - - - This is equivalent to the -v parameter to the pcli label command. - - + + Gets or sets the version label to assign. + + + + This is equivalent to the -v parameter to the pcli label command. + + - - Locks a revision of the specified versioned files. - - - - This task uses the lock PCLI command to lock the versioned files. - - - - - Locks App.ico in the project database specified by the project-database property. - - - - - - - - ]]> - - - - - Locks all files at and below folder in the project database specified by the project-database - property. - - - - - - - - ]]> - - + + Locks a revision of the specified versioned files. + + + + This task uses the lock PCLI command to lock the versioned files. + + + + + Locks App.ico in the project database specified by the project-database property. + + + + + + + + ]]> + + + + + Locks all files at and below folder in the project database specified by the project-database + property. + + + + + + + + ]]> + + @@ -8686,111 +8686,111 @@ - - Constructs and initializes an instance of PVCSLock. - + + Constructs and initializes an instance of PVCSLock. + - - Gets or sets a value indicating whether locking files will take place if checking in those files would - result in a branch. - - - - This is equivalent to the -nb parameter to the pcli lock command. - - + + Gets or sets a value indicating whether locking files will take place if checking in those files would + result in a branch. + + + + This is equivalent to the -nb parameter to the pcli lock command. + + - - Gets or sets a value indicating whether already locked revisions will be locked. - - - - This is equivalent to the -nm parameter to the pcli lock command. - - + + Gets or sets a value indicating whether already locked revisions will be locked. + + + + This is equivalent to the -nm parameter to the pcli lock command. + + - - Gets or sets the promotion group to assign the locked revision. - - - - This is equivalent to the -g parameter to the pcli lock command. - - + + Gets or sets the promotion group to assign the locked revision. + + + + This is equivalent to the -g parameter to the pcli lock command. + + - - Gets or sets the revision to lock. - - - - This is equivalent to the -r parameter to the pcli lock command. - - - If this property has not yet been set, it will return Double.MaxValue. - - + + Gets or sets the revision to lock. + + + + This is equivalent to the -r parameter to the pcli lock command. + + + If this property has not yet been set, it will return Double.MaxValue. + + - - Gets or sets a value indicating whether revisions will be locked even if that will result in a branch - upon check in. - - - - This is equivalent to the -yb parameter to the pcli lock command. - - + + Gets or sets a value indicating whether revisions will be locked even if that will result in a branch + upon check in. + + + + This is equivalent to the -yb parameter to the pcli lock command. + + - - Gets or sets a value indicating whether revisions will be locked even if that will result in multiple - locks against the same revision. - - - - This is equivalent to the -ym parameter to the pcli lock command. - - + + Gets or sets a value indicating whether revisions will be locked even if that will result in multiple + locks against the same revision. + + + + This is equivalent to the -ym parameter to the pcli lock command. + + - - Promotes versioned files to the next promotion group. - - - - This task uses the promotegroup PCLI command to promote versioned files. - - - - - Promotes all files in the root of the project database specified by the project-database property. - The files are promoted from the DEV promotion group to the next. Promotion will not take place across - branches. - - - - ]]> - - - - - Promotes all files in the project database specified by the project-database property. The files are - promoted from the SYSTEST promotion group to the next. Promotion will take place across branches. - - - - ]]> - - + + Promotes versioned files to the next promotion group. + + + + This task uses the promotegroup PCLI command to promote versioned files. + + + + + Promotes all files in the root of the project database specified by the project-database property. + The files are promoted from the DEV promotion group to the next. Promotion will not take place across + branches. + + + + ]]> + + + + + Promotes all files in the project database specified by the project-database property. The files are + promoted from the SYSTEST promotion group to the next. Promotion will take place across branches. + + + + ]]> + + @@ -8802,83 +8802,83 @@ - - Gets or sets a value indicating whether the promotion may occur across branches. - - - - This is equivalent to the -nb and -yb parameters to the pcli promotegroup command. - - + + Gets or sets a value indicating whether the promotion may occur across branches. + + + + This is equivalent to the -nb and -yb parameters to the pcli promotegroup command. + + - - Gets or sets the promotion group to be promoted. - - - - This is equivalent to the -g parameter to the pcli promotegroup command. - - + + Gets or sets the promotion group to be promoted. + + + + This is equivalent to the -g parameter to the pcli promotegroup command. + + - - Puts files into a PVCS repository. - - - - This task uses the put PCLI command to put the files into PVCS. - - - - - Puts the file called App.ico into the project database specified by the project-database - property. The description for the change is Added more colour. - - - - - - - - ]]> - - - - - Puts all files into the project database specified by the project-database property. The description - for the changes is Major changes. Even if the workfiles have not been changed, they will result in a - new revision in PVCS. - - - - - - - - ]]> - - - - - Puts file.txt and all files in folder into the project database specified by the - project-database property. The description for the changes is Some changes. A new branch is - forcibly created via the forcebranch attribute. Leading and trailing whitespace is ignored when - determining whether the workfile has been altered. - - - - - - - - - ]]> - - + + Puts files into a PVCS repository. + + + + This task uses the put PCLI command to put the files into PVCS. + + + + + Puts the file called App.ico into the project database specified by the project-database + property. The description for the change is Added more colour. + + + + + + + + ]]> + + + + + Puts all files into the project database specified by the project-database property. The description + for the changes is Major changes. Even if the workfiles have not been changed, they will result in a + new revision in PVCS. + + + + + + + + ]]> + + + + + Puts file.txt and all files in folder into the project database specified by the + project-database property. The description for the changes is Some changes. A new branch is + forcibly created via the forcebranch attribute. Leading and trailing whitespace is ignored when + determining whether the workfile has been altered. + + + + + + + + + ]]> + + @@ -8926,42 +8926,42 @@ - - Constructs and initializes an instance of PVCSPut. - + + Constructs and initializes an instance of PVCSPut. + - - Gets or sets the base project path. - - - - This is equivalent to the -bp parameter to the pcli put command. - - + + Gets or sets the base project path. + + + + This is equivalent to the -bp parameter to the pcli put command. + + - - Gets or sets a value indicating whether unchanged workfiles should be checked in. - - - - This is equivalent to the -yf parameter to the pcli put command. - - + + Gets or sets a value indicating whether unchanged workfiles should be checked in. + + + + This is equivalent to the -yf parameter to the pcli put command. + + - - Gets or sets the description to be applied to the checked in revisions. - - - - This is equivalent to the -m parameter to the pcli put command. - - + + Gets or sets the description to be applied to the checked in revisions. + + + + This is equivalent to the -m parameter to the pcli put command. + + @@ -8975,78 +8975,78 @@ - - Gets or sets a value indicating whether a new branch will be created. - - - - This is equivalent to the -fb parameter to the pcli put command. - - + + Gets or sets a value indicating whether a new branch will be created. + + + + This is equivalent to the -fb parameter to the pcli put command. + + - - Gets or sets a value indicating whether leading and trailing spaces should be ignored when determining - whether the revision has changed. - - - - This is equivalent to the -b parameter to the pcli put command. - - + + Gets or sets a value indicating whether leading and trailing spaces should be ignored when determining + whether the revision has changed. + + + + This is equivalent to the -b parameter to the pcli put command. + + - - Gets or sets a value indicating whether the workfile should kept in its original state. - - - - This is equivalent to the -k parameter to the pcli put command. - - + + Gets or sets a value indicating whether the workfile should kept in its original state. + + + + This is equivalent to the -k parameter to the pcli put command. + + - - Gets or sets an alternative location for workfiles. - - - - This is equivalent to the -a parameter to the pcli put command. - - + + Gets or sets an alternative location for workfiles. + + + + This is equivalent to the -a parameter to the pcli put command. + + - - Gets or sets a value indicating the files should be locked after the put operation. - - - - This is equivalent to the -l parameter to the pcli put command. - - + + Gets or sets a value indicating the files should be locked after the put operation. + + + + This is equivalent to the -l parameter to the pcli put command. + + - - Gets or sets a value indicating whether the workfile location for files should be overridden. - - - - This is equivalent to the -o parameter to the pcli put command. - - + + Gets or sets a value indicating whether the workfile location for files should be overridden. + + + + This is equivalent to the -o parameter to the pcli put command. + + - - Gets or sets the promotion in use. If a promotion group is specified, this option identifies the - promotion group to which the revision is currently assigned. If no promotion group is specified (ie. - this property is set to an empty string), this option indicates that one is not identifying the - revision by promotion group. - - - - This is equivalent to the -g parameter to the pcli put command. - - + + Gets or sets the promotion in use. If a promotion group is specified, this option identifies the + promotion group to which the revision is currently assigned. If no promotion group is specified (ie. + this property is set to an empty string), this option indicates that one is not identifying the + revision by promotion group. + + + + This is equivalent to the -g parameter to the pcli put command. + + @@ -9060,75 +9060,75 @@ - - Gets or sets the revision number to use for the new revision. - - - - This is equivalent to the -r parameter to the pcli put command. - - + + Gets or sets the revision number to use for the new revision. + + + + This is equivalent to the -r parameter to the pcli put command. + + - - Gets or sets a value indicating whether the same description should be used for all versioned items. - This is true by default. - - - - This is equivalent to the -ym parameter to the pcli put command. - - + + Gets or sets a value indicating whether the same description should be used for all versioned items. + This is true by default. + + + + This is equivalent to the -ym parameter to the pcli put command. + + - - Gets or sets the version label to assign to the new revisions. - - - - This is equivalent to the -v parameter to the pcli put command. - - + + Gets or sets the version label to assign to the new revisions. + + + + This is equivalent to the -v parameter to the pcli put command. + + - - Renames a label in a PVCS repository. - - - - This task uses the renamelabel PCLI command to rename the label. - - - - - Renames the label on App.ico from Beater to Beta in the project database specified by - the project-database property. - - - - - - - - ]]> - - - - - Renames the label on all files from Alfa to Alpha in the project database specified by the - project-database property. - - - - - - - - ]]> - - + + Renames a label in a PVCS repository. + + + + This task uses the renamelabel PCLI command to rename the label. + + + + + Renames the label on App.ico from Beater to Beta in the project database specified by + the project-database property. + + + + + + + + ]]> + + + + + Renames the label on all files from Alfa to Alpha in the project database specified by the + project-database property. + + + + + + + + ]]> + + @@ -9140,63 +9140,63 @@ - - Gets or sets the existing label. - - - - This is equivalent to the -vf parameter to the pcli renamelabel command. - - + + Gets or sets the existing label. + + + + This is equivalent to the -vf parameter to the pcli renamelabel command. + + - - Gets or sets the new label. - - - - This is equivalent to the -vt parameter to the pcli renamelabel command. - - + + Gets or sets the new label. + + + + This is equivalent to the -vt parameter to the pcli renamelabel command. + + - - Unlocks revisions of versioned files in a PVCS repository. - - - - This task uses the unlock PCLI command to perform the unlock operation. - - - - - Unlocks App.ico in the project database specified by the project-database property. - - - - - - - - ]]> - - - - - Unlocks all files in the project specified by the project-database property. Locks by all users are - removed. - - - - - - - - ]]> - - + + Unlocks revisions of versioned files in a PVCS repository. + + + + This task uses the unlock PCLI command to perform the unlock operation. + + + + + Unlocks App.ico in the project database specified by the project-database property. + + + + + + + + ]]> + + + + + Unlocks all files in the project specified by the project-database property. Locks by all users are + removed. + + + + + + + + ]]> + + @@ -9208,32 +9208,32 @@ - - Constructs and initializes an instance of PVCSUnlock. - + + Constructs and initializes an instance of PVCSUnlock. + - - Gets or sets the revision number to use for the new revision. - - - - This is equivalent to the -r parameter to the pcli unlock command. - - + + Gets or sets the revision number to use for the new revision. + + + + This is equivalent to the -r parameter to the pcli unlock command. + + - - Gets or sets the unlock mode for the operation. - - - - This is equivalent to the -u parameter to the pcli unlock command. - - + + Gets or sets the unlock mode for the operation. + + + + This is equivalent to the -u parameter to the pcli unlock command. + + @@ -9247,51 +9247,51 @@ - - All locks held by the current user are removed. - + + All locks held by the current user are removed. + - - All locks held by a specified user are removed. - + + All locks held by a specified user are removed. + - - All locks held by all users are removed. - + + All locks held by all users are removed. + - - Used to add files to a Visual SourceSafe database. If the file is currently - in the SourceSafe database a message will be logged but files will continue to be added. - - - This version does not support recursive adds. Only adds in the root directory will be added to the - SourceSafe database. - - - - - - - - ]]> - + + Used to add files to a Visual SourceSafe database. If the file is currently + in the SourceSafe database a message will be logged but files will continue to be added. + + + This version does not support recursive adds. Only adds in the root directory will be added to the + SourceSafe database. + + + + + + + + ]]> + - - The base abstract class for all Visual Source Safe Tasks. - Provides the core attributes, and functionality for opening an item - in a Visual Source Safe database. - + + The base abstract class for all Visual Source Safe Tasks. + Provides the core attributes, and functionality for opening an item + in a Visual Source Safe database. + - - Opens the Source Safe database and sets the reference to the specified - item and version. - + + Opens the Source Safe database and sets the reference to the specified + item and version. + @@ -9305,20 +9305,20 @@ - - The path to the folder that contains "srcsafe.ini". - + + The path to the folder that contains "srcsafe.ini". + - - The Visual SourceSafe project or file path you wish the perform the - action on (starting with "$/"). - + + The Visual SourceSafe project or file path you wish the perform the + action on (starting with "$/"). + - - The password to use to login to the SourceSafe database. - + + The password to use to login to the SourceSafe database. + @@ -9337,220 +9337,220 @@ - - A version of the path to reference. Accepts multiple forms, - including the label, version number, or date of the version. - If omitted, the latest version is used. - + + A version of the path to reference. Accepts multiple forms, + including the label, version number, or date of the version. + If omitted, the latest version is used. + - - Main task execution method - + + Main task execution method + - - Create project hierarchy in vss - - - + + Create project hierarchy in vss + + + - - Places a comment on all files added into the SourceSafe repository. - + + Places a comment on all files added into the SourceSafe repository. + - - List of files that should be added to SourceSafe. - + + List of files that should be added to SourceSafe. + - - Defines how the local timestamp of files retrieved from a SourceSafe - database should be set. - + + Defines how the local timestamp of files retrieved from a SourceSafe + database should be set. + - - The timestamp of the local file is set to the current date and time. - + + The timestamp of the local file is set to the current date and time. + - - The timestamp of the local file is set to the file's last - modification date and time. - + + The timestamp of the local file is set to the file's last + modification date and time. + - - The timestamp of the local file is set to the date and time that - the file was last checked in to the database. - + + The timestamp of the local file is set to the date and time that + the file was last checked in to the database. + - - Used to checkin files into Visual Source Safe. - - - Checkin all files from an absolute directory to a local sourcesafe database. - - ]]> - - - Checkin a file from a relative directory to a remote sourcesafe database. - - ]]> - + + Used to checkin files into Visual Source Safe. + + + Checkin all files from an absolute directory to a local sourcesafe database. + + ]]> + + + Checkin a file from a relative directory to a remote sourcesafe database. + + ]]> + - - The comment for the new version. - + + The comment for the new version. + - - The path to the local working directory. - + + The path to the local working directory. + - - Determines whether to perform a recursive checkin. - The default is . - + + Determines whether to perform a recursive checkin. + The default is . + - - Determines whether to leave the file(s) as writable. - The default is . - + + Determines whether to leave the file(s) as writable. + The default is . + - - Task used to checkout files from Visual Source Safe. - - - Checkout the latest files from a local sourcesafe database. - - ]]> - - - Checkout a file from a remote sourcesafe database. Put it in a relative directory. - - ]]> - + + Task used to checkout files from Visual Source Safe. + + + Checkout the latest files from a local sourcesafe database. + + ]]> + + + Checkout a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + - - The path to the local working directory. - + + The path to the local working directory. + - - Determines whether to perform a recursive checkout. - The default is . - + + Determines whether to perform a recursive checkout. + The default is . + - - Determines whether to leave the file(s) as writable. - The default is . - + + Determines whether to leave the file(s) as writable. + The default is . + - - Set the behavior for timestamps of local files. The default is - . - + + Set the behavior for timestamps of local files. The default is + . + - - Used to delete or Destroy files or projects in Visual Source Safe. - - - Delete a project from a local sourcesafe database. - - ]]> - - - Delete a file from the remote sourcesafe database. - - ]]> - - - Destroy a project from a local sourcesafe database. - - ]]> - - - Destroy a file from the remote sourcesafe database. - - ]]> - + + Used to delete or Destroy files or projects in Visual Source Safe. + + + Delete a project from a local sourcesafe database. + + ]]> + + + Delete a file from the remote sourcesafe database. + + ]]> + + + Destroy a project from a local sourcesafe database. + + ]]> + + + Destroy a file from the remote sourcesafe database. + + ]]> + @@ -9559,129 +9559,129 @@ - - Determines whether or not the item is Destroyed. - The default is . - + + Determines whether or not the item is Destroyed. + The default is . + - - Used to generate differences in a vss database. It will show all changes to a project - after the specified label. - - - This only shows differences between the current version and the version specified. - - - - ]]> - + + Used to generate differences in a vss database. It will show all changes to a project + after the specified label. + + + This only shows differences between the current version and the version specified. + + + + ]]> + - - The value of the label to compare to. Required. - + + The value of the label to compare to. Required. + - - The output file to generate (xml) - + + The output file to generate (xml) + - - Used to retrieve an item or project from a Visual Source Safe database. - - - Get the latest files from a local sourcesafe database. - - ]]> - - - Get the latest version of a file from a remote sourcesafe database. Put it in a relative directory. - - ]]> - - - Get the latest version of a file from a remote sourcesafe database. Remove any deleted files from local image. - - ]]> - + + Used to retrieve an item or project from a Visual Source Safe database. + + + Get the latest files from a local sourcesafe database. + + ]]> + + + Get the latest version of a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + + + Get the latest version of a file from a remote sourcesafe database. Remove any deleted files from local image. + + ]]> + - - Checks to see if we should remove local copies of deleted files, and starts - the scan. - + + Checks to see if we should remove local copies of deleted files, and starts + the scan. + - - Scans the Project Item for deleted files and removes their local - copies from the local image of the project. Obeys the recursive setting - (and thus optionally calls itself recursively). - - The VSS Item (project) to check for deletions - The path to the folder of the item being processed + + Scans the Project Item for deleted files and removes their local + copies from the local image of the project. Obeys the recursive setting + (and thus optionally calls itself recursively). + + The VSS Item (project) to check for deletions + The path to the folder of the item being processed - - The path to the local working directory. - + + The path to the local working directory. + - - Determines whether to perform the get recursively. - The default is . - + + Determines whether to perform the get recursively. + The default is . + - - Determines whether to replace writable files. - The default is . - + + Determines whether to replace writable files. + The default is . + - - Determines whether the files will be writable. - The default is . - + + Determines whether the files will be writable. + The default is . + @@ -9691,94 +9691,94 @@ - - Determines whether the timestamp on the local copy - will be the modification time (if false or omitted, - the checkout time will be used) - + + Determines whether the timestamp on the local copy + will be the modification time (if false or omitted, + the checkout time will be used) + - - Set the behavior for timestamps of local files. The default is - . - + + Set the behavior for timestamps of local files. The default is + . + - - Generates an XML file showing all changes made to a Visual SourceSafe - project/file between specified labels or dates (by a given user). - - - - Write all changes between "Release1" and "Release2" to XML file - "changelog.xml". - - - - ]]> - - - - - Write all changes between January 1st 2004 and March 31st 2004 to XML - file "history.xml". - - - - ]]> - - + + Generates an XML file showing all changes made to a Visual SourceSafe + project/file between specified labels or dates (by a given user). + + + + Write all changes between "Release1" and "Release2" to XML file + "changelog.xml". + + + + ]]> + + + + + Write all changes between January 1st 2004 and March 31st 2004 to XML + file "history.xml". + + + + ]]> + + - - The value of the label to start comparing to. If it is not included, - the compare will start with the very first history item. - + + The value of the label to start comparing to. If it is not included, + the compare will start with the very first history item. + - - The value of the label to compare up to. If it is not included, - the compare will end with the last history item. - + + The value of the label to compare up to. If it is not included, + the compare will end with the last history item. + - - Start date for comparison. - + + Start date for comparison. + - - End date for comparison. - + + End date for comparison. + - - Output file to save history to (as XML). - + + Output file to save history to (as XML). + - - Determines whether to perform the comparison recursively. - The default is . - + + Determines whether to perform the comparison recursively. + The default is . + - - Name of the user whose changes you want to see. - + + Name of the user whose changes you want to see. + @@ -9787,124 +9787,124 @@ - - Override to avoid exposing the corresponding attribute to build - authors. - + + Override to avoid exposing the corresponding attribute to build + authors. + - - Override to avoid exposing the corresponding attribute to build - authors. - + + Override to avoid exposing the corresponding attribute to build + authors. + - - Used to apply a label to a Visual Source Safe item. - - - Label all files in a local sourcesafe database. (Automatically applies the label recursively) - - ]]> - - - Label a file in a remote sourcesafe database. - - ]]> - + + Used to apply a label to a Visual Source Safe item. + + + Label all files in a local sourcesafe database. (Automatically applies the label recursively) + + ]]> + + + Label a file in a remote sourcesafe database. + + ]]> + - - The label comment. - + + The label comment. + - - The name of the label. - + + The name of the label. + - - Task is used to undo a checkout from SourceSafe - - - Undo a checkout of all of the files from a local sourcesafe database. - - ]]> - - - Checkout a file from a remote sourcesafe database. Put it in a relative directory. - - ]]> - + + Task is used to undo a checkout from SourceSafe + + + Undo a checkout of all of the files from a local sourcesafe database. + + ]]> + + + Checkout a file from a remote sourcesafe database. Put it in a relative directory. + + ]]> + - - The path to the local working directory. This is required if you wish to - have your local file replaced with the latest version from SourceSafe. - + + The path to the local working directory. This is required if you wish to + have your local file replaced with the latest version from SourceSafe. + - - Determines whether to perform a recursive undo of the checkout. - The default is . - + + Determines whether to perform a recursive undo of the checkout. + The default is . + - - Allows creation of view labels in StarTeam repositories. - - - Often when building projects you wish to label the source control repository. - By default this task creates view labels with the build option turned on. - This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel - You need to have the StarTeam SDK installed for this task to function correctly. - - - Creates a label in a StarTeam repository. - - - - - ]]> - - + + Allows creation of view labels in StarTeam repositories. + + + Often when building projects you wish to label the source control repository. + By default this task creates view labels with the build option turned on. + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel + You need to have the StarTeam SDK installed for this task to function correctly. + + + Creates a label in a StarTeam repository. + + + + + ]]> + + @@ -9924,32 +9924,32 @@ Steve Cohen - The username of the connection + The username of the connection - The username of the connection + The username of the connection - name of Starteam server to connect to + name of Starteam server to connect to - port of Starteam server to connect to + port of Starteam server to connect to - name of Starteam project to connect to + name of Starteam project to connect to - name of Starteam view to connect to + name of Starteam view to connect to - The starteam server through which all activities will be done. + The starteam server through which all activities will be done. - - Derived classes must override this method to instantiate a view configured appropriately to its task. - - the unconfigured View - the view appropriately configured. + + Derived classes must override this method to instantiate a view configured appropriately to its task. + + the unconfigured View + the view appropriately configured. @@ -9959,9 +9959,9 @@ - Returns the name of the user or a blank string if the user is not found. - a user's ID - the name of the user + Returns the name of the user or a blank string if the user is not found. + a user's ID + the name of the user @@ -10039,39 +10039,39 @@ - The name of the label to be set in Starteam. + The name of the label to be set in Starteam. - The label description to be set in Starteam. + The label description to be set in Starteam. - Is the label being created a build label. + Is the label being created a build label. - If set the datetime to set the label as of. + If set the datetime to set the label as of. - Kludgy flag to keep track if date has been set. - Please kill this if you can. Here based on experiences I have had with VB.NET + Kludgy flag to keep track if date has been set. + Please kill this if you can. Here based on experiences I have had with VB.NET - Does user wish to make a revision label? + Does user wish to make a revision label? - - Override of base-class abstract function creates an appropriately configured view. - For labels this a view configured as of this.lastBuild. - - the unconfigured View - the snapshot View appropriately configured. + + Override of base-class abstract function creates an appropriately configured view. + For labels this a view configured as of this.lastBuild. + + the unconfigured View + the snapshot View appropriately configured. - - The name to be given to the label; required. - + + The name to be given to the label; required. + - Should label be marked build : default is true + Should label be marked build : default is true @@ -10084,7 +10084,7 @@ - Optional description of the label to be stored in the StarTeam project. + Optional description of the label to be stored in the StarTeam project. @@ -10189,28 +10189,28 @@ - - Locate the versionnumber.xml file in the repository. If it - is not present, the file is created. The file is checked out - exclusively for editing. - - StarTeam view we are working with. - - StarTeam file handle containing version xml. - + + Locate the versionnumber.xml file in the repository. If it + is not present, the file is created. The file is checked out + exclusively for editing. + + StarTeam view we are working with. + + StarTeam file handle containing version xml. + - - Creates the versionumber.xml file in the repository. - - StarTeam folder desired to put the versionnumber.xml files into - StarTeam File handle to the created file. + + Creates the versionumber.xml file in the repository. + + StarTeam folder desired to put the versionnumber.xml files into + StarTeam File handle to the created file. - - Allows user to specify the filename where the version xml is stored. - The default is versionnumber.xml. - + + Allows user to specify the filename where the version xml is stored. + The default is versionnumber.xml. + @@ -10294,15 +10294,15 @@ - - Helper method calls on the StarTeam API to retrieve an ID number for the specified view, corresponding to this.label. - - The Label identifier or -1 if no label was provided. + + Helper method calls on the StarTeam API to retrieve an ID number for the specified view, corresponding to this.label. + + The Label identifier or -1 if no label was provided. - Derived classes must override this class to define actual processing to be performed on each folder in the tree defined for the task - the StarTeam folderto be visited - the local mapping of rootStarteamFolder + Derived classes must override this class to define actual processing to be performed on each folder in the tree defined for the task + the StarTeam folderto be visited + the local mapping of rootStarteamFolder @@ -10312,16 +10312,16 @@ - - Gets the collection of the local file names in the supplied directory. - We need to check this collection against what we find in Starteam to - understand what we need to do in order to synch with the repository. - - - The goal is to keep track of which local files are not controlled by StarTeam. - - Local folder to scan - hashtable whose keys represent a file or directory in localFolder. + + Gets the collection of the local file names in the supplied directory. + We need to check this collection against what we find in Starteam to + understand what we need to do in order to synch with the repository. + + + The goal is to keep track of which local files are not controlled by StarTeam. + + Local folder to scan + hashtable whose keys represent a file or directory in localFolder. @@ -10349,35 +10349,35 @@ Regular expresssion for searching matching file names - - Convert path patterns to regularexpression patterns. Stored in the given string collection. - - collection of paths to expand into regular expressions - collection to store the given regularexpression patterns + + Convert path patterns to regularexpression patterns. Stored in the given string collection. + + collection of paths to expand into regular expressions + collection to store the given regularexpression patterns - - Root StarTeam folder to begin operations on. Defaults to the root of the view. - + + Root StarTeam folder to begin operations on. Defaults to the root of the view. + - - Root Local folder where files are to be checkout/in or manipulated. Defaults to the StarTeam default folder. - + + Root Local folder where files are to be checkout/in or manipulated. Defaults to the StarTeam default folder. + - - Accepts comma de-limited list of expressions to include in tree operations. - If nothing is set ALL filespecs are included. - - - Match all C# files in the directory - *.cs - - - Expressions should be just for filename matching. - Technically relative directory information is accepted but will never match. - + + Accepts comma de-limited list of expressions to include in tree operations. + If nothing is set ALL filespecs are included. + + + Match all C# files in the directory + *.cs + + + Expressions should be just for filename matching. + Technically relative directory information is accepted but will never match. + @@ -10397,9 +10397,9 @@ - - Default : true - should tasks recurse through tree. - + + Default : true - should tasks recurse through tree. + @@ -10413,70 +10413,70 @@ - - Label used for checkout. If no label is set latest state of repository is checked out. - - - The label must exist in starteam or an exception will be thrown. - + + Label used for checkout. If no label is set latest state of repository is checked out. + + + The label must exist in starteam or an exception will be thrown. + - classes used to access static values + classes used to access static values - Facotry classes used when files and folders are added to the repository. Populated when adduncontrolled is enabled. + Facotry classes used when files and folders are added to the repository. Populated when adduncontrolled is enabled. - will folders be created for new items found with the checkin. + will folders be created for new items found with the checkin. - The comment which will be stored with the checkin. + The comment which will be stored with the checkin. - holder for the add Uncontrolled attribute. If true, all local files not in StarTeam will be added to the repository. + holder for the add Uncontrolled attribute. If true, all local files not in StarTeam will be added to the repository. - This attribute tells whether unlocked files on checkin (so that other users may access them) checkout or to - leave the checkout status alone (default). - + This attribute tells whether unlocked files on checkin (so that other users may access them) checkout or to + leave the checkout status alone (default). + - - Override of base-class abstract function creates an appropriately configured view. For checkins this is - always the current or "tip" view. - - the unconfigured View - the snapshot View appropriately configured. + + Override of base-class abstract function creates an appropriately configured view. For checkins this is + always the current or "tip" view. + + the unconfigured View + the snapshot View appropriately configured. - Implements base-class abstract function to define tests for any preconditons required by the task + Implements base-class abstract function to define tests for any preconditons required by the task - Implements base-class abstract function to perform the checkin operation on the files in each folder of the tree. - the StarTeam folder to which files will be checked in - local folder from which files will be checked in + Implements base-class abstract function to perform the checkin operation on the files in each folder of the tree. + the StarTeam folder to which files will be checked in + local folder from which files will be checked in - Adds to the StarTeam repository everything on the local machine that is not currently in the repository. - Hasttable containing files missing in the repository for the current folder - StarTeam folder to which these items are to be added. + Adds to the StarTeam repository everything on the local machine that is not currently in the repository. + Hasttable containing files missing in the repository for the current folder + StarTeam folder to which these items are to be added. - Adds the file or directpry to the repository. - StarTeam folder underwhich items will be added. - the file or directory to add - true if the file was successfully added otherwise false. + Adds the file or directpry to the repository. + StarTeam folder underwhich items will be added. + the file or directory to add + true if the file was successfully added otherwise false. - - if true, any files or folders NOT in StarTeam will be added to the repository. Defaults to "false". - + + if true, any files or folders NOT in StarTeam will be added to the repository. Defaults to "false". + - - Set to do an unlocked checkout; optional, default is false; - If true, file will be unlocked so that other users may change it. If false, lock status will not change. - + + Set to do an unlocked checkout; optional, default is false; + If true, file will be unlocked so that other users may change it. If false, lock status will not change. + @@ -10503,130 +10503,130 @@ - holder for the createDirs property. + holder for the createDirs property. - holder for the deleteUncontrolled property. + holder for the deleteUncontrolled property. - holder for the lockstatus property. + holder for the lockstatus property. - - Override of base-class abstract function creates an appropriately configured view for checkout. - If a label is specified it is used otherwise the current view of the repository is used. - - the unconfigured StarTeam View - the snapshot StarTeam View appropriately configured. + + Override of base-class abstract function creates an appropriately configured view for checkout. + If a label is specified it is used otherwise the current view of the repository is used. + + the unconfigured StarTeam View + the snapshot StarTeam View appropriately configured. - Implements base-class abstract function to define tests for any preconditons required by the task + Implements base-class abstract function to define tests for any preconditons required by the task - - Implements base-class abstract function to perform the checkout operation on the files in each folder of the tree. - - the StarTeam folder from which files to be checked out - the local mapping of the starteam folder + + Implements base-class abstract function to perform the checkout operation on the files in each folder of the tree. + + the StarTeam folder from which files to be checked out + the local mapping of the starteam folder - - Deletes everything on the local machine that is not in the repository. - - Hashtable containing filenames to be deleted + + Deletes everything on the local machine that is not in the repository. + + Hashtable containing filenames to be deleted - Utility method to delete the file (and it's children) from the local drive. - the file or directory to delete. - was the file successfully deleted + Utility method to delete the file (and it's children) from the local drive. + the file or directory to delete. + was the file successfully deleted - - Default : true - Create directories that are in the Starteam repository even if they are empty. - + + Default : true - Create directories that are in the Starteam repository even if they are empty. + - - Not fully tested CAREFUL Default : false - Should all local files NOT in StarTeam be deleted? - + + Not fully tested CAREFUL Default : false - Should all local files NOT in StarTeam be deleted? + - - What type of lock to apply to files checked out. - - - LockType - - - unchanged - default: do not make any changes to the lock state of items. - - - exclusive - Exclusively lock items. No other users can update the object while it is exclusively locked. - - - nonexclusive - Put a non-exclusive lock on the item. - - - unlocked - Remove locks from all items checked out. This accompanied by force would effectively override a lock and replace local contents with the current version. - - - + + What type of lock to apply to files checked out. + + + LockType + + + unchanged + default: do not make any changes to the lock state of items. + + + exclusive + Exclusively lock items. No other users can update the object while it is exclusively locked. + + + nonexclusive + Put a non-exclusive lock on the item. + + + unlocked + Remove locks from all items checked out. This accompanied by force would effectively override a lock and replace local contents with the current version. + + + - - Allows creation of view labels in StarTeam repositories. - - - Often when building projects you wish to label the source control repository. - By default this task creates view labels with the build option turned on. - This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel - You need to have the StarTeam SDK installed for this task to function correctly. - - - Creates a label in a StarTeam repository. - - - - - ]]> - - + + Allows creation of view labels in StarTeam repositories. + + + Often when building projects you wish to label the source control repository. + By default this task creates view labels with the build option turned on. + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlabel + You need to have the StarTeam SDK installed for this task to function correctly. + + + Creates a label in a StarTeam repository. + + + + + ]]> + + - - This method does the work of creating the new view and checking it - into Starteam. - + + This method does the work of creating the new view and checking it + into Starteam. + - - List items in StarTeam repositories. - - - This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlist - You need to have the StarTeam SDK installed for this task to function correctly. - - - Lists all files in a StarTeam repository. - - - - - ]]> - - + + List items in StarTeam repositories. + + + This task was ported from the Ant task http://jakarta.apache.org/ant/manual/OptionalTasks/starteam.html#stlist + You need to have the StarTeam SDK installed for this task to function correctly. + + + Lists all files in a StarTeam repository. + + + + + ]]> + + @@ -10637,59 +10637,59 @@ the snapshot View appropriately configured. - Required base-class abstract function implementation is a no-op here. + Required base-class abstract function implementation is a no-op here. - Implements base-class abstract function to perform the checkout - operation on the files in each folder of the tree. - the StarTeam folder from which files to be checked out - the local mapping of rootStarteamFolder + Implements base-class abstract function to perform the checkout + operation on the files in each folder of the tree. + the StarTeam folder from which files to be checked out + the local mapping of rootStarteamFolder - - Processes Surround SCM batch files. - - - Processes the batch commands found in the input file. Each line in the - input file should contain a single Surround SCM command including proper - command line options. The sscm command, Surround SCM server address, - port number, username and password are not required for each command line. - - - - Run the batch file ${src}/sscm.batch on the server at localhost, - port 4900 with username 'administrator' and a blank password. All script - output is directed to the console. - - - <sscmbatch - serverconnect="localhost:4900" - serverlogin="administrator:" - input="${src}/sscm.batch" - /> - - - - - Run the batch file ${src}/sscm.batch on the server at localhost, - port 4900 with username 'administrator' and a blank password. All script - output is redirected to ${dist}/sscm.batch.out. - - - <sscmbatch - serverconnect="localhost:4900" - serverconnect="administrator:" - input="${src}/sscm.batch" - output="${dist}/sscm.batch.out" - /> - - + + Processes Surround SCM batch files. + + + Processes the batch commands found in the input file. Each line in the + input file should contain a single Surround SCM command including proper + command line options. The sscm command, Surround SCM server address, + port number, username and password are not required for each command line. + + + + Run the batch file ${src}/sscm.batch on the server at localhost, + port 4900 with username 'administrator' and a blank password. All script + output is directed to the console. + + + <sscmbatch + serverconnect="localhost:4900" + serverlogin="administrator:" + input="${src}/sscm.batch" + /> + + + + + Run the batch file ${src}/sscm.batch on the server at localhost, + port 4900 with username 'administrator' and a blank password. All script + output is redirected to ${dist}/sscm.batch.out. + + + <sscmbatch + serverconnect="localhost:4900" + serverconnect="administrator:" + input="${src}/sscm.batch" + output="${dist}/sscm.batch.out" + /> + + - - Surround SCM - abstract task base. - + + Surround SCM + abstract task base. + @@ -10699,31 +10699,31 @@ The to write the task-specific arguments to. - - The address and port number of the Surround SCM server host computer. - Format is server:port. If not entered, the last saved connection - parameters are used. - + + The address and port number of the Surround SCM server host computer. + Format is server:port. If not entered, the last saved connection + parameters are used. + - - The username and password used to login to the Surround SCM server. - Format is username:password. If not entered, the last saved login - parameters are used. - + + The username and password used to login to the Surround SCM server. + Format is username:password. If not entered, the last saved login + parameters are used. + - - Override ExeName paramater to sscm.exe for Surround SCM. - + + Override ExeName paramater to sscm.exe for Surround SCM. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + @@ -10733,74 +10733,74 @@ The to write the task-specific arguments to. - - File to read commands from. - + + File to read commands from. + - - File to direct all standard output to. When executing commands from - the input file, all output is written to this file instead of being - displayed on the screen. - + + File to direct all standard output to. When executing commands from + the input file, all output is written to this file instead of being + displayed on the screen. + - - Creates new branches for Surround SCM. - - - - Create a new Baseline branch 'Widget 1.0' from branch 'Mainline', - repository 'Mainline/Widget' with the given comments. All files - are branched at the tip version. - - - <sscmbranch - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="Widget 1.0" - repository="Mainline/Widget" - parent="Mainline" - comment="Branch for continuing Widget 1.0 development" - type="baseline" - /> - - - - - Create a new Workspace branch 'MyWidgetDevelopment' from branch - 'Widget 1.0', repository 'Mainline/Widget'. All files are branched - at the tip version. - - - <sscmbranch - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="MyWidgetDevelopment" - repository="Mainline/Widget" - parent="Widget 1.0" - /> - - - - - Create a new Snapshot branch 'Build as of 12-1-03' from branch - 'Widget 1.0', repository 'Mainline/Widget' with the given comments. - All files are branched at their version as of 12-01-03. - - - <sscmbranch - serverconnect="localhost:4900" - serverlogin="administrator:" - name="Build as of 12-1-03" - repository="Mainline/Widget" - branch="Widget 1.0" - comment="Snapshot of source as it was on December 1st, 2003" - timestamp="2003120300:00:00" - type="snapshot" - /> - - + + Creates new branches for Surround SCM. + + + + Create a new Baseline branch 'Widget 1.0' from branch 'Mainline', + repository 'Mainline/Widget' with the given comments. All files + are branched at the tip version. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + parent="Mainline" + comment="Branch for continuing Widget 1.0 development" + type="baseline" + /> + + + + + Create a new Workspace branch 'MyWidgetDevelopment' from branch + 'Widget 1.0', repository 'Mainline/Widget'. All files are branched + at the tip version. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="MyWidgetDevelopment" + repository="Mainline/Widget" + parent="Widget 1.0" + /> + + + + + Create a new Snapshot branch 'Build as of 12-1-03' from branch + 'Widget 1.0', repository 'Mainline/Widget' with the given comments. + All files are branched at their version as of 12-01-03. + + + <sscmbranch + serverconnect="localhost:4900" + serverlogin="administrator:" + name="Build as of 12-1-03" + repository="Mainline/Widget" + branch="Widget 1.0" + comment="Snapshot of source as it was on December 1st, 2003" + timestamp="2003120300:00:00" + type="snapshot" + /> + + @@ -10810,31 +10810,31 @@ The to write the task-specific arguments to. - - The name of the branch you want to create. - + + The name of the branch you want to create. + - - The full repository path. - + + The full repository path. + - - The parent branch you want to create the new, child branch from. - If not specified, the mainline branch is used. - + + The parent branch you want to create the new, child branch from. + If not specified, the mainline branch is used. + - - Specifies a comment for the branch operation. - + + Specifies a comment for the branch operation. + - - Specifies which parent branch file versions are copied into the - child branch. - + + Specifies which parent branch file versions are copied into the + child branch. + @@ -10851,61 +10851,61 @@ - - Specifies the type of branch you want to create. Possible values are - workspace, baseline, or snapshot. The default is - workspace. - + + Specifies the type of branch you want to create. Possible values are + workspace, baseline, or snapshot. The default is + workspace. + - - Checks in files in Surround SCM - repository. - - - Check in updated Surround SCM files with changes, removes the lock on - the files, and makes changes available to other users. - - - - Check In all files and repositories from repository 'Mainline/Widget' - recursively from the 'Widget 1.0' branch to the working directory setup - for user 'administrator'. This call outputs the progress of the Check In - to the console. - - - <sscmcheckin - serverconnect="localhost:4900" - serverlogin="administrator:" - file="/" - branch="Widget 1.0" - repository="Mainline/Widget" - recursive="true" - comment="I made some changes" - /> - - - - - Check in file 'Mainline/Widget/Widget.java' from the 'Widget 1.0' - branch from the working directory setup for user 'administrator' - with comment 'I made some changes'. Set the 'Release 1.1.1' label - to this new version, even if the label already exists on an earlier - version. - - - <sscmcheckin - serverconnect="localhost:4900" - serverlogin="administrator:" - file="Widget.java" - branch="Widget 1.0" - repository="Mainline/Widget" - comment="I made some changes" - label="Release 1.1.1" - overwritelabel="true" - /> - - + + Checks in files in Surround SCM + repository. + + + Check in updated Surround SCM files with changes, removes the lock on + the files, and makes changes available to other users. + + + + Check In all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory setup + for user 'administrator'. This call outputs the progress of the Check In + to the console. + + + <sscmcheckin + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + comment="I made some changes" + /> + + + + + Check in file 'Mainline/Widget/Widget.java' from the 'Widget 1.0' + branch from the working directory setup for user 'administrator' + with comment 'I made some changes'. Set the 'Release 1.1.1' label + to this new version, even if the label already exists on an earlier + version. + + + <sscmcheckin + serverconnect="localhost:4900" + serverlogin="administrator:" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + comment="I made some changes" + label="Release 1.1.1" + overwritelabel="true" + /> + + @@ -10915,154 +10915,154 @@ The to write the task-specific arguments to. - - Surround SCM branch name. The default is pulled from the local - working directory. - + + Surround SCM branch name. The default is pulled from the local + working directory. + - - Surround SCM repository path. The default is pulled from the local - working directory. - + + Surround SCM repository path. The default is pulled from the local + working directory. + - - File or repository name. Can be / or empty, which means the - repository specified by the repository option or the default - repository. - + + File or repository name. Can be / or empty, which means the + repository specified by the repository option or the default + repository. + - - Comment for the check-in. - + + Comment for the check-in. + - - Force check in without merge. Ignores code changes checked in after - the user's last checkout or merge. The default is . - + + Force check in without merge. Ignores code changes checked in after + the user's last checkout or merge. The default is . + - - Get file after check in. The default is . - + + Get file after check in. The default is . + - - Keep the lock after check in. The default is . - + + Keep the lock after check in. The default is . + - - A label for the check in code. - + + A label for the check in code. + - - Overwrite previous label on file. The default is - . - + + Overwrite previous label on file. The default is + . + - - Do not list repository and local full path of the Surround - SCM server. The default is . - + + Do not list repository and local full path of the Surround + SCM server. The default is . + - - Recursively check in all files and sub-repositories. - The default is . - + + Recursively check in all files and sub-repositories. + The default is . + - - The TestTrack Pro database configuration name. - + + The TestTrack Pro database configuration name. + - - The TestTrack Pro username and password. - + + The TestTrack Pro username and password. + - - The TestTrack Pro defect number(s) for attachment. Format is "#:#:#:#". - + + The TestTrack Pro defect number(s) for attachment. Format is "#:#:#:#". + - - Make file writable after check in. The default is - . - + + Make file writable after check in. The default is + . + - - Update version even if no changes. The default is - . - + + Update version even if no changes. The default is + . + - - Remove local file after check in. The default is - . - + + Remove local file after check in. The default is + . + - - Checks out files from a Surround SCM - repository. - - - You can check out single files, multiple files, or a full repository. - Surround SCM creates a read-write copy of the files in the working - directory. - - - - Check Out all files and repositories from repository 'Mainline/Widget' - recursively from the 'Widget 1.0' branch to the working directory setup - for user 'administrator'. This call forces the file retrieval from the - server even if the local file is current and overwrites any writable - local files with the server copy. - - - <sscmcheckout - serverconnect="localhost:4900" - serverlogin="administrator:" - file="/" - branch="Widget 1.0" - repository="Mainline/Widget" - recursive="true" - force="true" - comment="This is my Check Out comment" - /> - - - - - Check Out version 1 of the file 'Mainline/Widget/Widget.java' exclusively - from the 'Widget 1.0' branch to the working directory setup for user - 'administrator'. Writable local files are not overwritten, even if they - are out of date. - - - <sscmcheckout - serverconnect="localhost:4900" - serverlogin="administrator:" - quiet="true" - file="Widget.java" - branch="Widget 1.0" - repository="Mainline/Widget" - overwrite="false" - writable="true" - version="1" - exclusive="true" - /> - - + + Checks out files from a Surround SCM + repository. + + + You can check out single files, multiple files, or a full repository. + Surround SCM creates a read-write copy of the files in the working + directory. + + + + Check Out all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory setup + for user 'administrator'. This call forces the file retrieval from the + server even if the local file is current and overwrites any writable + local files with the server copy. + + + <sscmcheckout + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + force="true" + comment="This is my Check Out comment" + /> + + + + + Check Out version 1 of the file 'Mainline/Widget/Widget.java' exclusively + from the 'Widget 1.0' branch to the working directory setup for user + 'administrator'. Writable local files are not overwritten, even if they + are out of date. + + + <sscmcheckout + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + overwrite="false" + writable="true" + version="1" + exclusive="true" + /> + + @@ -11072,16 +11072,16 @@ The to write the task-specific arguments to. - - Surround SCM branch name. The default is pulled from the local - working directory. - + + Surround SCM branch name. The default is pulled from the local + working directory. + - - Surround SCM repository path. The default is pulled from the local - working directory. - + + Surround SCM repository path. The default is pulled from the local + working directory. + @@ -11091,44 +11091,44 @@ - - Comment for the check-out. - + + Comment for the check-out. + - - Force file retrieval from server regardless of the local copy status. - The default is . - + + Force file retrieval from server regardless of the local copy status. + The default is . + - - Do not list repository and local full path of the Surround SCM server. - The default is . - + + Do not list repository and local full path of the Surround SCM server. + The default is . + - - Recursively get files and sub-repositories. The default is - . - + + Recursively get files and sub-repositories. The default is + . + - - Specifies whether to overwrite local writable files. The default is - . - + + Specifies whether to overwrite local writable files. The default is + . + - - Specifies how to set the local file's date/time. Possible values are - current, modify or checkin. - + + Specifies how to set the local file's date/time. Possible values are + current, modify or checkin. + - - Exclusively lock the files. The default is . - + + Exclusively lock the files. The default is . + @@ -11137,30 +11137,30 @@ - - Freezes branches in a Surround SCM - repository. - - - Freezing a branch prevents any code changes being made to files in the - branch. When a branch is frozen, it is locked and no changes can be - made to it. - - - - Freeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the - server at localhost, port 4900 with username 'administrator' and a - blank password. - - - <sscmfreeze - serverconnect="localhost:4900" - serverlogin="administrator:" - mainline="Mainline" - branch="Widget 1.0" - /> - - + + Freezes branches in a Surround SCM + repository. + + + Freezing a branch prevents any code changes being made to files in the + branch. When a branch is frozen, it is locked and no changes can be + made to it. + + + + Freeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the + server at localhost, port 4900 with username 'administrator' and a + blank password. + + + <sscmfreeze + serverconnect="localhost:4900" + serverlogin="administrator:" + mainline="Mainline" + branch="Widget 1.0" + /> + + @@ -11170,88 +11170,88 @@ The to write the task-specific arguments to. - - Surround SCM branch name. - + + Surround SCM branch name. + - - Surround SCM mainline branch name. The default is pulled from the - local working directory. - + + Surround SCM mainline branch name. The default is pulled from the + local working directory. + - - Gets files from a Surround SCM - repository. - - - You can get a single file, multiple files, or a repository. A read-only - copy of the file is created in the specified directory. - - - - Get all files and repositories from repository 'Mainline/Widget' - recursively from the 'Widget 1.0' branch to the working directory - setup for user 'administrator'. This call forces the file retrieval - from the server even if the local file is current and overwrites any - local files that are writable with the server copy. - - - <sscmget - serverconnect="localhost:4900" - serverlogin="administrator:" - file="/" - branch="Widget 1.0" - repository="Mainline/Widget" - recursive="true" - force="true" - overwrite="true" - /> - - - - - Get version 1 of the file 'Mainline/Widget/Widget.java' from the - 'Widget 1.0' branch to the working directory setup for user 'administrator'. - Writable local files are not overwritten, even if they are out of date. - - - <sscmget - serverconnect="localhost:4900" - serverlogin="administrator:" - quiet="true" - file="Widget.java" - branch="Widget 1.0" - repository="Mainline/Widget" - overwrite="false" - writable="true" - version="1" - /> - - - - - Get all files and repositories labeled with 'Release 1.0.0' (even those - removed from Surround) from repository 'Mainline/Widget' recursively - from the 'Widget 1.0' branch to the '${build}/src' directory. Writable - local files are overwritten with the server copy. - - - <sscmget - serverconnect="localhost:4900" - serverlogin="administrator:" - quiet="true" - file="/" - branch="Widget 1.0" - repository="Mainline/Widget" - recursive="true" - label="Release 1.0.1" - destdir="${build}/src" - overwrite="true" - /> - - + + Gets files from a Surround SCM + repository. + + + You can get a single file, multiple files, or a repository. A read-only + copy of the file is created in the specified directory. + + + + Get all files and repositories from repository 'Mainline/Widget' + recursively from the 'Widget 1.0' branch to the working directory + setup for user 'administrator'. This call forces the file retrieval + from the server even if the local file is current and overwrites any + local files that are writable with the server copy. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + force="true" + overwrite="true" + /> + + + + + Get version 1 of the file 'Mainline/Widget/Widget.java' from the + 'Widget 1.0' branch to the working directory setup for user 'administrator'. + Writable local files are not overwritten, even if they are out of date. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="Widget.java" + branch="Widget 1.0" + repository="Mainline/Widget" + overwrite="false" + writable="true" + version="1" + /> + + + + + Get all files and repositories labeled with 'Release 1.0.0' (even those + removed from Surround) from repository 'Mainline/Widget' recursively + from the 'Widget 1.0' branch to the '${build}/src' directory. Writable + local files are overwritten with the server copy. + + + <sscmget + serverconnect="localhost:4900" + serverlogin="administrator:" + quiet="true" + file="/" + branch="Widget 1.0" + repository="Mainline/Widget" + recursive="true" + label="Release 1.0.1" + destdir="${build}/src" + overwrite="true" + /> + + @@ -11261,16 +11261,16 @@ The to write the task-specific arguments to. - - Surround SCM branch name. The default is pulled from the local - working directory. - + + Surround SCM branch name. The default is pulled from the local + working directory. + - - Surround SCM repository path. The default is pulled from the local - working directory. - + + Surround SCM repository path. The default is pulled from the local + working directory. + @@ -11290,22 +11290,22 @@ - - Make local file editable or writable. The default is - . - + + Make local file editable or writable. The default is + . + - - Force file retrieval from server regardless of the local copy status. - The default is . - + + Force file retrieval from server regardless of the local copy status. + The default is . + - - Label to search for when getting a file. If a file version is - specified, this parameter is ignored. - + + Label to search for when getting a file. If a file version is + specified, this parameter is ignored. + @@ -11315,35 +11315,35 @@ - - Include removed files when getting files by label or timestamp. - The default is . Ignored if a label or - timestamp is not specified. - + + Include removed files when getting files by label or timestamp. + The default is . Ignored if a label or + timestamp is not specified. + - - Do not list repository and local full path of files. The default is - . - + + Do not list repository and local full path of files. The default is + . + - - Recursively get files and sub-repositories. The default is - . - + + Recursively get files and sub-repositories. The default is + . + - - Specifies whether to overwrite local writable files. The default is - . - + + Specifies whether to overwrite local writable files. The default is + . + - - Specifies how to set the local file's date/time. Possible values are - current, modify or checkin. - + + Specifies how to set the local file's date/time. Possible values are + current, modify or checkin. + @@ -11352,74 +11352,74 @@ - - Creates file or repository labels for a Surround SCM - repository. - - - Labels provide a way to mark a specific version of a file or repository. - You can create labels for single files, multiple files, or all files in - a repository. When you create a label, a new entry is created in the history. - The file, and the version number, do not change. Existing 'Release 1.0.1' - labels on a file will be moved to the tip version of the file. - - - - Label all files under the 'Mainline/Widget' repository recursively in - the 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. - - - <sscmlabel - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="Widget 1.0" - repository="Mainline/Widget" - file="readme.txt" - recursive="true" - label="Release 1.0.1" - overwritelabel="false" - comment="This labels the final build for the release of Widget 1.0.1." - /> - - - - - Label all files under the 'Mainline/Widget' repository recursively in - the 'Widget 1.0' branch with 'Release 1.0.1' and no comments. - - - <sscmlabel - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="Widget 1.0" - repository="Mainline/Widget" - file="readme.txt" - recursive="true" - label="Release 1.0.1" - /> - - - - - Label version 4 of the file 'Mainline/Widget/Widget.java' in the - 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. An - existing 'Release 1.0.1' label on this file to be moved to version 4 - of the file. - - - <sscmlabel - serverconnect="localhost:4900" - serverlogin="administrator:" - branch="Widget 1.0" - repository="Mainline/Widget" - file="readme.txt" - label="Release 1.0.1" - overwritelabel=" true" - comment=" This labels the final build for the release of Widget 1.0.1." - version=" 4" - /> - - + + Creates file or repository labels for a Surround SCM + repository. + + + Labels provide a way to mark a specific version of a file or repository. + You can create labels for single files, multiple files, or all files in + a repository. When you create a label, a new entry is created in the history. + The file, and the version number, do not change. Existing 'Release 1.0.1' + labels on a file will be moved to the tip version of the file. + + + + Label all files under the 'Mainline/Widget' repository recursively in + the 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + recursive="true" + label="Release 1.0.1" + overwritelabel="false" + comment="This labels the final build for the release of Widget 1.0.1." + /> + + + + + Label all files under the 'Mainline/Widget' repository recursively in + the 'Widget 1.0' branch with 'Release 1.0.1' and no comments. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + recursive="true" + label="Release 1.0.1" + /> + + + + + Label version 4 of the file 'Mainline/Widget/Widget.java' in the + 'Widget 1.0' branch with 'Release 1.0.1' and the given comment. An + existing 'Release 1.0.1' label on this file to be moved to version 4 + of the file. + + + <sscmlabel + serverconnect="localhost:4900" + serverlogin="administrator:" + branch="Widget 1.0" + repository="Mainline/Widget" + file="readme.txt" + label="Release 1.0.1" + overwritelabel=" true" + comment=" This labels the final build for the release of Widget 1.0.1." + version=" 4" + /> + + @@ -11429,16 +11429,16 @@ The to write the task-specific arguments to. - - Surround SCM branch name. The default is pulled from the local - working directory. - + + Surround SCM branch name. The default is pulled from the local + working directory. + - - Surround SCM repository path. The default is pulled from the local - working directory. - + + Surround SCM repository path. The default is pulled from the local + working directory. + @@ -11448,24 +11448,24 @@ - - The new label to create. - + + The new label to create. + - - Recursively label all files. The default is . - + + Recursively label all files. The default is . + - - Overwrite the existing label. The default is . - + + Overwrite the existing label. The default is . + - - Comment for the label. - + + Comment for the label. + @@ -11474,25 +11474,25 @@ - - Unlocks frozen branches for a Surround SCM - repository. - - - - Unfreeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the - server at localhost, port 4900 with username 'administrator' and a - blank password. - - - <sscmunfreeze - serverconnect="localhost:4900" - serverlogin="administrator:" - mainline="Mainline" - branch="Widget 1.0" - /> - - + + Unlocks frozen branches for a Surround SCM + repository. + + + + Unfreeze the 'Widget 1.0' branch off of the mainline 'Mainline' on the + server at localhost, port 4900 with username 'administrator' and a + blank password. + + + <sscmunfreeze + serverconnect="localhost:4900" + serverlogin="administrator:" + mainline="Mainline" + branch="Widget 1.0" + /> + + @@ -11502,47 +11502,47 @@ The to write the task-specific arguments to. - - Surround SCM branch name. - + + Surround SCM branch name. + - - Surround SCM mainline branch name. The default is pulled from the local working directory. - + + Surround SCM mainline branch name. The default is pulled from the local working directory. + - - A base class for creating tasks for executing CVS client commands on a - CVS repository. - + + A base class for creating tasks for executing CVS client commands on a + CVS repository. + - - An environment variable that holds path information about where - svn is located. - + + An environment variable that holds path information about where + svn is located. + - - The prefix used for command arguments. - + + The prefix used for command arguments. + - - The name of the svn executable. - + + The name of the svn executable. + - - Environment variable that holds the executable name that is used for - ssh communication. - + + Environment variable that holds the executable name that is used for + ssh communication. + - - Name of the password file that is used to cash password settings. - + + Name of the password file that is used to cash password settings. + @@ -11551,19 +11551,19 @@ - - Build up the command line arguments, determine which executable is being - used and find the path to that executable and set the working - directory. - - The process to prepare. + + Build up the command line arguments, determine which executable is being + used and find the path to that executable and set the working + directory. + + The process to prepare. - - Append the command line options or commen names for the options - to the generic options collection. This is then piped to the - command line as a switch. - + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + @@ -11578,420 +11578,420 @@ - - Set default values for non-requiered parameters. - + + Set default values for non-requiered parameters. + - - The name of the executable. - + + The name of the executable. + - - The name of the password file. - + + The name of the password file. + - - Name of the home environment variable. - + + Name of the home environment variable. + - - The name of the ssh/ rsh environment variable. - + + The name of the ssh/ rsh environment variable. + - - The full path of the svn executable. - + + The full path of the svn executable. + - - - TODO: Add more documentation when I understand all svn root possibilities/ - protocols. - The svn root is usually in the form of a URL from which the server, protocol - and path information can be derived. Although the path to the repository - can also be determined from this the information is more implicit - than explicit. For example a subversion root URL of: - http://svn.collab.net/repos/svn/trunk/doc/book/tools - would have the following components: - protocol: http/ web_dav - username: anonymous - servername: svn.collab.net - repository: /repos/svn - server path: /trunk/doc/book/tools - - In addition the revision path or branch can also be determined as - subversion stores this information as a seperate physical directory. - In this example: - - revision: trunk - - + + + TODO: Add more documentation when I understand all svn root possibilities/ + protocols. + The svn root is usually in the form of a URL from which the server, protocol + and path information can be derived. Although the path to the repository + can also be determined from this the information is more implicit + than explicit. For example a subversion root URL of: + http://svn.collab.net/repos/svn/trunk/doc/book/tools + would have the following components: + protocol: http/ web_dav + username: anonymous + servername: svn.collab.net + repository: /repos/svn + server path: /trunk/doc/book/tools + + In addition the revision path or branch can also be determined as + subversion stores this information as a seperate physical directory. + In this example: + + revision: trunk + + - - The user performing the checkout. - + + The user performing the checkout. + - - The pasword to use to login to svn. - + + The pasword to use to login to svn. + - - Indicates whether the task should be interactive or not. This is - set to by default, and I don't see a reason - to expose this to the NAnt task. - + + Indicates whether the task should be interactive or not. This is + set to by default, and I don't see a reason + to expose this to the NAnt task. + - - The executable to use for ssh communication. - + + The executable to use for ssh communication. + - - The command to execute. - + + The command to execute. + - - Specifies whether to print as little information as possible. - The default is . - + + Specifies whether to print as little information as possible. + The default is . + - - Determines if the root is used for the command based on - the command name. Returns true if the root - is used, otherwise returns false. - + + Determines if the root is used for the command based on + the command name. Returns true if the root + is used, otherwise returns false. + - - Executes the svn checkout command. - - - Checkout Gentle.NET. - - - ]]> - - + + Executes the svn checkout command. + + + Checkout Gentle.NET. + + + ]]> + + - - Initialize the task, and set the default parameters. - + + Initialize the task, and set the default parameters. + - - Gets the svn command to execute. - - - The svn command to execute. The default value is "checkout". - + + Gets the svn command to execute. + + + The svn command to execute. The default value is "checkout". + - - if the command should be executed recursively. - The default is . - + + if the command should be executed recursively. + The default is . + - - The revision to checkout. If no revision is specified then subversion - will return the HEAD. - - - A revision argument can be one of: - NUMBER revision number - "{" DATE "}" revision at start of the date - "HEAD" latest in repository - "BASE" base rev of item's working copy - "COMMITTED" last commit at or before BASE - "PREV" revision just before COMMITTED - + + The revision to checkout. If no revision is specified then subversion + will return the HEAD. + + + A revision argument can be one of: + NUMBER revision number + "{" DATE "}" revision at start of the date + "HEAD" latest in repository + "BASE" base rev of item's working copy + "COMMITTED" last commit at or before BASE + "PREV" revision just before COMMITTED + - - if the authentiction token should be cached - locally. - + + if the authentiction token should be cached + locally. + - - The location of the configuration directory. - + + The location of the configuration directory. + - - Executes the svn command specified by the command attribute. - - - Checkout Gentle.NET. - - - ]]> - - + + Executes the svn command specified by the command attribute. + + + Checkout Gentle.NET. + + + ]]> + + - - The svn command to execute. - + + The svn command to execute. + - - Executes the svn update specified by the command attribute. - - - Update Gentle.NET. - - - ]]> - - + + Executes the svn update specified by the command attribute. + + + Update Gentle.NET. + + + ]]> + + - - Gets the svn command to execute. - - - The svn command to execute. The default value is "update". - + + Gets the svn command to execute. + + + The svn command to execute. The default value is "update". + - - Allows an IIS application pool to be controlled. - - - - Starts the "StsAdminAppPool" application pool on server - "SV-ARD-WEB". - - - - ]]> - - - - - Stops and restarts the "DefaultAppPool" application pool - on server "SV-ARD-WEB". - - - - ]]> - - + + Allows an IIS application pool to be controlled. + + + + Starts the "StsAdminAppPool" application pool on server + "SV-ARD-WEB". + + + + ]]> + + + + + Stops and restarts the "DefaultAppPool" application pool + on server "SV-ARD-WEB". + + + + ]]> + + - - The name of the server on which to perform the action. The default - is the local computer. - + + The name of the server on which to perform the action. The default + is the local computer. + - - The name of the application pool on which to perform the action. - + + The name of the application pool on which to perform the action. + - - The action that should be performed on the application pool. - + + The action that should be performed on the application pool. + - - Defines the actions that can be performed on an application pool. - + + Defines the actions that can be performed on an application pool. + - - Starts the application pool. - + + Starts the application pool. + - - Stops the application pool. - + + Stops the application pool. + - - Stops and restarts the application pool. - + + Stops and restarts the application pool. + - - Recycles an application pool. - + + Recycles an application pool. + - - Creates or modifies a virtual directory of a web site hosted on Internet - Information Server. - - - - If the virtual directory does not exist it is created, and if it already - exists it is modified. Only the IIS-properties specified will be set. If set - by other means (e.g. the Management Console), the unspecified properties retain their current value, - otherwise they are inherited from the parent. - - - For a list of optional parameters see IIsWebVirtualDir. - - - More information on metabase parameters is available here. - - - - - Create a virtual directory named Temp pointing to c:\temp - on the local machine. - - - - ]]> - - - - - Create a virtual directory named Temp pointing to c:\temp - on machine Staging. - - - - ]]> - - - - - Configure the home directory of for http://svc.here.dev/ to point to - D:\Develop\Here and require authentication - - - - ]]> - - - - - Create a virtual directory named WebServices/Dev pointing to - c:\MyProject\dev on the web site running on port 81 of - machine MyHost. - - - - ]]> - - Note that if WebServices is neither an existing virtual directory nor an - existing physical subdirectory of the web root, your IIS Management Console - will get confused. Even though http://MyHost:81/WebServices/Dev/theService.asmx - may be a perfectly working webservice, the Management Console will not show it. - + + Creates or modifies a virtual directory of a web site hosted on Internet + Information Server. + + + + If the virtual directory does not exist it is created, and if it already + exists it is modified. Only the IIS-properties specified will be set. If set + by other means (e.g. the Management Console), the unspecified properties retain their current value, + otherwise they are inherited from the parent. + + + For a list of optional parameters see IIsWebVirtualDir. + + + More information on metabase parameters is available here. + + + + + Create a virtual directory named Temp pointing to c:\temp + on the local machine. + + + + ]]> + + + + + Create a virtual directory named Temp pointing to c:\temp + on machine Staging. + + + + ]]> + + + + + Configure the home directory of for http://svc.here.dev/ to point to + D:\Develop\Here and require authentication + + + + ]]> + + + + + Create a virtual directory named WebServices/Dev pointing to + c:\MyProject\dev on the web site running on port 81 of + machine MyHost. + + + + ]]> + + Note that if WebServices is neither an existing virtual directory nor an + existing physical subdirectory of the web root, your IIS Management Console + will get confused. Even though http://MyHost:81/WebServices/Dev/theService.asmx + may be a perfectly working webservice, the Management Console will not show it. + - - Base class for all IIS-related task. - - - Basically this class hold the logic to determine the IIS version as well - as the IIS server/port determination/checking logic. - + + Base class for all IIS-related task. + + + Basically this class hold the logic to determine the IIS version as well + as the IIS server/port determination/checking logic. + - - Name of the IIS virtual directory. - + + Name of the IIS virtual directory. + - - The IIS server, which can be specified using the format [host]:[port]. - The default is localhost:80. - - - - This allows for targeting a specific virtual site on a physical box. - - + + The IIS server, which can be specified using the format [host]:[port]. + The default is localhost:80. + + + + This allows for targeting a specific virtual site on a physical box. + + - - The website on the IIS server. - - - - This allows for targeting a specific virtual site on a physical box. - - + + The website on the IIS server. + + + + This allows for targeting a specific virtual site on a physical box. + + - - Gets the version of IIS corresponding with the current OS. - - - The version of IIS corresponding with the current OS. - + + Gets the version of IIS corresponding with the current OS. + + + The version of IIS corresponding with the current OS. + - - Defines the IIS versions supported by the IIS tasks. - + + Defines the IIS versions supported by the IIS tasks. + - - The user-friendly name of the package or application. - + + The user-friendly name of the package or application. + - - The file system path. - + + The file system path. + - - Indicates whether the file or the contents of the folder may be - executed, regardless of file type. The default is . - + + Indicates whether the file or the contents of the folder may be + executed, regardless of file type. The default is . + @@ -12016,46 +12016,46 @@ - - A value of true indicates that remote requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. - + + A value of true indicates that remote requests to view dynamic content are denied; only requests from the same computer as the IIS server succeed if the AccessScript property is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, and set AccessScript to false to disable local requests. + - - indicates that remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. - + + indicates that remote requests to create or change files are denied; only requests from the same computer as the IIS server succeed if the AccessWrite property is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, and set AccessWrite to false to disable local requests. + - - Indicates whether the file or the contents of the folder may be - read. The default is . - + + Indicates whether the file or the contents of the folder may be + read. The default is . + - - Indicates whether users are allowed to access source code if either - Read or Write permissions are set. The default is . - + + Indicates whether users are allowed to access source code if either + Read or Write permissions are set. The default is . + - - Indicates whether the file or the contents of the folder may be - executed if they are script files or static content. The default - is . - + + Indicates whether the file or the contents of the folder may be + executed if they are script files or static content. The default + is . + - - Indicates whether file access requires SSL file permission processing, - with or without a client certificate. The default is . - + + Indicates whether file access requires SSL file permission processing, + with or without a client certificate. The default is . + - - Indicates whether file access requires SSL file permission processing - with a minimum key size of 128 bits, with or without a client - certificate. The default is . - + + Indicates whether file access requires SSL file permission processing + with a minimum key size of 128 bits, with or without a client + certificate. The default is . + @@ -12067,10 +12067,10 @@ - - Indicates whether SSL file access processing requests a certificate - from the client. The default is . - + + Indicates whether SSL file access processing requests a certificate + from the client. The default is . + @@ -12082,19 +12082,19 @@ - - Indicates whether users are allowed to upload files and their - associated properties to the enabled directory on your server or - to change content in a Write-enabled file. The default is - . - + + Indicates whether users are allowed to upload files and their + associated properties to the enabled directory on your server or + to change content in a Write-enabled file. The default is + . + - - Indicates whether IIS should handle the user password for anonymous - users attempting to access resources. The default is - . - + + Indicates whether IIS should handle the user password for anonymous + users attempting to access resources. The default is + . + @@ -12103,38 +12103,38 @@ - - Specifies whether ASP client-side debugging is enabled. The default - is . - + + Specifies whether ASP client-side debugging is enabled. The default + is . + - - Specifies whether ASP debugging is enabled on the server. The default - is . - + + Specifies whether ASP debugging is enabled on the server. The default + is . + - - Specifies the application pool where the application is routed - (IIS 6.0 or higher). - + + Specifies the application pool where the application is routed + (IIS 6.0 or higher). + - - Enables session state persistence for the ASP application. The - default is . - + + Enables session state persistence for the ASP application. The + default is . + - - Specifies whether output from an ASP application will be buffered. - If , all output from the application is - collected in the buffer before the buffer is flushed to the client. - With buffering on, the ASP application has to completely process the - ASP script before the client receives any output. The default is - . - + + Specifies whether output from an ASP application will be buffered. + If , all output from the application is + collected in the buffer before the buffer is flushed to the client. + With buffering on, the ASP application has to completely process the + ASP script before the client receives any output. The default is + . + @@ -12150,21 +12150,21 @@ - - Controls the behavior of ASP when a new request is to be rejected - due to a full request queue. If , an .htm file - with a similar name as the requested .asp file, will be sent instead - of the .asp file. The naming convention for the .htm file is the - name of the .asp file with _asp appended. The default is - . - + + Controls the behavior of ASP when a new request is to be rejected + due to a full request queue. If , an .htm file + with a similar name as the requested .asp file, will be sent instead + of the .asp file. The naming convention for the .htm file is the + name of the .asp file with _asp appended. The default is + . + - - Specifies whether HTTP 1.1 chunked transfer encoding is enabled for - the World Wide Web Publishing Service (WWW service). The default is - . - + + Specifies whether HTTP 1.1 chunked transfer encoding is enabled for + the World Wide Web Publishing Service (WWW service). The default is + . + @@ -12203,37 +12203,37 @@ - - Specifies whether an ASP page allows paths relative to the current - directory. The default is . - + + Specifies whether an ASP page allows paths relative to the current + directory. The default is . + - - Specifies whether type libraries are cached on the server. The - default is . - - - - The World Wide Web Publishing Service (WWW service) setting for - this property is applicable to all in-process and pooled out-of-process - application nodes, at all levels. - - - Metabase settings at the Web server level or lower are ignored - for in-process and pooled out-of-process applications. However, - settings at the Web server level or lower are used if that node - is an isolated out-of-process application. - - + + Specifies whether type libraries are cached on the server. The + default is . + + + + The World Wide Web Publishing Service (WWW service) setting for + this property is applicable to all in-process and pooled out-of-process + application nodes, at all levels. + + + Metabase settings at the Web server level or lower are ignored + for in-process and pooled out-of-process applications. However, + settings at the Web server level or lower are used if that node + is an isolated out-of-process application. + + - - Specifies whether ASP pages trap exceptions thrown by components. - If set to , the Microsoft Script Debugger tool - does not catch exceptions sent by the component that you are debugging. - The default is . - + + Specifies whether ASP pages trap exceptions thrown by components. + If set to , the Microsoft Script Debugger tool + does not catch exceptions sent by the component that you are debugging. + The default is . + @@ -12273,235 +12273,235 @@ - - Specifies whether the Web server writes debugging specifics - (file name, error, line number, description) to the client browser, - in addition to logging them to the Windows Event Log. The default - is . - + + Specifies whether the Web server writes debugging specifics + (file name, error, line number, description) to the client browser, + in addition to logging them to the Windows Event Log. The default + is . + - - Indicates whether IIS thread gating is enabled (only applies to IIS 4 and 5). - The default is . - - - IIS performs thread gating to dynamically control the number of - concurrently executing threads, in response to varying load conditions. - + + Indicates whether IIS thread gating is enabled (only applies to IIS 4 and 5). + The default is . + + + IIS performs thread gating to dynamically control the number of + concurrently executing threads, in response to varying load conditions. + - - Specifies whether IIS checks the threading model of any components - that your application creates. The default is . - + + Specifies whether IIS checks the threading model of any components + that your application creates. The default is . + - - Specifies Anonymous authentication as one of the possible authentication - schemes returned to clients as being available. The default is - . - + + Specifies Anonymous authentication as one of the possible authentication + schemes returned to clients as being available. The default is + . + - - Specifies Basic authentication as one of the possible authentication - schemes returned to clients as being available. The default is - . - + + Specifies Basic authentication as one of the possible authentication + schemes returned to clients as being available. The default is + . + - - Specifies Integrated Windows authentication as one of the possible - authentication schemes returned to clients as being available. The - default is . - + + Specifies Integrated Windows authentication as one of the possible + authentication schemes returned to clients as being available. The + default is . + - - Specifies that authentication persists only for a single request on - a connection. IIS resets the authentication at the end of each request, - and forces re-authentication on the next request of the session. - - - [IIS 6.0] When the AuthPersistSingleRequest flag is set to true when - using NTLM authentication, IIS 6.0 automatically reauthenticates every - request, even those on the same connection. - + + Specifies that authentication persists only for a single request on + a connection. IIS resets the authentication at the end of each request, + and forces re-authentication on the next request of the session. + + + [IIS 6.0] When the AuthPersistSingleRequest flag is set to true when + using NTLM authentication, IIS 6.0 automatically reauthenticates every + request, even those on the same connection. + - - Specifies authentication will persist only across single requests - on a connection if the connection is by proxy. Applies to IIS 5.0 - and 5.1. The default is - - - IIS will reset the authentication at the end of the request if the current authenticated - request is by proxy and it is not the special case where IIS is running MSPROXY - + + Specifies authentication will persist only across single requests + on a connection if the connection is by proxy. Applies to IIS 5.0 + and 5.1. The default is + + + IIS will reset the authentication at the end of the request if the current authenticated + request is by proxy and it is not the special case where IIS is running MSPROXY + - - Specifies whether authentication is valid for a single request - if by proxy. IIS will reset the authentication at the end of the - request and force re-authentication on the next request if the - current authenticated request is by proxy of any type. Applies to - IIS 5.0 and 5.1. The default is . - + + Specifies whether authentication is valid for a single request + if by proxy. IIS will reset the authentication at the end of the + request and force re-authentication on the next request if the + current authenticated request is by proxy of any type. Applies to + IIS 5.0 and 5.1. The default is . + - - Specifies whether the HTTP 1.1 directive to prevent caching of content - should be sent to clients. The default is . - + + Specifies whether the HTTP 1.1 directive to prevent caching of content + should be sent to clients. The default is . + - - Indicates whether ISAPI extensions are cached in memory after first - use. The default is . - + + Indicates whether ISAPI extensions are cached in memory after first + use. The default is . + - - Specifies whether the installed content indexer should index content - under this directory tree. The default is . - + + Specifies whether the installed content indexer should index content + under this directory tree. The default is . + - - Specifies whether process accounting and throttling should be performed - for ISAPI extensions and ASP applications. The default is - . - + + Specifies whether process accounting and throttling should be performed + for ISAPI extensions and ASP applications. The default is + . + - - Indicates whether IIS should perform process accounting for CGI - applications. The default is . - + + Indicates whether IIS should perform process accounting for CGI + applications. The default is . + - - Indicates whether a CGI application runs in its own console. The - default is . - + + Indicates whether a CGI application runs in its own console. The + default is . + - - Specifies whether a CGI process is created in the system context - or in the context of the requesting user. The default is - . - + + Specifies whether a CGI process is created in the system context + or in the context of the requesting user. The default is + . + - - Specifies whether date information is displayed when browsing - directories. The default is . - + + Specifies whether date information is displayed when browsing + directories. The default is . + - - Specifies whether file extensions are displayed when browsing - directories. The default is . - + + Specifies whether file extensions are displayed when browsing + directories. The default is . + - - Specifies whether date information is displayed in extended format - when displaying directories. The default is . - + + Specifies whether date information is displayed in extended format + when displaying directories. The default is . + - - Specifies whether file size information is displayed when displaying - directories. The default is . - + + Specifies whether file size information is displayed when displaying + directories. The default is . + - - Specifies whether file creation time is displayed when browsing - directories. The default is . - + + Specifies whether file creation time is displayed when browsing + directories. The default is . + - - Specifies whether client requests are written to the IIS log files. - The default is . - + + Specifies whether client requests are written to the IIS log files. + The default is . + - - When set to true, the default document (specified by the DefaultDoc property) for a directory is loaded when the directory is browsed. - + + When set to true, the default document (specified by the DefaultDoc property) for a directory is loaded when the directory is browsed. + - - Specifies whether directory browsing is enabled. The default is - . - + + Specifies whether directory browsing is enabled. The default is + . + - - Enables or disables custom footers. The default is - . - + + Enables or disables custom footers. The default is + . + - - Enables or disables reverse Domain Name Server (DNS) lookups for - the World Wide Web Publishing Service (WWW service). The default is - . - + + Enables or disables reverse Domain Name Server (DNS) lookups for + the World Wide Web Publishing Service (WWW service). The default is + . + - - Specifies whether server-side include (SSI) #exec directives are - disabled under this path. The default is . - + + Specifies whether server-side include (SSI) #exec directives are + disabled under this path. The default is . + - - - + + + - - - + + + - - One or more file names of default documents that will be returned to - the client if no file name is included in the client's request. - + + One or more file names of default documents that will be returned to + the client if no file name is included in the client's request. + - - Specifies the user name for Universal Naming Convention (UNC) virtual - roots. - + + Specifies the user name for Universal Naming Convention (UNC) virtual + roots. + - - Specifies the encrypted password used to gain access to UNC - (Universal Naming Convention) virtual roots. - + + Specifies the encrypted password used to gain access to UNC + (Universal Naming Convention) virtual roots. + - - The different ways a (virtual) directory in IIS can be configured - as an application. - + + The different ways a (virtual) directory in IIS can be configured + as an application. + - - Virtual directory is not configured as an application. - + + Virtual directory is not configured as an application. + - - Virtual directory is configured as an in-process application. - + + Virtual directory is configured as an in-process application. + @@ -12510,126 +12510,126 @@ - - Virtual directory is configured as an out-of-process application. - + + Virtual directory is configured as an out-of-process application. + - - Deletes a virtual directory from a given web site hosted on Internet - Information Server. - - - - Delete a virtual directory named Temp from the web site running - on port 80 of the local machine. If more than one web site is - running on port 80, take the web site bound to the hostname - localhost if existent or bound to no hostname otherwise. - - - - ]]> - - - - - Delete a virtual directory named Temp from the website running - on port 81 of machine MyHost. - - - - ]]> - - + + Deletes a virtual directory from a given web site hosted on Internet + Information Server. + + + + Delete a virtual directory named Temp from the web site running + on port 80 of the local machine. If more than one web site is + running on port 80, take the web site bound to the hostname + localhost if existent or bound to no hostname otherwise. + + + + ]]> + + + + + Delete a virtual directory named Temp from the website running + on port 81 of machine MyHost. + + + + ]]> + + - - Lists the configuration settings of a specified virtual directory in a - web site hosted on Internet Information Server. - - - - List the settings of a virtual directory named Temp. - - - - ]]> - - + + Lists the configuration settings of a specified virtual directory in a + web site hosted on Internet Information Server. + + + + List the settings of a virtual directory named Temp. + + + + ]]> + + - - Base NAnt task for working with ADSI. This task contains only the path of the ADSI - object that you want to work with. - + + Base NAnt task for working with ADSI. This task contains only the path of the ADSI + object that you want to work with. + - - The ADSI path of the location where we want to work with. - + + The ADSI path of the location where we want to work with. + - - Used to get the value of a property from an ADSI object. - + + Used to get the value of a property from an ADSI object. + - - Sets the specified property - + + Sets the specified property + - - The name of the property to get. - + + The name of the property to get. + - - The name of the property to store the value in. - + + The name of the property to store the value in. + - - Sets a property on an ADSI object. - - - This task uses a heuristic to determine the type of the property in ADSI. The following cases are notable: - - If the property does not exist on the item, it is inserted as a string. - If the property already exists, this method will attempt to preserve - the type of the property. The types this method knows about are String, - Boolean, and Int32. - If the property exists and is an array, the value is added to - the array, but only if it is not already present. - - - - - - ]]> - - - - - - - - - ]]> - - + + Sets a property on an ADSI object. + + + This task uses a heuristic to determine the type of the property in ADSI. The following cases are notable: + + If the property does not exist on the item, it is inserted as a string. + If the property already exists, this method will attempt to preserve + the type of the property. The types this method knows about are String, + Boolean, and Int32. + If the property exists and is an array, the value is added to + the array, but only if it is not already present. + + + + + + ]]> + + + + + + + + + ]]> + + - - Sets the specified property - + + Sets the specified property + @@ -12659,732 +12659,732 @@ - - The name of the property to set. - + + The name of the property to set. + - - The new value of the property. - + + The new value of the property. + - - Formats source code in a given directory to a specified code format. - - - - Most examples inline have been produced by Tal Davidson and team and - are part of the astyle documentation. They have been included in - the task documentation as an easy reference. - - NOTE: This task relies on the astyle.exe file being in your path variable. - Please download the astyle.exe from http://astyle.sourceforge.net. - - - - - - - - - ]]> - - + + Formats source code in a given directory to a specified code format. + + + + Most examples inline have been produced by Tal Davidson and team and + are part of the astyle documentation. They have been included in + the task documentation as an easy reference. + + NOTE: This task relies on the astyle.exe file being in your path variable. + Please download the astyle.exe from http://astyle.sourceforge.net. + + + + + + + + + ]]> + + - - The default style seems to be the closest to C# standards. - + + The default style seems to be the closest to C# standards. + - - Build up the command line arguments, determine which executable is - being used and find the path to that executable and set the working - directory. - - The process to prepare. + + Build up the command line arguments, determine which executable is + being used and find the path to that executable and set the working + directory. + + The process to prepare. - - Adds a new command option if none exists. If one does exist then - the use switch is toggled on or of. - - The common name of the option. - The option value or command line switch of the option. - if the option should be appended to the commandline, otherwise . + + Adds a new command option if none exists. If one does exist then + the use switch is toggled on or of. + + The common name of the option. + The option value or command line switch of the option. + if the option should be appended to the commandline, otherwise . - - Append the command line options or commen names for the options - to the generic options collection. This is then piped to the - command line as a switch. - + + Append the command line options or commen names for the options + to the generic options collection. This is then piped to the + command line as a switch. + - - Append the files specified in the fileset to the command line argument. - + + Append the files specified in the fileset to the command line argument. + - - A collection of command line option switches. - + + A collection of command line option switches. + - - Used to select the files to copy. - + + Used to select the files to copy. + - - The command-line arguments for the program. - + + The command-line arguments for the program. + - - Indicate the preset style to use. - - ansi - - namespace foospace - { - int Foo() - { - if (isBar) - { - bar(); - return 1; - } - else - return 0; - } - } - - - kr ( Kernighan&Ritchie ) - - namespace foospace { - int Foo() { - if (isBar) { - bar(); - return 1; - } else - return 0; - } - } - - - linux - - namespace foospace - { - int Foo() - { - if (isBar) { - bar(); - return 1; - } else - return 0; - } - } - - - gnu - - namespace foospace - { - int Foo() - { - if (isBar) - { - bar(); - return 1; - } - else - return 0; - } - } - - - java - - class foospace { - int Foo() { - if (isBar) { - bar(); - return 1; - } else - return 0; - } - } - - - NAnt - - namespace foospace { - class foo() { - #region Protected Static Fields - private int Foo() { - if (isBar) { - bar(); - return 1; - } else { - return 0; - } - } - #endregion - } - - - - + + Indicate the preset style to use. + + ansi + + namespace foospace + { + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } + } + + + kr ( Kernighan&Ritchie ) + + namespace foospace { + int Foo() { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + linux + + namespace foospace + { + int Foo() + { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + gnu + + namespace foospace + { + int Foo() + { + if (isBar) + { + bar(); + return 1; + } + else + return 0; + } + } + + + java + + class foospace { + int Foo() { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + + NAnt + + namespace foospace { + class foo() { + #region Protected Static Fields + private int Foo() { + if (isBar) { + bar(); + return 1; + } else { + return 0; + } + } + #endregion + } + + + + - - Astyle leaves the original files around, renamed with a different - suffix. Setting this to true - will remove these files. - + + Astyle leaves the original files around, renamed with a different + suffix. Setting this to true + will remove these files. + - - The suffix to append to original files, defaults to .orig - if not specified. - + + The suffix to append to original files, defaults to .orig + if not specified. + - - Indicate the maximum number of spaces to indent relative to a - previous line. - + + Indicate the maximum number of spaces to indent relative to a + previous line. + - - Indicate that tabs should be used to indent sources. The number - specified indicates the maximum number of spaces the tab character - will represent. - + + Indicate that tabs should be used to indent sources. The number + specified indicates the maximum number of spaces the tab character + will represent. + - - Indent using tab characters. Treat each tab as # spaces. Uses tabs as - indents in areas '--indent=tab' prefers to use spaces, such as - inside multi-line statements. - + + Indent using tab characters. Treat each tab as # spaces. Uses tabs as + indents in areas '--indent=tab' prefers to use spaces, such as + inside multi-line statements. + - - to convert tabs to spaces. - + + to convert tabs to spaces. + - - if class statements should be indented. - - - The default: - class Foo - { - public: - Foo(); - virtual ~Foo(); - }; - becomes: - class Foo - { - public: - Foo(); - virtual ~Foo(); - }; - - - + + if class statements should be indented. + + + The default: + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + becomes: + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + + + - - if switch statements should be indented. - - - The default: - switch (foo) - { - case 1: - a += 2; - break; - default: - a += 2; - break; - } - becomes: - switch (foo) - { - case 1: - a += 2; - break; - default: - a += 2; - break; - } - - - + + if switch statements should be indented. + + + The default: + switch (foo) + { + case 1: + a += 2; + break; + default: + a += 2; + break; + } + becomes: + switch (foo) + { + case 1: + a += 2; + break; + default: + a += 2; + break; + } + + + - - if case statements should be indented. - - - The default: - switch (foo) - { - case 1: - { - a += 2; - break; - } - default: - { - a += 2; - break; - } - } - becomes: - switch (foo) - { - case 1: - { - a += 2; - break; - } - default: - { - a += 2; - break; - } - } - - - + + if case statements should be indented. + + + The default: + switch (foo) + { + case 1: + { + a += 2; + break; + } + default: + { + a += 2; + break; + } + } + becomes: + switch (foo) + { + case 1: + { + a += 2; + break; + } + default: + { + a += 2; + break; + } + } + + + - - true if bracket statements should be indented. - - - The default: - if (isFoo) - { - bar(); - } - else - { - anotherBar(); - } - becomes: - if (isFoo) - { - bar(); - } - else - { - anotherBar(); - } - - - + + true if bracket statements should be indented. + + + The default: + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + becomes: + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + + + - - if block statements should be indented. - The default: - if (isFoo) - { - bar(); - } - else - anotherBar(); - becomes: - if (isFoo) - { - bar(); - } - else - anotherBar(); - + + if block statements should be indented. + The default: + if (isFoo) + { + bar(); + } + else + anotherBar(); + becomes: + if (isFoo) + { + bar(); + } + else + anotherBar(); + - - if namespace statements should be indented. - - The default: - namespace foospace - { - class Foo - { - public: - Foo(); - virtual ~Foo(); - }; - } - becomes: - namespace foospace - { - class Foo - { - public: - Foo(); - virtual ~Foo(); - }; - } - - + + if namespace statements should be indented. + + The default: + namespace foospace + { + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + } + becomes: + namespace foospace + { + class Foo + { + public: + Foo(); + virtual ~Foo(); + }; + } + + - - if label statements should be indented. - - - The default: - int foospace() - { - while (isFoo) - { - ... - goto error; - error: - ... - } - } - becomes: - int foospace() - { - while (isFoo) - { - ... - goto error; - error: - ... - } - } - - + + if label statements should be indented. + + + The default: + int foospace() + { + while (isFoo) + { + ... + goto error; + error: + ... + } + } + becomes: + int foospace() + { + while (isFoo) + { + ... + goto error; + error: + ... + } + } + + - - Indicate the maximum number of spaces to indent relative to a - previous line. - + + Indicate the maximum number of spaces to indent relative to a + previous line. + - - Indicate the maximum number of spaces to indent relative to a - previous line. - + + Indicate the maximum number of spaces to indent relative to a + previous line. + - - if empty lines should be filled with the - whitespace of the previous line. - + + if empty lines should be filled with the + whitespace of the previous line. + - - if brackets should be put on a new line. - - if (isFoo) - { - bar(); - } - else - { - anotherBar(); - } - - - + + if brackets should be put on a new line. + + if (isFoo) + { + bar(); + } + else + { + anotherBar(); + } + + + - - if brackets should be attached. - - - if (isFoo){ - bar(); - } else { - anotherBar(); - } - - - + + if brackets should be attached. + + + if (isFoo){ + bar(); + } else { + anotherBar(); + } + + + - - if brackets should be put on a new line and - indented. - - namespace foospace - { - int Foo() - { - if (isBar) { - bar(); - return 1; - } else - return 0; - } - } - - + + if brackets should be put on a new line and + indented. + + namespace foospace + { + int Foo() + { + if (isBar) { + bar(); + return 1; + } else + return 0; + } + } + + - - if the line after a bracket (i.e. an else - statement after the closing if) should be placed on the next line. - - - if (isFoo){ - bar(); - }else { - anotherBar(); - } - becomes: - if (isFoo) { - bar(); - } - else { - anotherBar(); - } - - - + + if the line after a bracket (i.e. an else + statement after the closing if) should be placed on the next line. + + + if (isFoo){ + bar(); + }else { + anotherBar(); + } + becomes: + if (isFoo) { + bar(); + } + else { + anotherBar(); + } + + + - - to break block statements with an empty line. - - isFoo = true; - if (isFoo) { - bar(); - } else { - anotherBar(); - } - isBar = false; - becomes: - isFoo = true; - if (isFoo) { - bar(); - } else { - anotherBar(); - } - isBar = false; - - + + to break block statements with an empty line. + + isFoo = true; + if (isFoo) { + bar(); + } else { + anotherBar(); + } + isBar = false; + becomes: + isFoo = true; + if (isFoo) { + bar(); + } else { + anotherBar(); + } + isBar = false; + + - - to break all block statements, even on - nested ifs with an empty line. - - isFoo = true; - if (isFoo) { - bar(); - } else { - anotherBar(); - } - isBar = false; - becomes: - isFoo = true; - if (isFoo) { - bar(); - } else { - anotherBar(); - } - isBar = false; - - + + to break all block statements, even on + nested ifs with an empty line. + + isFoo = true; + if (isFoo) { + bar(); + } else { + anotherBar(); + } + isBar = false; + becomes: + isFoo = true; + if (isFoo) { + bar(); + } else { + anotherBar(); + } + isBar = false; + + - - to put the if component of an else if on a - new line. - - if (isFoo) { - bar(); - } else if (isBar()){ - anotherBar(); - } - becomes: - if (isFoo) { - bar(); - } else - if (isBar()){ - anotherBar(); - } - - - + + to put the if component of an else if on a + new line. + + if (isFoo) { + bar(); + } else if (isBar()){ + anotherBar(); + } + becomes: + if (isFoo) { + bar(); + } else + if (isBar()){ + anotherBar(); + } + + + - - to pad operators with a space. - - - if (isFoo) - a = bar((b-c)*a,*d--); - becomes: - if (isFoo) - a = bar((b - c) * a, *d--); - - + + to pad operators with a space. + + + if (isFoo) + a = bar((b-c)*a,*d--); + becomes: + if (isFoo) + a = bar((b - c) * a, *d--); + + - - to pad parenthesis with a space. - - if (isFoo) - a = bar((b-c)*a,*d--); - becomes: - if ( isFoo ) - a = bar( ( b-c )*a, *d-- ); - - + + to pad parenthesis with a space. + + if (isFoo) + a = bar((b-c)*a,*d--); + becomes: + if ( isFoo ) + a = bar( ( b-c )*a, *d-- ); + + - - to pad operators and parenthesis. - - - if (isFoo) - a = bar((b-c)*a,*d--); - becomes: - if ( isFoo ) - a = bar( ( b - c ) * a, *d-- ); - - + + to pad operators and parenthesis. + + + if (isFoo) + a = bar((b-c)*a,*d--); + becomes: + if ( isFoo ) + a = bar( ( b - c ) * a, *d-- ); + + - - to keep complex statements on the same line. - - - if (isFoo) - { - isFoo = false; cout << isFoo << endl; - } - remains as is. - if (isFoo) DoBar(); - remains as is. - - + + to keep complex statements on the same line. + + + if (isFoo) + { + isFoo = false; cout << isFoo << endl; + } + remains as is. + if (isFoo) DoBar(); + remains as is. + + - - to keep single line statements on the same line. - - if (isFoo) - { isFoo = false; cout << isFoo << endl; } - remains as is. - - + + to keep single line statements on the same line. + + if (isFoo) + { isFoo = false; cout << isFoo << endl; } + remains as is. + + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Changes the current working directory. - - - - Changes the current working directory to the "subdir" - directory, relative to the project base directory. - - - - ]]> - - + + Changes the current working directory. + + + + Changes the current working directory to the "subdir" + directory, relative to the project base directory. + + + + ]]> + + - - Changes the current directory. - + + Changes the current directory. + - - The path to which the current working directory should be set. - + + The path to which the current working directory should be set. + - - Calculates checksums for a set of files. - Loosely based on Ant's Checksum task. - - - This task takes a set of input files in a fileset - and calculates a checksum for each one of them. - You can specify the algorithm to use when calculating - the checksum value (MD5 or SHA1, for example). - The calculated value is saved to a file with the same - name as the input file and an added extension either - based on the algorithm name (e.g. .MD5), or whatever - is specified through the fileext attribute. - - - - - - - - - ]]> - - + + Calculates checksums for a set of files. + Loosely based on Ant's Checksum task. + + + This task takes a set of input files in a fileset + and calculates a checksum for each one of them. + You can specify the algorithm to use when calculating + the checksum value (MD5 or SHA1, for example). + The calculated value is saved to a file with the same + name as the input file and an added extension either + based on the algorithm name (e.g. .MD5), or whatever + is specified through the fileext attribute. + + + + + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Writes a checksum to a destination file - - - + + Writes a checksum to a destination file + + + - - Name of Algorithm to use when calculating - the checksum. Can be MD5 or SHA1. - + + Name of Algorithm to use when calculating + the checksum. Can be MD5 or SHA1. + - - The generated checksum file's name will be the - original filename with "." and fileext - added to it. Defaults to the - algorithm name being used - + + The generated checksum file's name will be the + original filename with "." and fileext + added to it. Defaults to the + algorithm name being used + - - Set of files to use as input - + + Set of files to use as input + @@ -13464,10 +13464,10 @@ - - One or more alternative sets of tasks to execute. - - The set of tasks to add. + + One or more alternative sets of tasks to execute. + + The set of tasks to add. @@ -13476,28 +13476,28 @@ - - Gets a value indicating whether a fallback element is defined. - - - if a fallback element is defined; otherwise, - . - + + Gets a value indicating whether a fallback element is defined. + + + if a fallback element is defined; otherwise, + . + - - Groups a set of tasks to execute when a condition is met. - + + Groups a set of tasks to execute when a condition is met. + - - Executes embedded tasks in the order in which they are defined. - + + Executes embedded tasks in the order in which they are defined. + - - Creates and executes the embedded (child XML nodes) elements. - + + Creates and executes the embedded (child XML nodes) elements. + @@ -13511,247 +13511,247 @@ - - Used to test arbitrary boolean expression. - + + Used to test arbitrary boolean expression. + - - Generates statistics from source code. - - - Scans files in a fileset counting lines. - - - - Generate statistics for a set of C# and VB.NET sources, applying - different labels for both. - - - - - - - - - - - - - - - - - ]]> - - - - - Generate statistics for all C# sources and only output a summary to - the log. - - - - - - - - - - - - ]]> - - + + Generates statistics from source code. + + + Scans files in a fileset counting lines. + + + + Generate statistics for a set of C# and VB.NET sources, applying + different labels for both. + + + + + + + + + + + + + + + + + ]]> + + + + + Generate statistics for all C# sources and only output a summary to + the log. + + + + + + + + + + + + ]]> + + - - Set of line counters to enable. - + + Set of line counters to enable. + - - An identifier to be able to track which build last updated the - code stats file. - + + An identifier to be able to track which build last updated the + code stats file. + - - Specifies whether the results should be appended to the output file. - The default is . - + + Specifies whether the results should be appended to the output file. + The default is . + - - If you only want to show summary stats for the whole fileset - + + If you only want to show summary stats for the whole fileset + - - The name of the file to save the output to (in XML). - + + The name of the file to save the output to (in XML). + - - Register COM servers or type libraries. - - - - COM register task will try and register any type of COM related file - that needs registering. - - Executable files (.exe) will be registered as exe servers, type - libaries (.tlb) registered with RegisterTypeLib and for all other - filetypes it will attempt to register them as dll servers. - - - - Register a single dll server. - - - ]]> - - - - Register a single exe server - - - ]]> - - - - Register a set of COM files at once. - - - - - - - - - - ]]> - - + + Register COM servers or type libraries. + + + + COM register task will try and register any type of COM related file + that needs registering. + + Executable files (.exe) will be registered as exe servers, type + libaries (.tlb) registered with RegisterTypeLib and for all other + filetypes it will attempt to register them as dll servers. + + + + Register a single dll server. + + + ]]> + + + + Register a single exe server + + + ]]> + + + + Register a set of COM files at once. + + + + + + + + + + ]]> + + - - Register an inproc COM server, usually a .dll or .ocx - - + + Register an inproc COM server, usually a .dll or .ocx + + - - Register a COM type library - - + + Register a COM type library + + - - Register exe servers. - - + + Register exe servers. + + - - The name of the file to register. This is provided as an alternate - to using the task's fileset. - + + The name of the file to register. This is provided as an alternate + to using the task's fileset. + - Unregistering this time. ( /u paramater )Default is "false". + Unregistering this time. ( /u paramater )Default is "false". - - The set of files to register. - + + The set of files to register. + - - Helper class to synamically build an assembly with the correct - P/Invoke signature - + + Helper class to synamically build an assembly with the correct + P/Invoke signature + - - Register a given dll. - - - - + + Register a given dll. + + + + - - A task that concatenates a set of files. - Loosely based on Ant's Concat task. - - - - This task takes a set of input files in a fileset - and concatenates them into a single file. You can - either replace the output file, or append to it - by using the append attribute. - - - The order the files are concatenated in is not - especified. - - - - - - - - - - ]]> - - + + A task that concatenates a set of files. + Loosely based on Ant's Concat task. + + + + This task takes a set of input files in a fileset + and concatenates them into a single file. You can + either replace the output file, or append to it + by using the append attribute. + + + The order the files are concatenated in is not + especified. + + + + + + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Opens the destination file according - to the specified flags - - + + Opens the destination file according + to the specified flags + + - - Appends all specified files - - File to write to + + Appends all specified files + + File to write to - - Name of the destination file. - + + Name of the destination file. + - - Specifies whether to append to the destination file. - The default is . - + + Specifies whether to append to the destination file. + The default is . + - - Set of files to use as input. - + + Set of files to use as input. + @@ -13762,17 +13762,17 @@ The depends task never forces the execution of any target that has already been executed. It works just like the depends attribute of a . - - Executes the specified task. - + + Executes the specified task. + - - A space or comma separated dependency list of targets. - - - Expressions get evaluated when the task is executed. - + + A space or comma separated dependency list of targets. + + + Expressions get evaluated when the task is executed. + @@ -13796,84 +13796,84 @@ - - Discover the details for the specified web service. - + + Discover the details for the specified web service. + - The URL or Path to discover. + The URL or Path to discover. - Suppresses the banner. + Suppresses the banner. - Do not save the discovered documents to the local disk. + Do not save the discovered documents to the local disk. - The output directory to save discovered documents in. + The output directory to save discovered documents in. - Username of an account with credentials to access a - server that requires authentication. + Username of an account with credentials to access a + server that requires authentication. - Password of an account with credentials to access a - server that requires authentication. + Password of an account with credentials to access a + server that requires authentication. - Domain of an account with credentials to access a - server that requires authentication. + Domain of an account with credentials to access a + server that requires authentication. - URL of a proxy server to use for HTTP requests. - The default is to use the system proxy setting. + URL of a proxy server to use for HTTP requests. + The default is to use the system proxy setting. - Username of an account with credentials to access a - proxy that requires authentication. + Username of an account with credentials to access a + proxy that requires authentication. - Password of an account with credentials to access a - proxy that requires authentication. + Password of an account with credentials to access a + proxy that requires authentication. - Domain of an account with credentials to access a - proxy that requires authentication. + Domain of an account with credentials to access a + proxy that requires authentication. - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Analyzes managed code assemblies and reports information about the - assemblies, such as possible design, localization, performance, and - security improvements. - - - - this task relies on fxcopcmd.exe being in your PATH environment variable. - You can download the latest FxCop from . - - - - - - - - - - - - - ]]> - - + + Analyzes managed code assemblies and reports information about the + assemblies, such as possible design, localization, performance, and + security improvements. + + + + this task relies on fxcopcmd.exe being in your PATH environment variable. + You can download the latest FxCop from . + + + + + + + + + + + + + ]]> + + @@ -13881,187 +13881,187 @@ - - Performs logic before the external process is started - - Process. + + Performs logic before the external process is started + + Process. - - Executes the task. - + + Executes the task. + - - Builds the arguments to pass to the exe. - + + Builds the arguments to pass to the exe. + - - Applies the XSL transformation specified in /outXsl to the analysis report before saving the file. - + + Applies the XSL transformation specified in /outXsl to the analysis report before saving the file. + - - Directs analysis output to the console or to the Output window in Visual Studio .NET. By default, the XSL file FxCopConsoleOutput.xsl is applied to the output before it is displayed. - + + Directs analysis output to the console or to the Output window in Visual Studio .NET. By default, the XSL file FxCopConsoleOutput.xsl is applied to the output before it is displayed. + - - Specifies the XSL or XSLT file that contains a transformation to be applied to the analysis output before it is displayed in the console. - + + Specifies the XSL or XSLT file that contains a transformation to be applied to the analysis output before it is displayed in the console. + - - Specifies additional directories to search for assembly dependencies. FxCopCmd always searches the target assembly directory and the current working directory. - + + Specifies additional directories to search for assembly dependencies. FxCopCmd always searches the target assembly directory and the current working directory. + - - Specifies the target assembly to analyze. - + + Specifies the target assembly to analyze. + - - Specifies the name of an analysis report or project file to import. Any messages in the imported file that are marked as excluded are not included in the analysis results. - + + Specifies the name of an analysis report or project file to import. Any messages in the imported file that are marked as excluded are not included in the analysis results. + - - Specifies the file name for the analysis report. - + + Specifies the file name for the analysis report. + - - Specifies the XSL or XSLT file that is referenced by the xml-stylesheet processing instruction in the analysis report. - + + Specifies the XSL or XSLT file that is referenced by the xml-stylesheet processing instruction in the analysis report. + - - Specifies the location of the version of Mscorlib.dll that was used when building the target assemblies if this version is not installed on the computer running FxCopCmd. - + + Specifies the location of the version of Mscorlib.dll that was used when building the target assemblies if this version is not installed on the computer running FxCopCmd. + - - Specifies the filename of FxCop project file. - + + Specifies the filename of FxCop project file. + - - Specifies the filename(s) of FxCop project file(s). - + + Specifies the filename(s) of FxCop project file(s). + - - Includes a summary report with the informational messages returned by FxCopCmd. - + + Includes a summary report with the informational messages returned by FxCopCmd. + - - Comma-separated list of type names to analyze. This option disables analysis of assemblies, namespaces, and resources; only the specified types and their members are included in the analysis. - Use the wildcard character '*' at the end of the name to select multiple types. - + + Comma-separated list of type names to analyze. This option disables analysis of assemblies, namespaces, and resources; only the specified types and their members are included in the analysis. + Use the wildcard character '*' at the end of the name to select multiple types. + - - Saves the results of the analysis in the project file. - + + Saves the results of the analysis in the project file. + - - Determines if the task should fail when analysis errors occur - + + Determines if the task should fail when analysis errors occur + - - The directory in which the command will be executed. - - - The directory in which the command will be executed. The default - is the project's base directory. - - - - It will be evaluated relative to the project's - base directory if it is relative. - - + + The directory in which the command will be executed. + + + The directory in which the command will be executed. The default + is the project's base directory. + + + + It will be evaluated relative to the project's + base directory if it is relative. + + - - Gets the program arguments. - + + Gets the program arguments. + - - Installs assemblies into the Global Assembly Cache (GAC) by using the - gacutil SDK tool. - - - - Assemblies can be installed to the GAC with or without reference counting. - The full details of reference counting can be found in the SDK - documentation. - - - - Installs Shared.dll into the GAC. - - - - - - - ]]> - - - - - Installs Shared.dll and MyWeb.dll into the GAC. - - - - - - - - - ]]> - - - - - Installs Shared.dll and MyWeb.dll into the GAC and - specifies reference information. - - - - - - - - - - ]]> - - + + Installs assemblies into the Global Assembly Cache (GAC) by using the + gacutil SDK tool. + + + + Assemblies can be installed to the GAC with or without reference counting. + The full details of reference counting can be found in the SDK + documentation. + + + + Installs Shared.dll into the GAC. + + + + + + + ]]> + + + + + Installs Shared.dll and MyWeb.dll into the GAC. + + + + + + + + + ]]> + + + + + Installs Shared.dll and MyWeb.dll into the GAC and + specifies reference information. + + + + + + + + + + ]]> + + - - Base class functionality for the GAC tasks. - - - Concrete GAC tasks extend this class in order to obtain common functionality. - + + Base class functionality for the GAC tasks. + + + Concrete GAC tasks extend this class in order to obtain common functionality. + - - Stores the details of the assembly currently being operated against. This could be a name or - path, depending on the concrete task. - + + Stores the details of the assembly currently being operated against. This could be a name or + path, depending on the concrete task. + @@ -14074,101 +14074,101 @@ - - Constructs and initialises an instance of GacTask. - + + Constructs and initialises an instance of GacTask. + - - Starts the process that is wrapped by this GAC task. - - - Provided only to seal the implementation of StartProcess(). - - The process that was started. + + Starts the process that is wrapped by this GAC task. + + + Provided only to seal the implementation of StartProcess(). + + The process that was started. - - Validates the task's configuration. - + + Validates the task's configuration. + - - Executes the task. - - - Provided only to seal the implementation of ExecuteTask(). - + + Executes the task. + + + Provided only to seal the implementation of ExecuteTask(). + - - Appends any task-specific program arguments. - - The StringBuilder on which to append program arguments. - - Subclasses must override this method to return the arguments with which to run the GAC task. - + + Appends any task-specific program arguments. + + The StringBuilder on which to append program arguments. + + Subclasses must override this method to return the arguments with which to run the GAC task. + - - Invoked prior to invoking ExecuteTask() on the base class. - - - Allows, for example, subclasses to output useful information to the log. - + + Invoked prior to invoking ExecuteTask() on the base class. + + + Allows, for example, subclasses to output useful information to the log. + - - Gets or sets a value indicating whether the GAC operation will be forced. - - - The exact meaning of this property is dependent on the subclass. As such, subclasses should override this - property to provide a valid description. - + + Gets or sets a value indicating whether the GAC operation will be forced. + + + The exact meaning of this property is dependent on the subclass. As such, subclasses should override this + property to provide a valid description. + - - Specifies reference details to use when working with the GAC. - + + Specifies reference details to use when working with the GAC. + - - Concrete GAC tasks must override this property to return an array of assembly names or paths - upon which to operate. - + + Concrete GAC tasks must override this property to return an array of assembly names or paths + upon which to operate. + - - Gets the executable name for the gacutil command-line tool. - + + Gets the executable name for the gacutil command-line tool. + - - Specifies whether a reference was specified for the GAC task. - + + Specifies whether a reference was specified for the GAC task. + - - Gets the current assembly being operated against. - + + Gets the current assembly being operated against. + - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + - - Gets the program arguments with which to run the gacutil process. - + + Gets the program arguments with which to run the gacutil process. + @@ -14176,37 +14176,37 @@ - - Constructs and initialises an instance of the GacInstallTask. - + + Constructs and initialises an instance of the GacInstallTask. + - - Appends any install-specific arguments. - - The StringBuilder to append arguments to. + + Appends any install-specific arguments. + + The StringBuilder to append arguments to. - - Outputs log information. - + + Outputs log information. + - - Specifies the assemblies to install. - + + Specifies the assemblies to install. + - - Gets the assembly list to install. - + + Gets the assembly list to install. + - - If , the specified assemblies will be forcibly - installed. Any existing duplicate assemblies in the GAC will be - overwritten. The default is . - + + If , the specified assemblies will be forcibly + installed. Any existing duplicate assemblies in the GAC will be + overwritten. The default is . + @@ -14268,9 +14268,9 @@ - - The name of a file that contains an assembly manifest. - + + The name of a file that contains an assembly manifest. + @@ -14279,22 +14279,22 @@ - - Fileset are used to define multiple assemblies. - + + Fileset are used to define multiple assemblies. + - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + @@ -14303,21 +14303,21 @@ - - Installs an assembly into the global assembly cache. - + + Installs an assembly into the global assembly cache. + - - Installs an assembly into the global assembly cache. If an assembly - with the same name already exists in the global assembly cache, it is - overwritten. - + + Installs an assembly into the global assembly cache. If an assembly + with the same name already exists in the global assembly cache, it is + overwritten. + - - Uninstalls an assembly from the global assembly cache. - + + Uninstalls an assembly from the global assembly cache. + @@ -14425,253 +14425,253 @@ - - Constructs an instance of the GacUninstallTask. - + + Constructs an instance of the GacUninstallTask. + - - Appends any install-specific arguments. - - + + Appends any install-specific arguments. + + - - Outputs log information. - + + Outputs log information. + - - If , specifies that the assemblies should be - uninstalled from the native image cache. The default is . - + + If , specifies that the assemblies should be + uninstalled from the native image cache. The default is . + - - Specifies the assemblies to uninstall. - + + Specifies the assemblies to uninstall. + - - Gets the assembly list to uninstall. - + + Gets the assembly list to uninstall. + - - If , the specified assemblies will be forcibly - removed from the GAC. All references to the specified assemblies will - be removed from the GAC prior to removing the assemblies themselves. - The default is . - - - You cannot use this option to remove an assembly that was installed using Microsoft Windows Installer. - + + If , the specified assemblies will be forcibly + removed from the GAC. All references to the specified assemblies will + be removed from the GAC prior to removing the assemblies themselves. + The default is . + + + You cannot use this option to remove an assembly that was installed using Microsoft Windows Installer. + - - Compiles a Microsoft HTML Help 2.0 Project. - - - Compile a help file. - - - ]]> - - + + Compiles a Microsoft HTML Help 2.0 Project. + + + Compile a help file. + + + ]]> + + - - The name of the contents (.HxC) file. - + + The name of the contents (.HxC) file. + - - ANSI/DBCS log filename. - + + ANSI/DBCS log filename. + - - Unicode log filename. - + + Unicode log filename. + - - Root directory containing Help 2.0 project files. - + + Root directory containing Help 2.0 project files. + - - Output (.HxS) filename. - + + Output (.HxS) filename. + - - Generate no informational messages. - + + Generate no informational messages. + - - Generate no error messages. - + + Generate no error messages. + - - Generate no warning messages. - + + Generate no warning messages. + - - File to be decompiled. - + + File to be decompiled. + - - Directory to place decompiled files into. - + + Directory to place decompiled files into. + - - Arguments of program to execute - + + Arguments of program to execute + - - Registers a Microsoft HTML Help 2.0 Collection. - - - Register a help namespace. - - - ]]> - - + + Registers a Microsoft HTML Help 2.0 Collection. + + + Register a help namespace. + + + ]]> + + - Help collection namespace. + Help collection namespace. - Title identifier. + Title identifier. - Collection (.HxC) filename. + Collection (.HxC) filename. - Description of the namespace. + Description of the namespace. - Help (.HxS) filename. + Help (.HxS) filename. - Index (.HxI) filename. + Index (.HxI) filename. - Combined full-text search (.HxQ) filename. + Combined full-text search (.HxQ) filename. - Combined attribute index (.HxR) filename. + Combined attribute index (.HxR) filename. - Language ID. + Language ID. - Alias. + Alias. - Filename of a file containing HxReg commands. + Filename of a file containing HxReg commands. - Unregister a namespace, title, or alias. + Unregister a namespace, title, or alias. - - Arguments of program to execute - + + Arguments of program to execute + - - Reads String values in INI files. - - Reads the value for AutoRefresh in the MS Transaction Server section - of the VendorMISMO2.ini ini file. Stores the value in the "myvar" property. - - - - ]]> - - The file contents look like this: - - [MS Transaction Server] - Executable="VendorMISMO2.dll" - AutoRefresh=1 - - + + Reads String values in INI files. + + Reads the value for AutoRefresh in the MS Transaction Server section + of the VendorMISMO2.ini ini file. Stores the value in the "myvar" property. + + + + ]]> + + The file contents look like this: + + [MS Transaction Server] + Executable="VendorMISMO2.dll" + AutoRefresh=1 + + - - INI File to Write To. - + + INI File to Write To. + - - Key to set the value for. - + + Key to set the value for. + - - value to set. - + + value to set. + - - Section in the INI file. - + + Section in the INI file. + - - property where we store the return value. - + + property where we store the return value. + - - Sets String values in INI files. - - - Set the value for Executable in the VendorMISMO2.ini ini file - - - ]]> - - The file contents look like this: - - [MS Transaction Server] - Executable="VendorMISMO2.dll" - AutoRefresh=1 - - + + Sets String values in INI files. + + + Set the value for Executable in the VendorMISMO2.ini ini file + + + ]]> + + The file contents look like this: + + [MS Transaction Server] + Executable="VendorMISMO2.dll" + AutoRefresh=1 + + - - INI File to Write To. - + + INI File to Write To. + - - Key to set the value for. - + + Key to set the value for. + - - value to set. - + + value to set. + - - Section in the INI file. - + + Section in the INI file. + @@ -14684,231 +14684,231 @@ - Starts a server and a client process on the local computer, and stops - the server process once the client process has finished executing. + Starts a server and a client process on the local computer, and stops + the server process once the client process has finished executing. + + + + + + ]]> + + + + + + The unique identifier of the process to stop. + + + + + The name of the computer on the network on which the process must + be stopped. The default is the local computer. + + + + + The maximum amount of time to wait until the process is stopped, + expressed in milliseconds. The default is to wait indefinitely. + + + + + Loads a file's contents as NAnt properties. + + + + Each line in a .properties file stores a single property, with the + name and value separated by an equals sign. + + + Empty lines and lines that start with a '#' character are skipped. + + - - + ]]> - - - The unique identifier of the process to stop. - - - - - The name of the computer on the network on which the process must - be stopped. The default is the local computer. - - - - - The maximum amount of time to wait until the process is stopped, - expressed in milliseconds. The default is to wait indefinitely. - - - - - Loads a file's contents as NAnt properties. - - - - Each line in a .properties file stores a single property, with the - name and value separated by an equals sign. - - - Empty lines and lines that start with a '#' character are skipped. - - - - - - ]]> - - - - - The encoding to use when loading the file. The default is the - system's current ANSI code page. - + + The encoding to use when loading the file. The default is the + system's current ANSI code page. + - - The file to load properties from. - + + The file to load properties from. + - - Chain of filters used to alter the file's content as it is - copied. - + + Chain of filters used to alter the file's content as it is + copied. + - - A task that generates strongly typed WMI classes using - mgmtclassgen.exe. - - - The Management Strongly Typed Class Generator - enables you to quickly generate an early-bound - managed class for a specified Windows Management - Instrumentation (WMI) class. The generated - class simplifies the code you must write to access - an instance of the WMI class. - - - - - ]]> - - + + A task that generates strongly typed WMI classes using + mgmtclassgen.exe. + + + The Management Strongly Typed Class Generator + enables you to quickly generate an early-bound + managed class for a specified Windows Management + Instrumentation (WMI) class. The generated + class simplifies the code you must write to access + an instance of the WMI class. + + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Specifies the name of the WMI class - to generate the strongly typed class - + + Specifies the name of the WMI class + to generate the strongly typed class + - - Specifies the language in which to generate - the class. Possible values are: CS, VB, JS - + + Specifies the language in which to generate + the class. Possible values are: CS, VB, JS + - - Specifies the machine to connect to. - + + Specifies the machine to connect to. + - - Specifies the path to the WMI namespace - that contains the class. - + + Specifies the path to the WMI namespace + that contains the class. + - - Namespace of the generated .NET class - + + Namespace of the generated .NET class + - - Path of the file to generate - + + Path of the file to generate + - - User name to use when connecting to - the specified machine - + + User name to use when connecting to + the specified machine + - - Password to use when connecting to the - specified machine - + + Password to use when connecting to the + specified machine + - - Filename of program to execute - + + Filename of program to execute + - - Arguments of program to execute - + + Arguments of program to execute + - - Builds the specified targets in the project file using MSBuild. - - - - If a project file is not specified, MSBuild searches the current - working directory for a file that has a file extension that ends in - "proj" and uses that file. - - + + Builds the specified targets in the project file using MSBuild. + + + + If a project file is not specified, MSBuild searches the current + working directory for a file that has a file extension that ends in + "proj" and uses that file. + + - - Starts the external process and captures its output. - + + Starts the external process and captures its output. + - - The project to build. - + + The project to build. + - - Set or override these project-level properties. - + + Set or override these project-level properties. + - - Build these targets in this project. Use a semicolon or a comma - comma to separate multiple targets. - + + Build these targets in this project. Use a semicolon or a comma + comma to separate multiple targets. + - - Do not auto-include the MSBuild.rsp file. - + + Do not auto-include the MSBuild.rsp file. + - - Specifies the amount of information to display in the MSBuild log. - + + Specifies the amount of information to display in the MSBuild log. + - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + - - Gets the command line arguments for the external program. - - - The command line arguments for the external program. - + + Gets the command line arguments for the external program. + + + The command line arguments for the external program. + @@ -14929,175 +14929,175 @@ - - Pre-translates native code for an assembly containing IL (Intermediary - Language bytecode) on the Windows platform. - - - - - ]]> - - + + Pre-translates native code for an assembly containing IL (Intermediary + Language bytecode) on the Windows platform. + + + + + ]]> + + - Assembly path or display name. + Assembly path or display name. - If existing images should be shown. + If existing images should be shown. - If existing images should be deleted. + If existing images should be deleted. - If an image should be generated which - can be used under a debugger. + If an image should be generated which + can be used under a debugger. - If an image should be generated which - can be used under a debugger in optimized - debugging mode. + If an image should be generated which + can be used under a debugger in optimized + debugging mode. - If an image should be generated which - can be used under a profiler. + If an image should be generated which + can be used under a profiler. - - Arguments of program to execute - + + Arguments of program to execute + - - A task that generates a summary HTML - from a set of NUnit xml report files. - Loosely based on Erik Hatcher JUnitReport for Ant. - - - This task can generate a combined HTML report out of a - set of NUnit result files generated using the - XML Result Formatter. - - By default, NUnitReport will generate the combined - report using the NUnitSummary.xsl file located at the - assembly's location, but you can specify a different - XSLT template to use with the xslfile - attribute. - - Also, all the properties defined in the current - project will be passed down to the XSLT file as - template parameters, so you can access properties - such as nant.project.name, nant.version, etc. - - - - - - - - - ]]> - + + A task that generates a summary HTML + from a set of NUnit xml report files. + Loosely based on Erik Hatcher JUnitReport for Ant. + + + This task can generate a combined HTML report out of a + set of NUnit result files generated using the + XML Result Formatter. + + By default, NUnitReport will generate the combined + report using the NUnitSummary.xsl file located at the + assembly's location, but you can specify a different + XSLT template to use with the xslfile + attribute. + + Also, all the properties defined in the current + project will be passed down to the XSLT file as + template parameters, so you can access properties + such as nant.project.name, nant.version, etc. + + + + + + + + + ]]> + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done - + + This is where the work is done + - - Initializes the XmlDocument instance - used to summarize the test results - - + + Initializes the XmlDocument instance + used to summarize the test results + + - - Builds an XsltArgumentList with all - the properties defined in the - current project as XSLT parameters. - - Property List + + Builds an XsltArgumentList with all + the properties defined in the + current project as XSLT parameters. + + Property List - - Loads the XSLT Transform - - - This method will load the file specified - through the the xslfile attribute, or - the default transformation included - as a managed resource. - - The Transformation to use + + Loads the XSLT Transform + + + This method will load the file specified + through the the xslfile attribute, or + the default transformation included + as a managed resource. + + The Transformation to use - - Name of Output HTML file. - + + Name of Output HTML file. + - - XSLT file used to generate the report. - + + XSLT file used to generate the report. + - - Set of XML files to use as input - + + Set of XML files to use as input + - - Custom XmlResolver used to load the - XSLT files out of this assembly resources. - + + Custom XmlResolver used to load the + XSLT files out of this assembly resources. + - - Loads the XSLT file - - - - - + + Loads the XSLT file + + + + + - - A task that records the build's output to a file. Loosely based on Ant's - Record - task. - - - This task allows you to record the build's output, or parts of it to a - file. You can start and stop recording at any place in the build process. - - - - - - ]]> - - + + A task that records the build's output to a file. Loosely based on Ant's + Record + task. + + + This task allows you to record the build's output, or parts of it to a + file. You can start and stop recording at any place in the build process. + + + + + + ]]> + + - - This is where the work is done. - + + This is where the work is done. + - - Name of destination file. - + + Name of destination file. + @@ -15127,68 +15127,68 @@ - - Registers an assembly for use from COM clients. - - - - Refer to the Regasm - documentation for more information on the regasm tool. - - - - - Register a single assembly. - - - - ]]> - - - - - Register an assembly while exporting a typelibrary. - - - - ]]> - - - - - Register a set of assemblies at once. - - - - - - - - - ]]> - - + + Registers an assembly for use from COM clients. + + + + Refer to the Regasm + documentation for more information on the regasm tool. + + + + + Register a single assembly. + + + + ]]> + + + + + Register an assembly while exporting a typelibrary. + + + + ]]> + + + + + Register a set of assemblies at once. + + + + + + + + + ]]> + + - - The name of the file to register. This is provided as an alternate - to using the task's fileset. - + + The name of the file to register. This is provided as an alternate + to using the task's fileset. + - - Registry file to export to instead of entering the types directly - into the registry. If a fileset is used then the entries are all - collated into this file. - + + Registry file to export to instead of entering the types directly + into the registry. If a fileset is used then the entries are all + collated into this file. + - - Set the code base registry setting. - + + Set the code base registry setting. + @@ -15198,31 +15198,31 @@ - - Only refer to already registered type libraries. - + + Only refer to already registered type libraries. + - - Export the assembly to the specified type library and register it. - This attribute is ignored when a fileset is specified. - + + Export the assembly to the specified type library and register it. + This attribute is ignored when a fileset is specified. + - - Unregister the assembly. The default is . - + + Unregister the assembly. The default is . + - - The set of files to register. - + + The set of files to register. + - - Indicates that class should be validated by an XML Schema. - - None. + + Indicates that class should be validated by an XML Schema. + + None. @@ -15255,151 +15255,151 @@ - - Specifies that no reference counting scheme will be used when performing the GAC task. - + + Specifies that no reference counting scheme will be used when performing the GAC task. + - - Specifies that registry-related reference counting will be used when performing the GAC task. - - - When the scheme type is set to UninstallKey, the related scheme ID should be set to the name of the application - set in the HKLM\Software\Microsoft\Windows\CurrentVersion registry key. - - + + Specifies that registry-related reference counting will be used when performing the GAC task. + + + When the scheme type is set to UninstallKey, the related scheme ID should be set to the name of the application + set in the HKLM\Software\Microsoft\Windows\CurrentVersion registry key. + + - - Specifies that file-based reference counting will be used when performing the GAC task. - - - When the scheme type is set to FilePath, the related scheme ID should be set to the full path to the executable - file that installs the assembly. - - + + Specifies that file-based reference counting will be used when performing the GAC task. + + + When the scheme type is set to FilePath, the related scheme ID should be set to the full path to the executable + file that installs the assembly. + + - - Specifies that custom information will be supplied to accommodate reference counting. - - - When the scheme type is set to Opaque, the related scheme ID can be set to any custom piece of information. - + + Specifies that custom information will be supplied to accommodate reference counting. + + + When the scheme type is set to Opaque, the related scheme ID can be set to any custom piece of information. + - - Copies a file to a remote server using scp. - - - Copies a file using scp to a remote server. - The Username Environment variable is used. - - - Copy a single file to a remote server and path. - - - ]]> - - + + Copies a file to a remote server using scp. + + + Copies a file using scp to a remote server. + The Username Environment variable is used. + + + Copy a single file to a remote server and path. + + + ]]> + + - - The program to execute. The default is "scp". - + + The program to execute. The default is "scp". + - - The command line arguments. - + + The command line arguments. + - - The file to transfer. - + + The file to transfer. + - - The server to send the file to. - + + The server to send the file to. + - - The path on the remote server. The default is "~". - + + The path on the remote server. The default is "~". + - - The username to connect as. The default is the value of the - USERNAME environment variable. - + + The username to connect as. The default is the value of the + USERNAME environment variable. + - - The path separator used by the program. The default is "/". - + + The path separator used by the program. The default is "/". + - - Gets the filename of the external program to start. - - - The filename of the external program. - + + Gets the filename of the external program to start. + + + The filename of the external program. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - The directory in which the command will be executed. - + + The directory in which the command will be executed. + - - Converts a Visual Studio.NET Solution to a NAnt build file or nmake file. - - - - Convert the solution MySolution.sln to the NAnt build file - MySolution.build and call the new build file. - - - - - - - - ]]> - - - - - Convert the solution MySolution.sln to the NAnt build file - MySolution.build. As the solution contains one or more web - projects, one or more maps needs to be specified. - - - - - - - - - ]]> - - + + Converts a Visual Studio.NET Solution to a NAnt build file or nmake file. + + + + Convert the solution MySolution.sln to the NAnt build file + MySolution.build and call the new build file. + + + + + + + + ]]> + + + + + Convert the solution MySolution.sln to the NAnt build file + MySolution.build. As the solution contains one or more web + projects, one or more maps needs to be specified. + + + + + + + + + ]]> + + @@ -15416,119 +15416,119 @@ - - The Visual Studio.NET solution file to convert. - + + The Visual Studio.NET solution file to convert. + - - The output file format - either nant or nmake. - + + The output file format - either nant or nmake. + - - The output file name. - + + The output file name. + - - Mappings from URI to directories. These are required for web projects. - + + Mappings from URI to directories. These are required for web projects. + - - Parameters to pass to SLiNgshoT. The parameter build.basedir is required. - + + Parameters to pass to SLiNgshoT. The parameter build.basedir is required. + - - A task to execute arbitrary SQL statements against a OLEDB data source. - - - You can specify a set of sql statements inside the - sql element, or execute them from a text file that contains them. You can also - choose to execute the statements in a single batch, or execute them one by one - (even inside a transaction, if you want to). - - - - Execute a set of statements inside a transaction. - - - - INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('My Job', 22, 45); - INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('Other Job', 09, 43); - SELECT * FROM jobs; - - ]]> - - - - - Execute a set of statements from a file and write all query results - to a file. - - - - ]]> - - - - - Execute a SQL script generated by SQL Server Enterprise Manager. - - - - ]]> - - + + A task to execute arbitrary SQL statements against a OLEDB data source. + + + You can specify a set of sql statements inside the + sql element, or execute them from a text file that contains them. You can also + choose to execute the statements in a single batch, or execute them one by one + (even inside a transaction, if you want to). + + + + Execute a set of statements inside a transaction. + + + + INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('My Job', 22, 45); + INSERT INTO jobs (job_desc, min_lvl, max_lvl) VALUES('Other Job', 09, 43); + SELECT * FROM jobs; + + ]]> + + + + + Execute a set of statements from a file and write all query results + to a file. + + + + ]]> + + + + + Execute a SQL script generated by SQL Server Enterprise Manager. + + + + ]]> + + - - Initializes task and ensures the supplied attributes are valid. - + + Initializes task and ensures the supplied attributes are valid. + - - This is where the work is done. - + + This is where the work is done. + - - Executes the SQL Statements one by one. - - + + Executes the SQL Statements one by one. + + - - Executes the SQL statements in a single batch. - - + + Executes the SQL statements in a single batch. + + @@ -15538,94 +15538,94 @@ to write output to. - - Connection string used to access database. - This should be an OleDB connection string. - + + Connection string used to access database. + This should be an OleDB connection string. + - - The encoding of the files containing SQL statements. The default is - the system's current ANSI code page. - + + The encoding of the files containing SQL statements. The default is + the system's current ANSI code page. + - - File where the sql statements are defined. - - - You cannot specify both a source and an inline set of statements. - + + File where the sql statements are defined. + + + You cannot specify both a source and an inline set of statements. + - - String that separates statements from one another. - + + String that separates statements from one another. + - - If true, the statements will be executed as a single batch. - If false, they will be executed one by one. Default is true. - + + If true, the statements will be executed as a single batch. + If false, they will be executed one by one. Default is true. + - - If true, the any nant-style properties on the sql will be - expanded before execution. Default is true. - + + If true, the any nant-style properties on the sql will be + expanded before execution. Default is true. + - - Command timeout to use when creating commands. - + + Command timeout to use when creating commands. + - - Kind of delimiter used. Allowed values are Normal or Line. - - - Delimiters can be of two kinds: Normal delimiters are - always specified inline, so they permit having two - different statements in the same line. Line delimiters, - however, need to be in a line by their own. - Default is Normal. - + + Kind of delimiter used. Allowed values are Normal or Line. + + + Delimiters can be of two kinds: Normal delimiters are + always specified inline, so they permit having two + different statements in the same line. Line delimiters, + however, need to be in a line by their own. + Default is Normal. + - - If set to true, results from the statements will be - output to the build log. - + + If set to true, results from the statements will be + output to the build log. + - - If set, the results from the statements will be output to the - specified file. - + + If set, the results from the statements will be output to the + specified file. + - - If set to , all statements will be executed - within a single transaction. The default is . - + + If set to , all statements will be executed + within a single transaction. The default is . + - - Whether output should be appended to or overwrite - an existing file. The default is . - + + Whether output should be appended to or overwrite + an existing file. The default is . + - - If set to , prints headers for result sets. - The default is . - + + If set to , prints headers for result sets. + The default is . + - - The character(s) to surround result columns with when printing, the - default is an empty string. - + + The character(s) to surround result columns with when printing, the + default is an empty string. + @@ -15795,268 +15795,268 @@ - - The tasks in this block will be executed as a normal part of - the build script. - + + The tasks in this block will be executed as a normal part of + the build script. + - - The tasks in this block will be executed if any task in the try - block fails. - + + The tasks in this block will be executed if any task in the try + block fails. + - - The tasks in this block will always be executed, regardless of - what happens in the try and catch blocks. - - - Note that any failure in any of the tasks in this block will - prevent any subsequent tasks from executing. - + + The tasks in this block will always be executed, regardless of + what happens in the try and catch blocks. + + + Note that any failure in any of the tasks in this block will + prevent any subsequent tasks from executing. + - - Defines the name of the property to save the message describing - the failure that has been caught. - - - - The failure message is only available in the context of the catch - block. If you wish to preserve the message, you will need to save - it into another property. - - - Readonly properties cannot be overridden by this mechanism. - - + + Defines the name of the property to save the message describing + the failure that has been caught. + + + + The failure message is only available in the context of the catch + block. If you wish to preserve the message, you will need to save + it into another property. + + + Readonly properties cannot be overridden by this mechanism. + + - Generates collection classes based on a given XML specification file. Code generation is in the specified language. - - See the CollectionGen tool page for more information. - - - - - - - - - ]]> - - + Generates collection classes based on a given XML specification file. Code generation is in the specified language. + + See the CollectionGen tool page for more information. + + + + + + + + + ]]> + + - - The actual generation work is done here. - - - + + The actual generation work is done here. + + + - The language to generate collection classes for. Valid values are "CSharp" or "VB". + The language to generate collection classes for. Valid values are "CSharp" or "VB". - The name of the template file for collection generation. This is provided as an alternate to using the task's fileset. + The name of the template file for collection generation. This is provided as an alternate to using the task's fileset. - - All files in this fileset will be run thru the collection generator. - + + All files in this fileset will be run thru the collection generator. + - - Validates a set of XML files based on a set of XML Schemas (XSD). - - - - - - - - - - - - - ]]> - - + + Validates a set of XML files based on a set of XML Schemas (XSD). + + + + + + + + + + + + + ]]> + + - - This is where the work is done. - + + This is where the work is done. + - - The XML files that must be validated. - + + The XML files that must be validated. + - - The XML Schemas (XSD) to use for validation. - + + The XML Schemas (XSD) to use for validation. + - - Compiles Microsoft Visual Basic 6 programs. - - - - Uses the VB6.EXE executable included with the Visual Basic 6 - environment. - - - The compiler uses the settings and source files specified in the - project or group file. - - - - - Build the project HelloWorld.vbp in the build directory. - - - - ]]> - - - - - Check compiled property "vb6.compiled" - - - - - ]]> - - + + Compiles Microsoft Visual Basic 6 programs. + + + + Uses the VB6.EXE executable included with the Visual Basic 6 + environment. + + + The compiler uses the settings and source files specified in the + project or group file. + + + + + Build the project HelloWorld.vbp in the build directory. + + + + ]]> + + + + + Check compiled property "vb6.compiled" + + + + + ]]> + + - - Compiles the Visual Basic project or project group. - + + Compiles the Visual Basic project or project group. + - - Parses a VB group file and extract the file names of the sub-projects - in the group. - - The file name of the group file. - - A string collection containing the list of sub-projects in the group. - + + Parses a VB group file and extract the file names of the sub-projects + in the group. + + The file name of the group file. + + A string collection containing the list of sub-projects in the group. + - - Determines if a VB project needs to be recompiled by comparing the timestamp of - the project's files and references to the timestamp of the last built version. - - The file name of the project file. - - if the project should be compiled; otherwise, - . - + + Determines if a VB project needs to be recompiled by comparing the timestamp of + the project's files and references to the timestamp of the last built version. + + The file name of the project file. + + if the project should be compiled; otherwise, + . + - - VB6 uses a special algorithm to search for the typelib file. It doesn't - rely on the API function QueryPathOfRegTypeLib, because VB could use a newer - version of the TLB. - - The algorithm used by VB is not perfect and has some flaws, which you could - get a newer version even if your requested version is installed. This is because - the algorithm iterates the registry beneath the Guid - entry by entry - from the - beginning and returns the first TLB version that is higher or equal to the - requested version. - - pseudo code: - 1. open the key HKEY_CLASSES_ROOT\TypeLib\{Guid} - 2. If the key exists: - 3. Foreach version under the key that has the requested culture entry: - 4. If the version higher or equal to the requested version: - 5. Get the TLB filename and returns it - - The guid of the tlb to look for - The major version number of the tlb - The minor version number of the tlb. If you parse minor from a string, treat the string as hex value. - The culture id - null if couldn't find a match, otherwise it returns the file. + + VB6 uses a special algorithm to search for the typelib file. It doesn't + rely on the API function QueryPathOfRegTypeLib, because VB could use a newer + version of the TLB. + + The algorithm used by VB is not perfect and has some flaws, which you could + get a newer version even if your requested version is installed. This is because + the algorithm iterates the registry beneath the Guid - entry by entry - from the + beginning and returns the first TLB version that is higher or equal to the + requested version. + + pseudo code: + 1. open the key HKEY_CLASSES_ROOT\TypeLib\{Guid} + 2. If the key exists: + 3. Foreach version under the key that has the requested culture entry: + 4. If the version higher or equal to the requested version: + 5. Get the TLB filename and returns it + + The guid of the tlb to look for + The major version number of the tlb + The minor version number of the tlb. If you parse minor from a string, treat the string as hex value. + The culture id + null if couldn't find a match, otherwise it returns the file. - - Parses a VB project file and extracts the source files, reference files, and - the name of the compiled file for the project. - - The filename of the project file. - - A fileset representing the source files of the project, which will - populated by the method. - - - A fileset representing the references of the project, which will - populated by the method. - - A string containing the output file name for the project. + + Parses a VB project file and extracts the source files, reference files, and + the name of the compiled file for the project. + + The filename of the project file. + + A fileset representing the source files of the project, which will + populated by the method. + + + A fileset representing the references of the project, which will + populated by the method. + + A string containing the output file name for the project. - - Output directory for the compilation target. - + + Output directory for the compilation target. + - - Visual Basic project or group file. - + + Visual Basic project or group file. + - - Determines whether project references are checked when deciding - whether the project needs to be recompiled. The default is - . - + + Determines whether project references are checked when deciding + whether the project needs to be recompiled. The default is + . + - - The file to which the Visual Basic compiler should log errors. - + + The file to which the Visual Basic compiler should log errors. + - - Tells Visual Basic which values to use for conditional compilation - constants. - + + Tells Visual Basic which values to use for conditional compilation + constants. + - - The name of a property in which will be set to - if compilation was needed and done without errors (default: "vb6.compiled") - This can be used for touching the compilation files if - vb6 autoincrement is set to true to avoid recompilation without any - other changes. - + + The name of a property in which will be set to + if compilation was needed and done without errors (default: "vb6.compiled") + This can be used for touching the compilation files if + vb6 autoincrement is set to true to avoid recompilation without any + other changes. + - - Gets the filename of the external program to start. - - - The filename of the external program. - + + Gets the filename of the external program to start. + + + The filename of the external program. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + @@ -16128,22 +16128,22 @@ The version to write to . - - Calculates the build number based on the number of months since the - start date. - - - The build number based on the number of months since the start date. - + + Calculates the build number based on the number of months since the + start date. + + + The build number based on the number of months since the start date. + - - Calculates the number of seconds since midnight. - start date. - - - The number of seconds since midnight. - + + Calculates the number of seconds since midnight. + start date. + + + The number of seconds since midnight. + @@ -16155,26 +16155,26 @@ - - Calculates the complete version. - - - The version. - + + Calculates the complete version. + + + The version. + - - Calculates the revision number of the version number based on RevisionType specified - - - The revision number. - + + Calculates the revision number of the version number based on RevisionType specified + + + The revision number. + - - The string to prefix the properties with. The default is - 'buildnumber.'. - + + The string to prefix the properties with. The default is + 'buildnumber.'. + @@ -16184,10 +16184,10 @@ - - Path to the file containing the current version number. The default - file is 'build.number' in the project base directory. - + + Path to the file containing the current version number. The default + file is 'build.number' in the project base directory. + @@ -16202,40 +16202,40 @@ - - Defines possible algorithms to generate the build number. - + + Defines possible algorithms to generate the build number. + - - Use the number of months since start of project * 100 + current - day in month as build number. - + + Use the number of months since start of project * 100 + current + day in month as build number. + - - Increment an existing build number. - + + Increment an existing build number. + - - Use an existing build number (and do not increment it). - + + Use an existing build number (and do not increment it). + - - Defines possible algorithms to generate the revision number. - + + Defines possible algorithms to generate the revision number. + - - Use the number of seconds since the start of today / 10. - + + Use the number of seconds since the start of today / 10. + - - Increment an existing revision number. - + + Increment an existing revision number. + @@ -16267,110 +16267,110 @@ - - The unique identifier of the process to wait for. - + + The unique identifier of the process to wait for. + - - The maximum amount of time to wait until the process is exited, - expressed in milliseconds. The default is to wait indefinitely. - + + The maximum amount of time to wait until the process is exited, + expressed in milliseconds. The default is to wait indefinitely. + - Generates code for web service clients and xml web services - using ASP.NET from WSDL contract files, XSD Schemas and .discomap - discovery documents. Can be used in conjunction with .disco files. - - Generate a proxy class for a web service. - ]]> - + Generates code for web service clients and xml web services + using ASP.NET from WSDL contract files, XSD Schemas and .discomap + discovery documents. Can be used in conjunction with .disco files. + + Generate a proxy class for a web service. + ]]> + - URL or Path to a WSDL, XSD, or .discomap document. + URL or Path to a WSDL, XSD, or .discomap document. - Suppresses the banner. + Suppresses the banner. - Language of generated code. 'CS', 'VB', 'JS', - or the fully-qualified name of a class implementing - System.CodeDom.Compiler.CodeDomCompiler. + Language of generated code. 'CS', 'VB', 'JS', + or the fully-qualified name of a class implementing + System.CodeDom.Compiler.CodeDomCompiler. - Compiles server-side ASP.NET abstract classes - based on the web service contract. The default is to - create client side proxy classes. + Compiles server-side ASP.NET abstract classes + based on the web service contract. The default is to + create client side proxy classes. - Microsoft.NET namespace of generated classes. + Microsoft.NET namespace of generated classes. - Output filename of the created proxy. Default name is derived from the service name. + Output filename of the created proxy. Default name is derived from the service name. - Override default protocol to implement. Choose from 'SOAP', - 'HttpGet', 'HttpPost', or a custom protocol as specified in the - configuration file. + Override default protocol to implement. Choose from 'SOAP', + 'HttpGet', 'HttpPost', or a custom protocol as specified in the + configuration file. - Username of an account with credentials to access a - server that requires authentication. + Username of an account with credentials to access a + server that requires authentication. - Password of an account with credentials to access a - server that requires authentication. + Password of an account with credentials to access a + server that requires authentication. - Domain of an account with credentials to access a - server that requires authentication. + Domain of an account with credentials to access a + server that requires authentication. - URL of a proxy server to use for HTTP requests. - The default is to use the system proxy setting. + URL of a proxy server to use for HTTP requests. + The default is to use the system proxy setting. - Username of an account with credentials to access a - proxy that requires authentication. + Username of an account with credentials to access a + proxy that requires authentication. - Password of an account with credentials to access a - proxy that requires authentication. + Password of an account with credentials to access a + proxy that requires authentication. - Domain of an account with credentials to access a - proxy that requires authentication. + Domain of an account with credentials to access a + proxy that requires authentication. - Configuration key to use in the code generation to - read the default value for the Url property. The default is - not to read from the config file. + Configuration key to use in the code generation to + read the default value for the Url property. The default is + not to read from the config file. - Base Url to use when calculating the Url fragment. - The UrlKey attribute must also be specified. + Base Url to use when calculating the Url fragment. + The UrlKey attribute must also be specified. - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + @@ -16471,23 +16471,23 @@ - - XML Schema (.xsd) filename. - + + XML Schema (.xsd) filename. + - - Target of XML Schema compilation - either classes or - dataset. The default is classes. - + + Target of XML Schema compilation - either classes or + dataset. The default is classes. + - - XML element in the Schema to process. - - - TO-DO : turn this into collection of elements ! - + + XML element in the Schema to process. + + + TO-DO : turn this into collection of elements ! + @@ -16497,29 +16497,29 @@ - - Specifies the runtime namespace for the generated types. The default - namespace is Schemas. - + + Specifies the runtime namespace for the generated types. The default + namespace is Schemas. + - - The output directory in which to place generated files. - + + The output directory in which to place generated files. + - - Assembly (.dll or .exe) to generate an XML Schema for. - + + Assembly (.dll or .exe) to generate an XML Schema for. + - - Types in the assembly for which an XML schema is being created. - By default all types in the assembly will be included. - - - TO-DO : turn this into collection of types ! - + + Types in the assembly for which an XML schema is being created. + By default all types in the assembly will be included. + + + TO-DO : turn this into collection of types ! + @@ -16528,60 +16528,60 @@ - - XML document to generate an XML Schema for. - + + XML document to generate an XML Schema for. + - - XDR Schema to generate an XML Schema for. - + + XDR Schema to generate an XML Schema for. + - - Gets a value indiciating whether the external program is a managed - application which should be executed using a runtime engine, if - configured. - - - . - - - Modifying this property has no effect. - + + Gets a value indiciating whether the external program is a managed + application which should be executed using a runtime engine, if + configured. + + + . + + + Modifying this property has no effect. + - - Gets the command-line arguments for the external program. - - - The command-line arguments for the external program. - + + Gets the command-line arguments for the external program. + + + The command-line arguments for the external program. + - - Indicates the status of a service. - + + Indicates the status of a service. + - - The service is unbound. - + + The service is unbound. + - - The service is bound. - + + The service is bound. + - - The service is enlisted, but not started. - + + The service is enlisted, but not started. + - - The service is started. - + + The service is started. + @@ -16615,14 +16615,14 @@ - - Report with separate HTML frames. - + + Report with separate HTML frames. + - - Frameless report. - + + Frameless report. + @@ -16639,19 +16639,19 @@ - - Constructs and initializes an instance of Entity. - + + Constructs and initializes an instance of Entity. + - - The path for the entity. - + + The path for the entity. + - - If true then the entity will be included. The default is true. - + + If true then the entity will be included. The default is true. + @@ -16669,19 +16669,19 @@ - - Constructs and initializes an instance of EntitySet. - + + Constructs and initializes an instance of EntitySet. + - - Gets the collection of entity paths assigned to this entity set. - + + Gets the collection of entity paths assigned to this entity set. + - - The entities to include in the project task. - + + The entities to include in the project task. + @@ -16719,35 +16719,35 @@ - - Constructs and initializes an instance of Assembly. - + + Constructs and initializes an instance of Assembly. + - - Converts this Assembly object into it's string representation. - - + + Converts this Assembly object into it's string representation. + + - - The culture for the assembly. - + + The culture for the assembly. + - - If true then the assembly will be included. The default is true. - + + If true then the assembly will be included. The default is true. + - - The name of the assembly. - + + The name of the assembly. + - - The public key token of the assembly. - + + The public key token of the assembly. + @@ -16756,42 +16756,42 @@ - - The version of the assembly. - + + The version of the assembly. + - - Represents a set of assemblies via their identity information. - + + Represents a set of assemblies via their identity information. + - - Constructs and initializes an instance of AssemblySet. - + + Constructs and initializes an instance of AssemblySet. + - - Gets the collection of assemblies added to this assembly set. - + + Gets the collection of assemblies added to this assembly set. + - - The assemblies to include. - + + The assemblies to include. + - - The set of files to work on. - + + The set of files to work on. + - - The label to apply to the results. - + + The label to apply to the results. + @@ -16857,11 +16857,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -16894,10 +16894,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -16918,28 +16918,28 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + @@ -16947,14 +16947,14 @@ - - Holds the token which will be replaced in the filter operation. - + + Holds the token which will be replaced in the filter operation. + - - Holsd the value which will replace the token in the filtering operation. - + + Holsd the value which will replace the token in the filtering operation. + @@ -16970,14 +16970,14 @@ The value which will replace the token when filtering. - - The token which will be replaced when filtering. - + + The token which will be replaced when filtering. + - - The value which will replace the token when filtering. - + + The value which will replace the token when filtering. + @@ -17042,11 +17042,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -17079,10 +17079,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -17103,48 +17103,48 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - A set of filters to be applied to something. - - - - A filter set may have begintoken and endtokens defined. - - + + A set of filters to be applied to something. + + + + A filter set may have begintoken and endtokens defined. + + - - The default token start string. - + + The default token start string. + - - The default token end string. - + + The default token end string. + @@ -17152,30 +17152,30 @@ - - Does replacement on the given string with token matching. - - The line to process the tokens in. - - The line with the tokens replaced. - + + Does replacement on the given string with token matching. + + The line to process the tokens in. + + The line with the tokens replaced. + - - The string used to identity the beginning of a token. The default is - @. - + + The string used to identity the beginning of a token. The default is + @. + - - The string used to identify the end of a token. The default is - @. - + + The string used to identify the end of a token. The default is + @. + - - The filters to apply. - + + The filters to apply. + @@ -17229,11 +17229,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -17266,28 +17266,28 @@ The to remove from the collection. - - Does replacement on the given string with token matching. - - The line to process the tokens in. - - The line with the tokens replaced. - + + Does replacement on the given string with token matching. + + The line to process the tokens in. + + The line with the tokens replaced. + - - Checks to see if there are filters in the collection of filtersets. - - - if there are filters in this collection of - filtersets; otherwise, . - + + Checks to see if there are filters in the collection of filtersets. + + + if there are filters in this collection of + filtersets; otherwise, . + - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -17302,38 +17302,38 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Used to specify reference information when working with the GAC. - - - - The full details of GAC references can be found in the SDK documentation. - - + + Used to specify reference information when working with the GAC. + + + + The full details of GAC references can be found in the SDK documentation. + + @@ -17361,35 +17361,35 @@ - - Constructs and initializes an instance of GacReference. - + + Constructs and initializes an instance of GacReference. + - - If true then the entity will be included. The default is true. - + + If true then the entity will be included. The default is true. + - - The scheme type to use when working with GAC references. The default - is , which means that references will - not be used by the GAC task. - + + The scheme type to use when working with GAC references. The default + is , which means that references will + not be used by the GAC task. + - - The scheme ID to use when working with GAC references. This is only - relevant if a scheme type other than - is specified. - + + The scheme ID to use when working with GAC references. This is only + relevant if a scheme type other than + is specified. + - - The scheme description to use when working with GAC references. This - is only relevant if a scheme type other than - is specified. - + + The scheme description to use when working with GAC references. This + is only relevant if a scheme type other than + is specified. + @@ -17398,27 +17398,27 @@ - - Represents the an element based on a schema definition. - + + Represents the an element based on a schema definition. + - - Represents the schema collection element. - + + Represents the schema collection element. + - - Namespace URI associated with this schema. - If not present, it is assumed that the - schema's targetNamespace value is to be used. - + + Namespace URI associated with this schema. + If not present, it is assumed that the + schema's targetNamespace value is to be used. + - - Location of this schema. Could be a - local file path or an HTTP URL. - + + Location of this schema. Could be a + local file path or an HTTP URL. + @@ -17484,11 +17484,11 @@ - - Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. - - The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. - The zero-based index in at which copying begins. + + Copies the entire collection to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from the collection. The array must have zero-based indexing. + The zero-based index in at which copying begins. @@ -17521,10 +17521,10 @@ The to remove from the collection. - - Gets or sets the element at the specified index. - - The zero-based index of the element to get or set. + + Gets or sets the element at the specified index. + + The zero-based index of the element to get or set. @@ -17545,34 +17545,34 @@ The collection that should be enumerated. - - Advances the enumerator to the next element of the collection. - - - if the enumerator was successfully advanced - to the next element; if the enumerator has - passed the end of the collection. - + + Advances the enumerator to the next element of the collection. + + + if the enumerator was successfully advanced + to the next element; if the enumerator has + passed the end of the collection. + - - Sets the enumerator to its initial position, which is before the - first element in the collection. - + + Sets the enumerator to its initial position, which is before the + first element in the collection. + - - Gets the current element in the collection. - - - The current element in the collection. - + + Gets the current element in the collection. + + + The current element in the collection. + - - Helper class to calculate checksums - of files. - + + Helper class to calculate checksums + of files. + @@ -17582,50 +17582,50 @@ The specified hash algorithm does not exist. - - Calculates a checksum for a given file - and returns it in a hex string - - name of the input file - hex checksum string + + Calculates a checksum for a given file + and returns it in a hex string + + name of the input file + hex checksum string - - Converts a checksum value (a byte array) - into a Hex-formatted string. - - Checksum value to convert - Hexified string value + + Converts a checksum value (a byte array) + into a Hex-formatted string. + + Checksum value to convert + Hexified string value - - Recorder interface user with the Record task - + + Recorder interface user with the Record task + - - Starts recording. - + + Starts recording. + - - Stops recording. - + + Stops recording. + - - Closes the recorder. - + + Closes the recorder. + - - Flushes the recorder. - + + Flushes the recorder. + - - Gets the name of this recorder (possibly a file name). - + + Gets the name of this recorder (possibly a file name). + @@ -17633,15 +17633,15 @@ - - Defines whether the underlying writer is automatically flushes or - not. - + + Defines whether the underlying writer is automatically flushes or + not. + - - Keeps track of used recorders - + + Keeps track of used recorders + @@ -17650,9 +17650,9 @@ - - Flushes buffered build events or messages to the underlying storage. - + + Flushes buffered build events or messages to the underlying storage. + @@ -17720,11 +17720,11 @@ - - Empty implementation which allows derived classes to receive the - output that is generated in this logger. - - The message being logged. + + Empty implementation which allows derived classes to receive the + output that is generated in this logger. + + The message being logged. @@ -17754,28 +17754,28 @@ TODO - - Gets or sets the highest level of message this logger should respond - to. - - - The highest level of message this logger should respond to. - - - Only messages with a message level higher than or equal to the given - level should be written to the log. - + + Gets or sets the highest level of message this logger should respond + to. + + + The highest level of message this logger should respond to. + + + Only messages with a message level higher than or equal to the given + level should be written to the log. + - - Gets or sets a value indicating whether to produce emacs (and other - editor) friendly output. - - - if output is to be unadorned so that emacs - and other editors can parse files names, etc. The default is - . - + + Gets or sets a value indicating whether to produce emacs (and other + editor) friendly output. + + + if output is to be unadorned so that emacs + and other editors can parse files names, etc. The default is + . + @@ -17784,9 +17784,9 @@ - - Groups a set of useful file manipulation methods. - + + Groups a set of useful file manipulation methods. + @@ -17817,161 +17817,161 @@ The collection of filtersets that should be applied to the file. - - Given an absolute directory and an absolute file name, returns a - relative file name. - - An absolute directory. - An absolute file name. - - A relative file name for the given absolute file name. - + + Given an absolute directory and an absolute file name, returns a + relative file name. + + An absolute directory. + An absolute file name. + + A relative file name for the given absolute file name. + - - Returns a string from your INI file - - - - - + + Returns a string from your INI file + + + + + - - ' Writes a string to your INI file - - - - + + ' Writes a string to your INI file + + + + - - Helper class used to execute Sql Statements. - + + Helper class used to execute Sql Statements. + - - Initializes a new instance. - - OleDB Connection string - True if you want to use a transaction + + Initializes a new instance. + + OleDB Connection string + True if you want to use a transaction - - Close the connection and terminate - - true if the transaction should be commited + + Close the connection and terminate + + true if the transaction should be commited - - Executes a SQL statement. - - SQL statement to execute - Command timeout to use - Data reader used to check the result + + Executes a SQL statement. + + SQL statement to execute + Command timeout to use + Data reader used to check the result - - OleDB Connection object - + + OleDB Connection object + - - Helper class to adapt SQL statements from some - input into something OLEDB can consume directly - + + Helper class to adapt SQL statements from some + input into something OLEDB can consume directly + - - Creates a new instance - - + + Creates a new instance + + - - Adapts a set of Sql statements from a string. - - A string containing the original sql statements + + Adapts a set of Sql statements from a string. + + A string containing the original sql statements - - Adapts a set of Sql statements from a string. - - Path of file containing all sql statements - The encoding of the file containing the SQL statements. - The new instance + + Adapts a set of Sql statements from a string. + + Path of file containing all sql statements + The encoding of the file containing the SQL statements. + The new instance - - Determines how the delimiter is interpreted in a SQL string. - + + Determines how the delimiter is interpreted in a SQL string. + - - Delimiter can appear anywhere on a line. - + + Delimiter can appear anywhere on a line. + - - Delimiter always appears by itself on a line. - + + Delimiter always appears by itself on a line. + - - Helper class to maintain a list of SQL Statements. - + + Helper class to maintain a list of SQL Statements. + - - Initializes a new instance. - - String that separates statements from each other - Style of the delimiter + + Initializes a new instance. + + String that separates statements from each other + Style of the delimiter - - Parses the SQL into the internal list using the specified delimiter - and delimiter style - - The SQL string to parse. + + Parses the SQL into the internal list using the specified delimiter + and delimiter style + + The SQL string to parse. - - Parses the contents of the file into the - internal list using the specified delimiter - and delimiter style - - File name - The encoding of the file containing the SQL statements. + + Parses the contents of the file into the + internal list using the specified delimiter + and delimiter style + + File name + The encoding of the file containing the SQL statements. - - Allows foreach(). - - + + Allows foreach(). + + - - Expands project properties in the - sql string - - - + + Expands project properties in the + sql string + + + - - Gets the number of statements in the list. - + + Gets the number of statements in the list. + - - Gets the statement specified by the index. - + + Gets the statement specified by the index. + - - Project's properties for property expansion - + + Project's properties for property expansion + diff --git a/src/Net.Sf.Dbdeploy/Appliers/SqlCmdApplier.cs b/src/Net.Sf.Dbdeploy/Appliers/SqlCmdApplier.cs index 28d4638..c773f30 100644 --- a/src/Net.Sf.Dbdeploy/Appliers/SqlCmdApplier.cs +++ b/src/Net.Sf.Dbdeploy/Appliers/SqlCmdApplier.cs @@ -1,35 +1,35 @@ -namespace Net.Sf.Dbdeploy.Appliers -{ - using System; - using System.Collections.Generic; - using System.Globalization; - using System.IO; - using System.Linq; - using System.Text; - - using Net.Sf.Dbdeploy.Database; - using Net.Sf.Dbdeploy.Database.SqlCmd; - using Net.Sf.Dbdeploy.Exceptions; - using Net.Sf.Dbdeploy.Scripts; - - /// - /// Applier for running scripts using SQLCMD mode against MSSQL. - /// - public class SqlCmdApplier : IChangeScriptApplier - { - /// - /// The database connection string. - /// - private readonly string connectionString; - - /// - /// The info text writer to display output information. - /// - private readonly TextWriter infoTextWriter; - - /// - /// The schema version manager for tracking change scripts. - /// +namespace Net.Sf.Dbdeploy.Appliers +{ + using System; + using System.Collections.Generic; + using System.Globalization; + using System.IO; + using System.Linq; + using System.Text; + + using Net.Sf.Dbdeploy.Database; + using Net.Sf.Dbdeploy.Database.SqlCmd; + using Net.Sf.Dbdeploy.Exceptions; + using Net.Sf.Dbdeploy.Scripts; + + /// + /// Applier for running scripts using SQLCMD mode against MSSQL. + /// + public class SqlCmdApplier : IChangeScriptApplier + { + /// + /// The database connection string. + /// + private readonly string connectionString; + + /// + /// The info text writer to display output information. + /// + private readonly TextWriter infoTextWriter; + + /// + /// The schema version manager for tracking change scripts. + /// private readonly DatabaseSchemaVersionManager schemaVersionManager; /// @@ -54,39 +54,39 @@ public SqlCmdApplier( string connectionString, DatabaseSchemaVersionManager schemaVersionManager, IDbmsSyntax dbmsSyntax, - string changeLogTableName, - TextWriter infoTextWriter) - { - if (string.IsNullOrWhiteSpace(connectionString)) - { - throw new ArgumentNullException("connectionString"); - } - - if (schemaVersionManager == null) - { - throw new ArgumentNullException("schemaVersionManager"); + string changeLogTableName, + TextWriter infoTextWriter) + { + if (string.IsNullOrWhiteSpace(connectionString)) + { + throw new ArgumentNullException("connectionString"); } - if (dbmsSyntax == null) + if (schemaVersionManager == null) { - throw new ArgumentNullException("dbmsSyntax"); + throw new ArgumentNullException("schemaVersionManager"); } - if (changeLogTableName == null) + if (dbmsSyntax == null) { - throw new ArgumentNullException("changeLogTableName"); - } - - if (infoTextWriter == null) - { - throw new ArgumentNullException("infoTextWriter"); - } - + throw new ArgumentNullException("dbmsSyntax"); + } + + if (changeLogTableName == null) + { + throw new ArgumentNullException("changeLogTableName"); + } + + if (infoTextWriter == null) + { + throw new ArgumentNullException("infoTextWriter"); + } + this.schemaVersionManager = schemaVersionManager; this.dbmsSyntax = dbmsSyntax; this.changeLogTableName = changeLogTableName; - this.infoTextWriter = infoTextWriter; - this.connectionString = connectionString; + this.infoTextWriter = infoTextWriter; + this.connectionString = connectionString; } /// @@ -94,22 +94,22 @@ public SqlCmdApplier( /// /// The change scripts. /// Whether the change log table script should also be generated at the top - public void Apply(IEnumerable changeScripts, bool createChangeLogTable) + public void Apply(IEnumerable changeScripts, bool createChangeLogTable) { - using (var sqlCmdExecutor = new SqlCmdExecutor(this.connectionString)) + using (var sqlCmdExecutor = new SqlCmdExecutor(this.connectionString)) { if (createChangeLogTable) { CreateChangeLogTable(sqlCmdExecutor); } - this.infoTextWriter.WriteLine(changeScripts.Any() ? "Applying change scripts...\n" : "No changes to apply.\n"); - - foreach (var script in changeScripts) - { + this.infoTextWriter.WriteLine(changeScripts.Any() ? "Applying change scripts...\n" : "No changes to apply.\n"); + + foreach (var script in changeScripts) + { RunScript(script, sqlCmdExecutor); - } - } + } + } } private void CreateChangeLogTable(SqlCmdExecutor sqlCmdExecutor) @@ -155,5 +155,5 @@ private void RunScript(ChangeScript script, SqlCmdExecutor sqlCmdExecutor) output.ToString()); } } - } -} + } +} diff --git a/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs b/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs index 4bd0e52..119816b 100644 --- a/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs +++ b/src/Net.Sf.Dbdeploy/Database/PostgresqlDbmsSyntax.cs @@ -1,11 +1,11 @@ -namespace Net.Sf.Dbdeploy.Database -{ - public class PostgresqlDbmsSyntax : DbmsSyntax - { - /// - /// Initializes a new instance of the class. - /// - public PostgresqlDbmsSyntax() : base("postgresql") +namespace Net.Sf.Dbdeploy.Database +{ + public class PostgresqlDbmsSyntax : DbmsSyntax + { + /// + /// Initializes a new instance of the class. + /// + public PostgresqlDbmsSyntax() : base("postgresql") {} public override string TableExists(string tableName) @@ -13,26 +13,26 @@ public override string TableExists(string tableName) return base.TableExists(tableName.ToLowerInvariant()); } - /// - /// Gets the get timestamp. - /// - /// - /// The get timestamp. - /// - public override string CurrentTimestamp - { - get { return "CURRENT_TIMESTAMP"; } - } - - /// - /// Gets the syntax to get the current user. - /// - /// - /// The current user syntax. - /// - public override string CurrentUser - { - get { return "CURRENT_USER"; } - } - } + /// + /// Gets the get timestamp. + /// + /// + /// The get timestamp. + /// + public override string CurrentTimestamp + { + get { return "CURRENT_TIMESTAMP"; } + } + + /// + /// Gets the syntax to get the current user. + /// + /// + /// The current user syntax. + /// + public override string CurrentUser + { + get { return "CURRENT_USER"; } + } + } } \ No newline at end of file diff --git a/src/Net.Sf.Dbdeploy/Database/SqlCmd/SqlCmdExecutor.cs b/src/Net.Sf.Dbdeploy/Database/SqlCmd/SqlCmdExecutor.cs index 853f115..c2ff863 100644 --- a/src/Net.Sf.Dbdeploy/Database/SqlCmd/SqlCmdExecutor.cs +++ b/src/Net.Sf.Dbdeploy/Database/SqlCmd/SqlCmdExecutor.cs @@ -1,106 +1,106 @@ -namespace Net.Sf.Dbdeploy.Database.SqlCmd -{ +namespace Net.Sf.Dbdeploy.Database.SqlCmd +{ using System; using System.Collections.Generic; - using System.Globalization; - using System.IO; - using System.Reflection; - using System.Text; - - using Net.Sf.Dbdeploy.Appliers; - - using System.Diagnostics; - - /// - /// Manager for handling execution and deployment of SQLCMD. - /// - public class SqlCmdExecutor : IDisposable - { - /// - /// The SQLCMD file name. - /// - private const string SqlCmdFileName = "SQLCMD.EXE"; - - /// - /// The SQL CMD resource file. - /// - private const string SqlCmdResourceFile = "SQLCMD.rll"; - - /// - /// The timeout for running SQLCMD. - /// - private const int SqlCmdTimeout = 60000; - - /// - /// The error severity for SQLCMD exiting. - /// - private const int ErrorSeverity = 1; - - /// - /// The path to deploy to SQLCMD to temporarily to execution. - /// - private static readonly string ExtractPath; - - /// - /// The connection string for the database. - /// + using System.Globalization; + using System.IO; + using System.Reflection; + using System.Text; + + using Net.Sf.Dbdeploy.Appliers; + + using System.Diagnostics; + + /// + /// Manager for handling execution and deployment of SQLCMD. + /// + public class SqlCmdExecutor : IDisposable + { + /// + /// The SQLCMD file name. + /// + private const string SqlCmdFileName = "SQLCMD.EXE"; + + /// + /// The SQL CMD resource file. + /// + private const string SqlCmdResourceFile = "SQLCMD.rll"; + + /// + /// The timeout for running SQLCMD. + /// + private const int SqlCmdTimeout = 60000; + + /// + /// The error severity for SQLCMD exiting. + /// + private const int ErrorSeverity = 1; + + /// + /// The path to deploy to SQLCMD to temporarily to execution. + /// + private static readonly string ExtractPath; + + /// + /// The connection string for the database. + /// private readonly string connectionString; - /// - /// Initializes static members of the class. - /// - static SqlCmdExecutor() - { - ExtractPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - } - - /// - /// Initializes a new instance of the class. - /// - /// The connection string. - public SqlCmdExecutor(string connectionString) - { - this.connectionString = connectionString; - DeploySqlCmd(); - } - - /// - /// Executes the SQL script file. - /// - /// The file. - /// The output of the script run. - /// - /// true if the SQL file succeeded; otherwise false. - /// - public bool ExecuteFile(FileInfo file, StringBuilder output) - { - bool success; - using (var process = new Process()) - { - process.StartInfo = new ProcessStartInfo - { - CreateNoWindow = true, - UseShellExecute = false, - WindowStyle = ProcessWindowStyle.Hidden, - FileName = GetResourceFilePath(SqlCmdFileName), - Arguments = BuildCommandArguments(this.connectionString, file), - RedirectStandardError = true, - RedirectStandardOutput = true - }; - - process.Start(); - process.WaitForExit(SqlCmdTimeout); - - var standardOut = process.StandardOutput.ReadToEnd(); - output.AppendLine(standardOut); - - var standardError = process.StandardError.ReadToEnd(); - output.Append(standardError); - - success = process.ExitCode == 0; - } - - return success; + /// + /// Initializes static members of the class. + /// + static SqlCmdExecutor() + { + ExtractPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + } + + /// + /// Initializes a new instance of the class. + /// + /// The connection string. + public SqlCmdExecutor(string connectionString) + { + this.connectionString = connectionString; + DeploySqlCmd(); + } + + /// + /// Executes the SQL script file. + /// + /// The file. + /// The output of the script run. + /// + /// true if the SQL file succeeded; otherwise false. + /// + public bool ExecuteFile(FileInfo file, StringBuilder output) + { + bool success; + using (var process = new Process()) + { + process.StartInfo = new ProcessStartInfo + { + CreateNoWindow = true, + UseShellExecute = false, + WindowStyle = ProcessWindowStyle.Hidden, + FileName = GetResourceFilePath(SqlCmdFileName), + Arguments = BuildCommandArguments(this.connectionString, file), + RedirectStandardError = true, + RedirectStandardOutput = true + }; + + process.Start(); + process.WaitForExit(SqlCmdTimeout); + + var standardOut = process.StandardOutput.ReadToEnd(); + output.AppendLine(standardOut); + + var standardError = process.StandardError.ReadToEnd(); + output.Append(standardError); + + success = process.ExitCode == 0; + } + + return success; } public bool ExecuteString(string script, StringBuilder output) @@ -121,117 +121,117 @@ public bool ExecuteString(string script, StringBuilder output) } } } - - - /// - /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - /// - public void Dispose() - { + + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public void Dispose() + { CleanUpSqlCmd(); - } - - /// - /// Extracts the SQL CMD to be able to execute against it. - /// - private static void DeploySqlCmd() - { - // Extract SQLCMD and dependencies from resource to the file system so it can be run. - ExtractFile(SqlCmdFileName); - ExtractFile(SqlCmdResourceFile); - } - - /// - /// Extracts resource to file. - /// - /// The resource key. - private static void ExtractFile(string resourceKey) - { - Assembly assembly = Assembly.GetExecutingAssembly(); - string resourceName = string.Format("Net.Sf.Dbdeploy.Resources.{0}", resourceKey); - using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName)) - { - using (var fileStream = new FileStream(GetResourceFilePath(resourceKey), FileMode.Create)) - { - resourceStream.CopyTo(fileStream); - } - } - } - - /// - /// Cleans up SQLCMD from the file system. - /// - private static void CleanUpSqlCmd() - { + } + + /// + /// Extracts the SQL CMD to be able to execute against it. + /// + private static void DeploySqlCmd() + { + // Extract SQLCMD and dependencies from resource to the file system so it can be run. + ExtractFile(SqlCmdFileName); + ExtractFile(SqlCmdResourceFile); + } + + /// + /// Extracts resource to file. + /// + /// The resource key. + private static void ExtractFile(string resourceKey) + { + Assembly assembly = Assembly.GetExecutingAssembly(); + string resourceName = string.Format("Net.Sf.Dbdeploy.Resources.{0}", resourceKey); + using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName)) + { + using (var fileStream = new FileStream(GetResourceFilePath(resourceKey), FileMode.Create)) + { + resourceStream.CopyTo(fileStream); + } + } + } + + /// + /// Cleans up SQLCMD from the file system. + /// + private static void CleanUpSqlCmd() + { DeleteFile(SqlCmdFileName); DeleteFile(SqlCmdResourceFile); } - /// - /// Deletes the file resource. - /// - /// The resource key. - private static void DeleteFile(string resourceKey) - { - var filePath = GetResourceFilePath(resourceKey); - if (File.Exists(filePath)) - { - File.Delete(filePath); - } - } - - /// - /// Gets the resource file path on the local file system. - /// - /// The resource key. - /// Full file path on local file system. - private static string GetResourceFilePath(string resourceKey) - { - return Path.Combine(ExtractPath, resourceKey); - } - - /// - /// Builds the SQL command arguments. - /// - /// The connection string. - /// The script file to execute. - /// - /// SQLCMD command arguments. - /// - private static string BuildCommandArguments(string connectionString, FileInfo scriptFile) - { - var info = ConnectionStringParser.Parse(connectionString); - var result = new StringBuilder(); - - AppendItem(result, "-S \"{0}\"", info.Server); - AppendItem(result, "-d \"{0}\"", info.Database); - AppendItem(result, "-U \"{0}\"", info.UserId); - AppendItem(result, "-P \"{0}\"", info.Password); - AppendItem(result, "-E", info.TrustedConnection ? "true" : null); - AppendItem(result, "-i \"{0}\"", scriptFile.FullName); - AppendItem(result, "-V {0}", ErrorSeverity.ToString(CultureInfo.InvariantCulture)); - - return result.ToString(); - } - - /// - /// Appends the item if it exists. - /// - /// The result. - /// The format. - /// The value. - private static void AppendItem(StringBuilder output, string format, string value) - { - if (!string.IsNullOrWhiteSpace(value)) - { - // Add a space if there is something before. - if (output.Length > 0) - { - output.Append(' '); - } - - output.AppendFormat(format, value); - } + /// + /// Deletes the file resource. + /// + /// The resource key. + private static void DeleteFile(string resourceKey) + { + var filePath = GetResourceFilePath(resourceKey); + if (File.Exists(filePath)) + { + File.Delete(filePath); + } + } + + /// + /// Gets the resource file path on the local file system. + /// + /// The resource key. + /// Full file path on local file system. + private static string GetResourceFilePath(string resourceKey) + { + return Path.Combine(ExtractPath, resourceKey); + } + + /// + /// Builds the SQL command arguments. + /// + /// The connection string. + /// The script file to execute. + /// + /// SQLCMD command arguments. + /// + private static string BuildCommandArguments(string connectionString, FileInfo scriptFile) + { + var info = ConnectionStringParser.Parse(connectionString); + var result = new StringBuilder(); + + AppendItem(result, "-S \"{0}\"", info.Server); + AppendItem(result, "-d \"{0}\"", info.Database); + AppendItem(result, "-U \"{0}\"", info.UserId); + AppendItem(result, "-P \"{0}\"", info.Password); + AppendItem(result, "-E", info.TrustedConnection ? "true" : null); + AppendItem(result, "-i \"{0}\"", scriptFile.FullName); + AppendItem(result, "-V {0}", ErrorSeverity.ToString(CultureInfo.InvariantCulture)); + + return result.ToString(); + } + + /// + /// Appends the item if it exists. + /// + /// The result. + /// The format. + /// The value. + private static void AppendItem(StringBuilder output, string format, string value) + { + if (!string.IsNullOrWhiteSpace(value)) + { + // Add a space if there is something before. + if (output.Length > 0) + { + output.Append(' '); + } + + output.AppendFormat(format, value); + } } - } -} + } +} diff --git a/src/Net.Sf.Dbdeploy/Resources/mssql_undo.vm b/src/Net.Sf.Dbdeploy/Resources/mssql_undo.vm index 9e8c8f6..805e90f 100644 --- a/src/Net.Sf.Dbdeploy/Resources/mssql_undo.vm +++ b/src/Net.Sf.Dbdeploy/Resources/mssql_undo.vm @@ -15,4 +15,4 @@ GO -- END UNDO OF CHANGE SCRIPT ${script} -#end +#end diff --git a/src/Net.Sf.Dbdeploy/UniqueChange.cs b/src/Net.Sf.Dbdeploy/UniqueChange.cs index d58d0dc..1a8545c 100644 --- a/src/Net.Sf.Dbdeploy/UniqueChange.cs +++ b/src/Net.Sf.Dbdeploy/UniqueChange.cs @@ -1,51 +1,51 @@ -namespace Net.Sf.Dbdeploy -{ - using System; - using System.Globalization; - - /// - /// Represents any unique change. - /// - public class UniqueChange : IComparable - { - /// - /// Initializes a new instance of the class. - /// - /// The unique key folder and script number combination (Alpha/2). - /// uniqueKey;The unique key must be a supplied. - public UniqueChange(string uniqueKey) - { - if (string.IsNullOrWhiteSpace(uniqueKey)) - { - throw new ArgumentNullException("uniqueKey", "The unique key must be a supplied."); - } - - var parts = uniqueKey.Split('/'); - if (parts.Length != 2) - { - throw new ArgumentException("The unique key must be a folder and script number combination (Alpha/2).", "uniqueKey"); - } - - int scriptNumber; - if (!int.TryParse(parts[1], out scriptNumber)) - { - throw new ArgumentException("The unique key script number must be an integer (Alpha/2).", "uniqueKey"); - } - - this.Folder = parts[0]; - this.ScriptNumber = scriptNumber; - } - - /// - /// Initializes a new instance of the class. - /// - /// The folder. - /// The script number. - public UniqueChange(string folder, int scriptNumber) - { - this.Folder = folder; - this.ScriptNumber = scriptNumber; - +namespace Net.Sf.Dbdeploy +{ + using System; + using System.Globalization; + + /// + /// Represents any unique change. + /// + public class UniqueChange : IComparable + { + /// + /// Initializes a new instance of the class. + /// + /// The unique key folder and script number combination (Alpha/2). + /// uniqueKey;The unique key must be a supplied. + public UniqueChange(string uniqueKey) + { + if (string.IsNullOrWhiteSpace(uniqueKey)) + { + throw new ArgumentNullException("uniqueKey", "The unique key must be a supplied."); + } + + var parts = uniqueKey.Split('/'); + if (parts.Length != 2) + { + throw new ArgumentException("The unique key must be a folder and script number combination (Alpha/2).", "uniqueKey"); + } + + int scriptNumber; + if (!int.TryParse(parts[1], out scriptNumber)) + { + throw new ArgumentException("The unique key script number must be an integer (Alpha/2).", "uniqueKey"); + } + + this.Folder = parts[0]; + this.ScriptNumber = scriptNumber; + } + + /// + /// Initializes a new instance of the class. + /// + /// The folder. + /// The script number. + public UniqueChange(string folder, int scriptNumber) + { + this.Folder = folder; + this.ScriptNumber = scriptNumber; + Version version; var folderWithoutV = folder.TrimStart('v','V'); int singleDigitVersion; @@ -55,88 +55,88 @@ public UniqueChange(string folder, int scriptNumber) } else { - Version.TryParse(folderWithoutV, out version); + Version.TryParse(folderWithoutV, out version); + } + this.Version = version; + } + + /// + /// Gets the folder that contained the script executed (part of unique key). + /// + /// + /// The folder. + /// + public string Folder { get; private set; } + + /// + /// Gets the script number executed inside the folder. + /// + /// + /// The script number. + /// + public int ScriptNumber { get; private set; } + + /// + /// Gets the version of the folder if in the format of (v1.0.0.0) or (1.0.0). + /// + /// + /// The version. + /// + public Version Version { get; private set; } + + /// + /// Gets the unique key that represents this change on the file system. + /// + /// + /// The unique key. + /// + public string UniqueKey + { + get + { + return string.Format(CultureInfo.InvariantCulture, "{0}/{1}", this.Folder, this.ScriptNumber); + } + } + + /// + /// Compares the object to another giving a result of less than, equal to, or greater than. + /// + /// The object to compare. + /// Integer value corresponding to less than, equal to, or greater than. + public int CompareTo(object obj) + { + var other = (UniqueChange)obj; + + // Compare versions if both folders are in version format v1.0.0.0. + int result; + if (this.Version != null && other.Version != null) + { + result = this.Version.CompareTo(other.Version); + } + else + { + // Compare folder names as is. + result = string.Compare(this.Folder, other.Folder, StringComparison.InvariantCultureIgnoreCase); + } + + // Compare script number of folders are the same. + if (result == 0) + { + result = this.ScriptNumber.CompareTo(other.ScriptNumber); } - this.Version = version; - } - - /// - /// Gets the folder that contained the script executed (part of unique key). - /// - /// - /// The folder. - /// - public string Folder { get; private set; } - - /// - /// Gets the script number executed inside the folder. - /// - /// - /// The script number. - /// - public int ScriptNumber { get; private set; } - - /// - /// Gets the version of the folder if in the format of (v1.0.0.0) or (1.0.0). - /// - /// - /// The version. - /// - public Version Version { get; private set; } - - /// - /// Gets the unique key that represents this change on the file system. - /// - /// - /// The unique key. - /// - public string UniqueKey - { - get - { - return string.Format(CultureInfo.InvariantCulture, "{0}/{1}", this.Folder, this.ScriptNumber); - } - } - - /// - /// Compares the object to another giving a result of less than, equal to, or greater than. - /// - /// The object to compare. - /// Integer value corresponding to less than, equal to, or greater than. - public int CompareTo(object obj) - { - var other = (UniqueChange)obj; - - // Compare versions if both folders are in version format v1.0.0.0. - int result; - if (this.Version != null && other.Version != null) - { - result = this.Version.CompareTo(other.Version); - } - else - { - // Compare folder names as is. - result = string.Compare(this.Folder, other.Folder, StringComparison.InvariantCultureIgnoreCase); - } - - // Compare script number of folders are the same. - if (result == 0) - { - result = this.ScriptNumber.CompareTo(other.ScriptNumber); - } - - return result; - } - - /// - /// Returns a that represents this instance. - /// - /// - /// A that represents this instance. - /// - public override string ToString() - { - return string.Format(CultureInfo.InvariantCulture, "{0}/{1}", this.Folder, this.ScriptNumber); - } - } + + return result; + } + + /// + /// Returns a that represents this instance. + /// + /// + /// A that represents this instance. + /// + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "{0}/{1}", this.Folder, this.ScriptNumber); + } + } } \ No newline at end of file diff --git a/src/SolutionVersionAssemblyInfo.cs b/src/SolutionVersionAssemblyInfo.cs index 2ab94cd..81090cd 100644 --- a/src/SolutionVersionAssemblyInfo.cs +++ b/src/SolutionVersionAssemblyInfo.cs @@ -1 +1 @@ -// This file will be changed when building a package to contain the correct version // Do not commit any changes here using System.Reflection; [assembly: AssemblyVersionAttribute("0.0.0.0")] [assembly: AssemblyInformationalVersionAttribute("0.0.0.0-devel")] [assembly: AssemblyFileVersionAttribute("0.0.0.0")] +// This file will be changed when building a package to contain the correct version // Do not commit any changes here using System.Reflection; [assembly: AssemblyVersionAttribute("0.0.0.0")] [assembly: AssemblyInformationalVersionAttribute("0.0.0.0-devel")] [assembly: AssemblyFileVersionAttribute("0.0.0.0")] diff --git a/src/Test.Net.Sf.Dbdeploy/Appliers/SqlCmdApplierTest.cs b/src/Test.Net.Sf.Dbdeploy/Appliers/SqlCmdApplierTest.cs index f5235d6..a30cdec 100644 --- a/src/Test.Net.Sf.Dbdeploy/Appliers/SqlCmdApplierTest.cs +++ b/src/Test.Net.Sf.Dbdeploy/Appliers/SqlCmdApplierTest.cs @@ -1,174 +1,174 @@ -namespace Net.Sf.Dbdeploy.Appliers -{ - using System.Configuration; - using System.Data; - using System.Data.SqlClient; - using System.Globalization; - using System.IO; - using System.Text; - - using Net.Sf.Dbdeploy.Database; - using Net.Sf.Dbdeploy.Exceptions; - using Net.Sf.Dbdeploy.Scripts; - - using NUnit.Framework; - - /// - /// Tests for class. - /// - [TestFixture] - public class SqlCmdApplierTest - { - /// - /// The table name for the change tracking table. - /// - public const string ChangeLogTableName = "ChangeLog"; - - /// - /// The database management system type. - /// - private const string Dbms = "mssql"; - - /// - /// The connection string for the test database. - /// - private static readonly string ConnectionString = ConfigurationManager.AppSettings["ConnString"]; - - /// - /// Target of the test. - /// - private SqlCmdApplier sqlCmdApplier; - - /// - /// The directory scanner for finding script files. - /// - private DirectoryScanner directoryScanner; - - /// - /// Sets up the dependencies before each test. - /// - [SetUp] - public void SetUp() - { - var dbmsFactory = new DbmsFactory(Dbms, ConnectionString); +namespace Net.Sf.Dbdeploy.Appliers +{ + using System.Configuration; + using System.Data; + using System.Data.SqlClient; + using System.Globalization; + using System.IO; + using System.Text; + + using Net.Sf.Dbdeploy.Database; + using Net.Sf.Dbdeploy.Exceptions; + using Net.Sf.Dbdeploy.Scripts; + + using NUnit.Framework; + + /// + /// Tests for class. + /// + [TestFixture] + public class SqlCmdApplierTest + { + /// + /// The table name for the change tracking table. + /// + public const string ChangeLogTableName = "ChangeLog"; + + /// + /// The database management system type. + /// + private const string Dbms = "mssql"; + + /// + /// The connection string for the test database. + /// + private static readonly string ConnectionString = ConfigurationManager.AppSettings["ConnString"]; + + /// + /// Target of the test. + /// + private SqlCmdApplier sqlCmdApplier; + + /// + /// The directory scanner for finding script files. + /// + private DirectoryScanner directoryScanner; + + /// + /// Sets up the dependencies before each test. + /// + [SetUp] + public void SetUp() + { + var dbmsFactory = new DbmsFactory(Dbms, ConnectionString); var queryExecuter = new QueryExecuter(dbmsFactory); var dbmsSyntax = dbmsFactory.CreateDbmsSyntax(); var schemaVersionManager = new DatabaseSchemaVersionManager(queryExecuter, dbmsSyntax, ChangeLogTableName); - this.sqlCmdApplier = new SqlCmdApplier(ConnectionString, schemaVersionManager, dbmsSyntax, ChangeLogTableName, System.Console.Out); - this.directoryScanner = new DirectoryScanner(System.Console.Out, Encoding.UTF8); - - // Remove any existing changelog and customers test table. - this.EnsureTableDoesNotExist(ChangeLogTableName); - this.EnsureTableDoesNotExist("Customer"); - } - - /// - /// Tests that can apply scripts written for SQLCMD. - /// - [Test] - public void ShouldApplySqlCmdModeScripts() + this.sqlCmdApplier = new SqlCmdApplier(ConnectionString, schemaVersionManager, dbmsSyntax, ChangeLogTableName, System.Console.Out); + this.directoryScanner = new DirectoryScanner(System.Console.Out, Encoding.UTF8); + + // Remove any existing changelog and customers test table. + this.EnsureTableDoesNotExist(ChangeLogTableName); + this.EnsureTableDoesNotExist("Customer"); + } + + /// + /// Tests that can apply scripts written for SQLCMD. + /// + [Test] + public void ShouldApplySqlCmdModeScripts() + { + var changeScripts = this.directoryScanner.GetChangeScriptsForDirectory(new DirectoryInfo(@"Mocks\Versioned\v2.0.10.0")); + this.sqlCmdApplier.Apply(changeScripts, true); + + this.AssertTableExists(ChangeLogTableName); + this.AssertTableExists("Customer"); + + var changeCount = this.ExecuteScalar("SELECT COUNT(*) FROM {0}", ChangeLogTableName); + Assert.AreEqual(changeScripts.Count, changeCount, "Not all change scripts where applied."); + } + + /// + /// Tests that throws an exception and stops execution when there is a problem. + /// + [Test] + public void ShouldThrowExceptionOnScriptFailure() + { + // Duplicate the first script to cause a failure. + var changeScripts = this.directoryScanner.GetChangeScriptsForDirectory(new DirectoryInfo(@"Mocks\Failures")); + + try + { + this.sqlCmdApplier.Apply(changeScripts, true); + Assert.Fail("Apply did not thrown and error."); + } + catch (DbDeployException) + { + } + + var changeCount = this.ExecuteScalar("SELECT COUNT(*) FROM {0}", ChangeLogTableName); + Assert.AreEqual(2, changeCount, "Only two scripts should have run."); + } + + /// + /// Asserts the table does exist. + /// + /// The name of the table. + private void AssertTableExists(string name) + { + var syntax = new MsSqlDbmsSyntax(); + var schema = this.ExecuteScalar(syntax.TableExists(name)); + + Assert.IsNotEmpty(schema, "'{0}' table was not created.", name); + } + + /// + /// Drops the table to ensure it does not exist. + /// + /// The name. + private void EnsureTableDoesNotExist(string name) { - var changeScripts = this.directoryScanner.GetChangeScriptsForDirectory(new DirectoryInfo(@"Mocks\Versioned\v2.0.10.0")); - this.sqlCmdApplier.Apply(changeScripts, true); - - this.AssertTableExists(ChangeLogTableName); - this.AssertTableExists("Customer"); - - var changeCount = this.ExecuteScalar("SELECT COUNT(*) FROM {0}", ChangeLogTableName); - Assert.AreEqual(changeScripts.Count, changeCount, "Not all change scripts where applied."); - } - - /// - /// Tests that throws an exception and stops execution when there is a problem. - /// - [Test] - public void ShouldThrowExceptionOnScriptFailure() - { - // Duplicate the first script to cause a failure. - var changeScripts = this.directoryScanner.GetChangeScriptsForDirectory(new DirectoryInfo(@"Mocks\Failures")); - - try + this.ExecuteSql(string.Format(CultureInfo.InvariantCulture, +@"IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[{0}]') AND TYPE IN (N'U')) +DROP TABLE [dbo].[{0}]", name)); + } + + /// + /// Executes the SQL statement. + /// + /// The SQL. + private void ExecuteSql(string sql) + { + using (var connection = this.GetConnection()) + { + connection.Open(); + var command = connection.CreateCommand(); + command.CommandText = sql; + command.ExecuteNonQuery(); + } + } + + /// + /// Executes a query returning a scalar value. + /// + /// Scalar value to be returned. + /// The SQL. + /// The arguments to format into the script. + /// + /// Scalar value from query. + /// + private T ExecuteScalar(string sql, params object[] args) + { + T result; + using (var connection = this.GetConnection()) { - this.sqlCmdApplier.Apply(changeScripts, true); - Assert.Fail("Apply did not thrown and error."); - } - catch (DbDeployException) - { - } - - var changeCount = this.ExecuteScalar("SELECT COUNT(*) FROM {0}", ChangeLogTableName); - Assert.AreEqual(2, changeCount, "Only two scripts should have run."); - } - - /// - /// Asserts the table does exist. - /// - /// The name of the table. - private void AssertTableExists(string name) - { - var syntax = new MsSqlDbmsSyntax(); - var schema = this.ExecuteScalar(syntax.TableExists(name)); - - Assert.IsNotEmpty(schema, "'{0}' table was not created.", name); - } - - /// - /// Drops the table to ensure it does not exist. - /// - /// The name. - private void EnsureTableDoesNotExist(string name) - { - this.ExecuteSql(string.Format(CultureInfo.InvariantCulture, -@"IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[{0}]') AND TYPE IN (N'U')) -DROP TABLE [dbo].[{0}]", name)); - } - - /// - /// Executes the SQL statement. - /// - /// The SQL. - private void ExecuteSql(string sql) - { - using (var connection = this.GetConnection()) - { - connection.Open(); - var command = connection.CreateCommand(); - command.CommandText = sql; - command.ExecuteNonQuery(); - } - } - - /// - /// Executes a query returning a scalar value. - /// - /// Scalar value to be returned. - /// The SQL. - /// The arguments to format into the script. - /// - /// Scalar value from query. - /// - private T ExecuteScalar(string sql, params object[] args) - { - T result; - using (var connection = this.GetConnection()) - { - connection.Open(); - var command = connection.CreateCommand(); - command.CommandText = string.Format(CultureInfo.InvariantCulture, sql, args); - result = (T)command.ExecuteScalar(); - } - - return result; - } - - /// - /// Gets a database connection. - /// - /// Database connection. - private IDbConnection GetConnection() - { - return new SqlConnection(ConnectionString); - } - } -} + connection.Open(); + var command = connection.CreateCommand(); + command.CommandText = string.Format(CultureInfo.InvariantCulture, sql, args); + result = (T)command.ExecuteScalar(); + } + + return result; + } + + /// + /// Gets a database connection. + /// + /// Database connection. + private IDbConnection GetConnection() + { + return new SqlConnection(ConnectionString); + } + } +} diff --git a/src/Test.Net.Sf.Dbdeploy/ControllerTest.cs b/src/Test.Net.Sf.Dbdeploy/ControllerTest.cs index 47e8ba0..ce35baf 100644 --- a/src/Test.Net.Sf.Dbdeploy/ControllerTest.cs +++ b/src/Test.Net.Sf.Dbdeploy/ControllerTest.cs @@ -1,212 +1,212 @@ -namespace Net.Sf.Dbdeploy -{ - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Text; - - using Moq; - - using Net.Sf.Dbdeploy.Database; - using Net.Sf.Dbdeploy.Exceptions; - using Net.Sf.Dbdeploy.Scripts; - - using NUnit.Framework; - - /// - /// Tests for class. - /// - [TestFixture] - public class ControllerTest - { - /// - /// The target of the tests. - /// - private Controller controller; - - /// - /// The output of the controller execution. - /// - private StringBuilder output; - - /// - /// The applied changes provider for retrieving what changes have been applied to the database. - /// - private Mock appliedChangesProvider; - - /// - /// The available change scripts provider for retrieving what changes are on the file system. - /// - private Mock availableChangeScriptsProvider; - - /// - /// Runs the scripts against the database. - /// - private Mock doApplier; - - /// - /// The scripts that would have run. - /// - private IList runScripts; - - /// - /// Sets up any dependencies before each test. - /// - [SetUp] - public void Setup() - { - // Setup default available scripts. - this.availableChangeScriptsProvider = new Mock(); - this.availableChangeScriptsProvider.Setup(p => p.GetAvailableChangeScripts()) - .Returns(new List - { - new ChangeScript("1.0", 1), - new ChangeScript("1.0", 2), - new ChangeScript("1.0", 3), - new ChangeScript("1.0", 4), - new ChangeScript("1.1", 1), - new ChangeScript("1.1", 2), - }); - - // Capture changes that would be run. - this.runScripts = new List(); - this.doApplier = new Mock(); - this.doApplier - .Setup(a => a.Apply(It.IsAny>(), false)) - .Callback, bool>((l,b) => this.runScripts = l.ToList()); - - this.appliedChangesProvider = new Mock(); - var undoApplier = new Mock(); +namespace Net.Sf.Dbdeploy +{ + using System.Collections.Generic; + using System.IO; + using System.Linq; + using System.Text; + + using Moq; + + using Net.Sf.Dbdeploy.Database; + using Net.Sf.Dbdeploy.Exceptions; + using Net.Sf.Dbdeploy.Scripts; + + using NUnit.Framework; + + /// + /// Tests for class. + /// + [TestFixture] + public class ControllerTest + { + /// + /// The target of the tests. + /// + private Controller controller; + + /// + /// The output of the controller execution. + /// + private StringBuilder output; + + /// + /// The applied changes provider for retrieving what changes have been applied to the database. + /// + private Mock appliedChangesProvider; + + /// + /// The available change scripts provider for retrieving what changes are on the file system. + /// + private Mock availableChangeScriptsProvider; + + /// + /// Runs the scripts against the database. + /// + private Mock doApplier; + + /// + /// The scripts that would have run. + /// + private IList runScripts; + + /// + /// Sets up any dependencies before each test. + /// + [SetUp] + public void Setup() + { + // Setup default available scripts. + this.availableChangeScriptsProvider = new Mock(); + this.availableChangeScriptsProvider.Setup(p => p.GetAvailableChangeScripts()) + .Returns(new List + { + new ChangeScript("1.0", 1), + new ChangeScript("1.0", 2), + new ChangeScript("1.0", 3), + new ChangeScript("1.0", 4), + new ChangeScript("1.1", 1), + new ChangeScript("1.1", 2), + }); + + // Capture changes that would be run. + this.runScripts = new List(); + this.doApplier = new Mock(); + this.doApplier + .Setup(a => a.Apply(It.IsAny>(), false)) + .Callback, bool>((l,b) => this.runScripts = l.ToList()); + + this.appliedChangesProvider = new Mock(); + var undoApplier = new Mock(); this.output = new StringBuilder(); - this.controller = new Controller(this.availableChangeScriptsProvider.Object, this.appliedChangesProvider.Object, this.doApplier.Object, undoApplier.Object, false, new StringWriter(this.output)); - } - - /// - /// Tests that throws an error when a previous script run has failed and it is trying to be run again. - /// - [Test] - [ExpectedException(typeof(PriorFailedScriptException))] - public void ShouldThrowErrorWhenPreviousScriptRunFailed() - { - // Setup script already run. - this.appliedChangesProvider - .Setup(p => p.GetAppliedChanges()) - .Returns(new List - { - new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, - new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Failure } - }); - - // Execute controller. - this.controller.ProcessChangeScripts(null); - } - - /// - /// Tests that can apply only scripts not run on the database. - /// - [Test] - public void ShouldApplyScriptsNotRunToDatabase() - { - // Setup script already run. - this.appliedChangesProvider - .Setup(p => p.GetAppliedChanges()) - .Returns(new List - { - new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, - new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Success } - }); - - // Execute controller. - this.controller.ProcessChangeScripts(null); - - // Verify scripts attempted. - AssertRunScripts(this.runScripts, "1.0/3", "1.0/4", "1.1/1", "1.1/2"); - } - - /// - /// Tests that will apply scripts from a previous failed run that have been marked as resolved. - /// - [Test] - public void ShouldApplyScriptsMarkedAsResolved() - { - // Setup script already run. - this.appliedChangesProvider - .Setup(p => p.GetAppliedChanges()) - .Returns(new List - { - new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, - new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Success }, - new ChangeEntry("1.0", 3) { ScriptName = "3.test.sql", Status = ScriptStatus.ProblemResolved } - }); - - // Execute controller. - this.controller.ProcessChangeScripts(null); - - // Verify scripts attempted. - AssertRunScripts(this.runScripts, "1.0/3", "1.0/4", "1.1/1", "1.1/2"); - } - - /// - /// Tests that will apply scripts marked as failed when force update is set. - /// - [Test] - public void ShouldApplyScriptsMarkedAsFailedWhenForceUpdateIsSet() - { - // Setup script already run. - this.appliedChangesProvider - .Setup(p => p.GetAppliedChanges()) - .Returns(new List - { - new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, - new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Success }, - new ChangeEntry("1.0", 3) { ScriptName = "3.test.sql", Status = ScriptStatus.Failure } - }); - - // Execute controller with force update set to true. - this.controller.ProcessChangeScripts(null, true); - - // Verify scripts attempted. - AssertRunScripts(this.runScripts, "1.0/3", "1.0/4", "1.1/1", "1.1/2"); - } - - /// - /// Tests that can apply changes up to and stopping at a requested script number. - /// - [Test] - public void ShouldApplyChangesUpToRequestedScript() - { - // Setup script already run. - this.appliedChangesProvider - .Setup(p => p.GetAppliedChanges()) - .Returns(new List - { - new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, - new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Success } - }); - - // Execute controller with force update set to true. - this.controller.ProcessChangeScripts(new UniqueChange("1.1", 1), true); - - // Verify scripts attempted. - AssertRunScripts(this.runScripts, "1.0/3", "1.0/4", "1.1/1"); - } - - /// - /// Asserts the specified scripts where included in the ones to run in the specified order. - /// - /// The scripts. - /// The unique keys. - private static void AssertRunScripts(IList scripts, params string[] expectedKeys) - { - Assert.Greater(scripts.Count, 0, "No scripts where found that should run."); - - for (int i = 0; i < expectedKeys.Length; i++) - { - Assert.Greater(scripts.Count, i, "More change scripts were expected to run."); - Assert.AreEqual(expectedKeys[i], scripts[i].UniqueKey, "The expected script '{0}' was not next.", expectedKeys[i]); - } - - Assert.AreEqual(expectedKeys.Length, scripts.Count, "More scripts where applied than should have been."); - } - } -} + this.controller = new Controller(this.availableChangeScriptsProvider.Object, this.appliedChangesProvider.Object, this.doApplier.Object, undoApplier.Object, false, new StringWriter(this.output)); + } + + /// + /// Tests that throws an error when a previous script run has failed and it is trying to be run again. + /// + [Test] + [ExpectedException(typeof(PriorFailedScriptException))] + public void ShouldThrowErrorWhenPreviousScriptRunFailed() + { + // Setup script already run. + this.appliedChangesProvider + .Setup(p => p.GetAppliedChanges()) + .Returns(new List + { + new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, + new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Failure } + }); + + // Execute controller. + this.controller.ProcessChangeScripts(null); + } + + /// + /// Tests that can apply only scripts not run on the database. + /// + [Test] + public void ShouldApplyScriptsNotRunToDatabase() + { + // Setup script already run. + this.appliedChangesProvider + .Setup(p => p.GetAppliedChanges()) + .Returns(new List + { + new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, + new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Success } + }); + + // Execute controller. + this.controller.ProcessChangeScripts(null); + + // Verify scripts attempted. + AssertRunScripts(this.runScripts, "1.0/3", "1.0/4", "1.1/1", "1.1/2"); + } + + /// + /// Tests that will apply scripts from a previous failed run that have been marked as resolved. + /// + [Test] + public void ShouldApplyScriptsMarkedAsResolved() + { + // Setup script already run. + this.appliedChangesProvider + .Setup(p => p.GetAppliedChanges()) + .Returns(new List + { + new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, + new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Success }, + new ChangeEntry("1.0", 3) { ScriptName = "3.test.sql", Status = ScriptStatus.ProblemResolved } + }); + + // Execute controller. + this.controller.ProcessChangeScripts(null); + + // Verify scripts attempted. + AssertRunScripts(this.runScripts, "1.0/3", "1.0/4", "1.1/1", "1.1/2"); + } + + /// + /// Tests that will apply scripts marked as failed when force update is set. + /// + [Test] + public void ShouldApplyScriptsMarkedAsFailedWhenForceUpdateIsSet() + { + // Setup script already run. + this.appliedChangesProvider + .Setup(p => p.GetAppliedChanges()) + .Returns(new List + { + new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, + new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Success }, + new ChangeEntry("1.0", 3) { ScriptName = "3.test.sql", Status = ScriptStatus.Failure } + }); + + // Execute controller with force update set to true. + this.controller.ProcessChangeScripts(null, true); + + // Verify scripts attempted. + AssertRunScripts(this.runScripts, "1.0/3", "1.0/4", "1.1/1", "1.1/2"); + } + + /// + /// Tests that can apply changes up to and stopping at a requested script number. + /// + [Test] + public void ShouldApplyChangesUpToRequestedScript() + { + // Setup script already run. + this.appliedChangesProvider + .Setup(p => p.GetAppliedChanges()) + .Returns(new List + { + new ChangeEntry("1.0", 1) { ScriptName = "1.test.sql", Status = ScriptStatus.Success }, + new ChangeEntry("1.0", 2) { ScriptName = "2.test.sql", Status = ScriptStatus.Success } + }); + + // Execute controller with force update set to true. + this.controller.ProcessChangeScripts(new UniqueChange("1.1", 1), true); + + // Verify scripts attempted. + AssertRunScripts(this.runScripts, "1.0/3", "1.0/4", "1.1/1"); + } + + /// + /// Asserts the specified scripts where included in the ones to run in the specified order. + /// + /// The scripts. + /// The unique keys. + private static void AssertRunScripts(IList scripts, params string[] expectedKeys) + { + Assert.Greater(scripts.Count, 0, "No scripts where found that should run."); + + for (int i = 0; i < expectedKeys.Length; i++) + { + Assert.Greater(scripts.Count, i, "More change scripts were expected to run."); + Assert.AreEqual(expectedKeys[i], scripts[i].UniqueKey, "The expected script '{0}' was not next.", expectedKeys[i]); + } + + Assert.AreEqual(expectedKeys.Length, scripts.Count, "More scripts where applied than should have been."); + } + } +} diff --git a/src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs b/src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs index 6c3bd56..f411dee 100644 --- a/src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs +++ b/src/Test.Net.Sf.Dbdeploy/Database/PostgresqlDatabaseSchemaVersionManagerTest.cs @@ -1,10 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.IO; -using System.Linq; -using System.Reflection; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.IO; +using System.Linq; +using System.Reflection; using System.Text; using Dbdeploy.Powershell; using Net.Sf.Dbdeploy.Appliers; @@ -12,15 +12,15 @@ using Net.Sf.Dbdeploy.Database.SqlCmd; using Net.Sf.Dbdeploy.Scripts; using Npgsql; -using NUnit.Framework; - -namespace Net.Sf.Dbdeploy.Database -{ - [Category("PostgreSQL"), Category("DbIntegration")] - class PostgresqlDatabaseSchemaVersionManagerTest : AbstractDatabaseSchemaVersionManagerTest - { - private string connectionString; - private const string DBMS = "postgresql"; +using NUnit.Framework; + +namespace Net.Sf.Dbdeploy.Database +{ + [Category("PostgreSQL"), Category("DbIntegration")] + class PostgresqlDatabaseSchemaVersionManagerTest : AbstractDatabaseSchemaVersionManagerTest + { + private string connectionString; + private const string DBMS = "postgresql"; private const string FOLDER = "Scripts"; protected override void EnsureTableDoesNotExist(string tableName) @@ -28,22 +28,22 @@ protected override void EnsureTableDoesNotExist(string tableName) ExecuteSql("DROP TABLE IF EXISTS " + tableName); } - protected override string ConnectionString - { - get - { - if (connectionString == null) - { - connectionString = ConfigurationManager.AppSettings["PostgresSQLConnString-" + Environment.MachineName] - ?? ConfigurationManager.AppSettings["PostgresSQLConnString"]; - } - return connectionString; - } - } - - protected override string Folder - { - get { return FOLDER; } + protected override string ConnectionString + { + get + { + if (connectionString == null) + { + connectionString = ConfigurationManager.AppSettings["PostgresSQLConnString-" + Environment.MachineName] + ?? ConfigurationManager.AppSettings["PostgresSQLConnString"]; + } + return connectionString; + } + } + + protected override string Folder + { + get { return FOLDER; } } protected override string[] ChangelogTableDoesNotExistMessages @@ -51,45 +51,45 @@ protected override string[] ChangelogTableDoesNotExistMessages get { return new string[] {}; } } - protected override string Dbms - { - get { return DBMS; } - } - - [Test] - public void ShouldNotThrowExceptionIfAllPreviousScriptsAreCompleted() - { - this.EnsureTableDoesNotExist(); - CreateTable(); - InsertRowIntoTable(3); - var changeNumbers = new List(databaseSchemaVersion.GetAppliedChanges()); - - Assert.AreEqual(1, changeNumbers.Count); - Assert.AreEqual("Scripts/3", changeNumbers[0].UniqueKey); - } - - [Test] - public override void TestCanRetrieveSchemaVersionFromDatabase() - { - base.TestCanRetrieveSchemaVersionFromDatabase(); - } - - [Test] - public override void TestReturnsNoAppliedChangesWhenDatabaseTableDoesNotExist() - { - base.TestReturnsNoAppliedChangesWhenDatabaseTableDoesNotExist(); - } - - [Test] - public override void TestShouldReturnEmptySetWhenTableHasNoRows() - { - base.TestShouldReturnEmptySetWhenTableHasNoRows(); - } - - [Test] - public override void TestShouldCreateChangeLogTableWhenToldToDoSo() - { - base.TestShouldCreateChangeLogTableWhenToldToDoSo(); + protected override string Dbms + { + get { return DBMS; } + } + + [Test] + public void ShouldNotThrowExceptionIfAllPreviousScriptsAreCompleted() + { + this.EnsureTableDoesNotExist(); + CreateTable(); + InsertRowIntoTable(3); + var changeNumbers = new List(databaseSchemaVersion.GetAppliedChanges()); + + Assert.AreEqual(1, changeNumbers.Count); + Assert.AreEqual("Scripts/3", changeNumbers[0].UniqueKey); + } + + [Test] + public override void TestCanRetrieveSchemaVersionFromDatabase() + { + base.TestCanRetrieveSchemaVersionFromDatabase(); + } + + [Test] + public override void TestReturnsNoAppliedChangesWhenDatabaseTableDoesNotExist() + { + base.TestReturnsNoAppliedChangesWhenDatabaseTableDoesNotExist(); + } + + [Test] + public override void TestShouldReturnEmptySetWhenTableHasNoRows() + { + base.TestShouldReturnEmptySetWhenTableHasNoRows(); + } + + [Test] + public override void TestShouldCreateChangeLogTableWhenToldToDoSo() + { + base.TestShouldCreateChangeLogTableWhenToldToDoSo(); } [Test] @@ -161,21 +161,21 @@ public void TestCanExecuteAnUpdateScript() controller.ProcessChangeScripts(null); this.AssertTableExists("TableWeWillUse"); - } - - - protected override IDbConnection GetConnection() - { - return new NpgsqlConnection(ConnectionString); - } - - protected override void InsertRowIntoTable(int i) - { - var commandBuilder = new StringBuilder(); - commandBuilder.AppendFormat("INSERT INTO {0}", TableName); - commandBuilder.Append("(ScriptNumber, Folder, StartDate, CompleteDate, AppliedBy, ScriptName, ScriptStatus, ScriptOutput)"); - commandBuilder.AppendFormat(" VALUES ({0}, '{1}', CURRENT_DATE, CURRENT_DATE, CURRENT_USER, 'Unit test', 1, '')", i, FOLDER); - ExecuteSql(commandBuilder.ToString()); + } + + + protected override IDbConnection GetConnection() + { + return new NpgsqlConnection(ConnectionString); + } + + protected override void InsertRowIntoTable(int i) + { + var commandBuilder = new StringBuilder(); + commandBuilder.AppendFormat("INSERT INTO {0}", TableName); + commandBuilder.Append("(ScriptNumber, Folder, StartDate, CompleteDate, AppliedBy, ScriptName, ScriptStatus, ScriptOutput)"); + commandBuilder.AppendFormat(" VALUES ({0}, '{1}', CURRENT_DATE, CURRENT_DATE, CURRENT_USER, 'Unit test', 1, '')", i, FOLDER); + ExecuteSql(commandBuilder.ToString()); } private static QueryStatementSplitter QueryStatementSplitter = new QueryStatementSplitter @@ -184,6 +184,6 @@ protected override void InsertRowIntoTable(int i) DelimiterType = DbDeployDefaults.DelimiterType, LineEnding = DbDeployDefaults.LineEnding, }; - - } -} + + } +} diff --git a/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj b/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj index b5309bf..ea321d5 100755 --- a/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj +++ b/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj @@ -103,7 +103,6 @@ - @@ -142,7 +141,6 @@ - From 50822283148b679a7d3f4173251c1aed31ab1d03 Mon Sep 17 00:00:00 2001 From: Tony Briscolino Date: Mon, 15 Dec 2014 13:03:31 -0600 Subject: [PATCH 10/14] added back in references to oracle library --- .gitignore | 1 + src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 6984de4..87b8134 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ _ReSharper*/ !/src/Net.Sf.Dbdeploy/Resources/* bintree.api.key bintray.api.key +Tools/nant/doc/ diff --git a/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj b/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj index ea321d5..7fd203b 100755 --- a/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj +++ b/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj @@ -103,6 +103,7 @@ + @@ -129,6 +130,7 @@ + From fc551ae3f2ea292af5fa570bdd1b2caa91ea2af1 Mon Sep 17 00:00:00 2001 From: Tony Briscolino Date: Tue, 16 Dec 2014 14:55:08 -0600 Subject: [PATCH 11/14] updated script that created schema version table to set primary key on auto increment field. also change folder to be varchar 255, fixing issue on index create. changed datatype on scriptnumber column to int to allow for representing date as number, e.g. 2014121601 --- Tools/nant/contrib/Interop.StarTeam.dll | Bin 0 -> 462848 bytes .../nant/contrib/Interop.WindowsInstaller.dll | Bin 0 -> 32768 bytes Tools/nant/contrib/SLiNgshoT.Core.dll | Bin 0 -> 53248 bytes Tools/nant/contrib/SourceSafe.Interop.dll | Bin 0 -> 61440 bytes .../SimpleExtensionObject/SimpleExtension.dll | Bin 0 -> 3072 bytes .../CreateSchemaVersionTable.mysql.sql | 8 +++----- 6 files changed, 3 insertions(+), 5 deletions(-) create mode 100644 Tools/nant/contrib/Interop.StarTeam.dll create mode 100644 Tools/nant/contrib/Interop.WindowsInstaller.dll create mode 100644 Tools/nant/contrib/SLiNgshoT.Core.dll create mode 100644 Tools/nant/contrib/SourceSafe.Interop.dll create mode 100644 Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.dll diff --git a/Tools/nant/contrib/Interop.StarTeam.dll b/Tools/nant/contrib/Interop.StarTeam.dll new file mode 100644 index 0000000000000000000000000000000000000000..6f56767847c46cde9f919fbe0c0ca2a000e44dfe GIT binary patch literal 462848 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�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 LAkzZ>&n@tOBtb@G literal 0 HcmV?d00001 diff --git a/Tools/nant/contrib/Interop.WindowsInstaller.dll b/Tools/nant/contrib/Interop.WindowsInstaller.dll new file mode 100644 index 0000000000000000000000000000000000000000..d6697204246e6162603a9604a911af28f1314931 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/Tools/nant/contrib/SLiNgshoT.Core.dll b/Tools/nant/contrib/SLiNgshoT.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..7a3b91b8a2defe82e829e28436fa5d17fb6e909b GIT binary patch literal 53248 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 literal 0 HcmV?d00001 diff --git a/Tools/nant/contrib/SourceSafe.Interop.dll b/Tools/nant/contrib/SourceSafe.Interop.dll new file mode 100644 index 0000000000000000000000000000000000000000..85493ae6e77b245989b83dc35e8db2b15d5a20f4 GIT binary patch literal 61440 zcmeHw34B!5_5ZzZ=DkeFLNX*F?1StGG3-P{lT0QM2?UdXXi*5s03%5zWVt94&mV{t>JYHO+1`XiQVq1Kt}BXQASdm5SOV6 ztdD^di81o+rGOAVM`<7UYzNP346kVfFMk368*i)AF{NIbRo_rw37LIsgFt0oLvsA( zA|P4y;p!*~DqqbQv^fevM7eyorib-JpeF)75$K6PPXu}*&=Y~42=qjtCjvbY=!w9w z5`k>GuErl-n`%hI&k*8`W+89|`9J#WldX#^)I|N%f5i*2ZYr+LbA~`;vwy`)5Dm$L zo#Heoc5xXys80IXW z<0?;#%Rgkd?-3)N)hX2KPS2B5VPz2q_ci- zC&l3#F}u#ao%M6Fs}3={&fT5$bBe1DF}u!Po%NIJszc1Kb7yD$!pkbdnIgXle(b6zdDPju2_Uiql!hb0QDOA4s9{Fm+w z2(n1>hhmQaxATWuil(DduK?^KfzdeWM#$_C+2f)aDA0&;*Ajia+@{S~g#t<@&)DNA z0@5q+4Gc@Tl^NI=XCs*~+Z*XyM-w@UiPFmm(A=0g+AN)B$25)OIh{r%j>{}ch%-(J zfAh^Zoo#RHp4j$&2l2P|v!fb+a>9zga_E?ezqPs@)%cSWR{WJi$4vaKW6DvDKRIE= zUpaKl#NRrSAJzDi6IT4KlhR{k{kP7aj%xhL2`m1}p<`zLTW76DHU8v;6@TT>F%y65 zTH&b1pPaDbuN*pN;%{A{9o6`g6IT3{L&r?~t?S~W8h>)aiobH`n2CQbHr>7|JzCel z&V>{FOt;O#H1oZ%1|gAt$W(D~FDm_|yH)qrU!-6IT3{L;rs9 z@00Bn19969H}=&1M(Z9n-z>!KM!BADsE!?gd&iff+>!Ss=|*VIBAD!WcW{>yw_jp* z=UvKQy=Vd(07+cF)JKW}qHDol<)mNov0#N$mwBsrgNknziB&l&GNsS&!YCK3%5hh8+j3gBWl4!fSeP(tL+h;v9Yg4j@EP!Ryer85<3T612 z*)2-uXJ%PSrsXa0nv&y4#v>>y?<4s~N=BGOV5*XPk&HxT5=g#V$%!N*k)FB_+^Xbc zl0Q%~J)sF)OS0>k*%{c>j-Hu)&m1E4%5Wx*fX;)F%KHP09en= z$lU&!8O;Lq%*>hv>!_dq$u$E4+0Gwose_}@jo1i2@Q~d+8sQ-qJu@RGtYfxvsM}+< zY9!NoW=0$7TSuGK@iQ~Bt7%Ua|2NOf{*U8t?R!Tx{^W!ef923I6aQ1qiE&ipPfl3z zR}LLB@wbjMM>YQBgcX0~&@mH#>*#(|<4;al@mCHVGx4|1sg7#=$q6g|%AsQ>{??i7 zQH?)2VZ~oLbj-xxx_&sS@h2y&_$!BwnfO~*ZAUf!%pva=>l%bvm-uULwFB~F}%eP4(dkzY0xa#>@2q;^FE6`9|tezs@WtOZ4Q z7Q~-ZyJ>~RM9`VpaAMu5pL?2^PkAso$FkWEO#bD_0jhq+`c>vP2 zNVkG7L!t*t9wfZ;D*Q-SAPt57cI3!R@1vx`pCPU>ZZr&W8{_XNV<92-!jt}Zl9`QQHriy9n2j^pDa=j)yER3KA}}GQ znrwl|2C?mIlg(hZ%48=oJKtnMW|x?34zsIFHjmlOCOeJUJtkYk>`9X?VfLcQYM8xl zvekmV5qldIP>iwK;15Mj=Y#VLbo?}~%X?vS( zA=CCY+e%H_d(6&sv6UwK2iqD<=8+WLH74^)+J+V|@ zOcrMLXOpd9mZYhY5oQxjwu;&5CaYn#&SX($cbM#4X1_971GB%Itch8=NA++XvmBGH zWwzL4>zFm0Y(2BvOm-o&=S;SNxAxCqG|x7&?Mu^k3$r0!)!(hm@=dmb*(#IW!EB4k zb~1a?WV@LC(PZ~9>#eIc?_)N@WItuL%w!KRyUb({GW)5?9%lAilRe7pOOrj$V;eBk z7ClKjofrj1W2;y$vyi}7ldvsjHe39KSv|8e#Fx@AT7A95!sZu!Nx-)lKVbZlF(IDx z0~p6JPGg+KxR5czxR&v9#ve1@&G;1KD~#_je#EHtqLwolM=(xd3^JB7u3$Wmv4wFf zC2)r(#S?*Dz+VOKgZ|_p4*<)CJOXSBJPG_~pcNPy z@*MEOAuj>18}cgf-XU)QcMo|BxPQoh0KXb?0N5vR5O{pxLtrrQci`f{r@(07D`3a{ zVwVw~l;@NBBo3m9WU_&YL;3d!lxb1aT*z8BJ(Tf?X&07;EnZM>ot=x+?`8dsf{vvUDjOo8iJXs`I_4I>@AwjQY za4Y)fU|14OCX9mMv*WQmKQDPdZ&>ST=oT(qhrqW_d|fd@i7RC{J3& zXAFu}BsGYkcF9Q6c@B1d(t7^A1l4(@iAxTo(?FcrzAfk=G$yg@?KG9v83aZ2MOHAz@If+ zaaC=y>9ECEF!|R4SA3?e7`7N&1cs{-)3z*mlEC{dCZis3x^FTX2b|BFjCzPM>VeK( zl`qsoj8PAZZ5#D)md!T8cDBuKO&%+j*zBIWR+c# zwjpdY@^iV(Xnw}nb11pOw!IFv(q^rM zW+P#%vsq5>EOD;QmL-2A>Mh1SG+B&$SYtElVXe)mhx2VlJ*=}C^>BgBsE73y(`$Nv zEt)Nsw6V7?FS6OD-U;#&n_bs?sJPT-KkYrj!Cvn@R$OM={?a=|+DxC3(jZ!F8}0ou zMtlF|wkJH`}(0Q;Nlv7Sng2m8&e4MDyipo86N< zR@#i`%NEn-$$SoeUSpMvr&Te=XjQz{w$Z8>W3(z>XWM91j4@gjueWV9>tc*n#T#rJ z#bv9_C@w#?8Lf&p+KlGlHk;9^XfsJir<*OCq@&Yzo6)Mc!)CN9-f6LTS{3iI8Lf&j zMyuj3%O>gQbhpiDRs4y~XjOc`X0$3kWHVY7V~keChb>z?t%{G@j8?_RZAPo&lNOV- zDn4bg_?J@#iKlJWhWXNJvrjQ!Vk|jzsCdSc(1@ms5;e868N-m=-t{#D`+Hhah4Aoknru>U*< z)B3CzZI&%Qt&0{kg>?tSI4)SjZsaDpe4H7=PZo%x~aj;%C+Xt3l zv(MAAM54_Grhg=oOs2*t#j;5{BG@dRR=yacl`qvQ8Ba$9zs=}~(8p$UM2ImuBBa?i zIwGW7Owtjduf_D%^rKe?7Hk7;b`Z9~Hv0s&fX%!aGv#qMOU;-nhuds8 zY$I(p6}Hhfn*-Zen=Q#GkmGDtopGKRZ?iQSr^+mwZOJH;6K&R-zF1DR*=y-lGRJ0b z!FH0(4#IYd%|3xG-)7#7DjBjFZNqGv(KeiFGunn?o6$DRv)K~Z=G&|qwo;qjoKY>y zZT7Q_6uH1=w0#S0M%#C$#gcxWajrbuV*1{Ub#jTx)LdF>+2X0B&E%UIKadrcO}_79 zpJuc;Y~H?3me%(whi#OL&Fp)iHpVe`@mt#bg{Ah{_e09yV$w?K6luDfCHHM!Vr1I9XRFSyu81130ZeFi$&i36uQY)f41 z(t)QqZ1=d>uLl-7Y@fK;ph0sTwp=IEUHg&l+K+VCex$qhBi*$h>8|}qckM^IYd_Lm z`;qS2k9605q`USb-L)U-uKh@N?MJ$6Khjm9b4(qhVXp~F@!Ev9VE4qJ+}n6hnf*iMxeQ?`p8wlZn5 zl;^Sk{av;w8`%3U_G!lF4x6{Hlcn_)TCCnE7n|8P&S5KYv8ukw4%=!MyP|Kp!?w-E z?(aL$VSB;F-t9ZgVf)m@QZmOnY(rgaO6CNIE#zX0GN(Ii5f@vZd5Xif*~Q+^EOgjD zak2P*a~-zK7&G@3GoHM!Otm6!+OBYn-%M#SHMW}_wyDx$%JxHtZKkxCvR&=4O_df? zwk;0ZOldJ?yVhZwDlMjL*E?)8rNxwOtHU-`T1?q)bl7G}iz(Yp4qJh=n6lmMu$?C? zrfj!3Y^O?#DccT*txWEa^8<9{Q7Gu_aHrg4GCFhIDPJ@hoi*>2pP7u#sCUZILs1R& z=uCB|Tx>Eri`^-&G8vuW?v&4(jLv@1ipl8gey1FFoN9&6{CCQwCZnr@o$?x!(G>%H zF&SM=?37=bjIK0x%Ism(iaKxIDchJyu{WauUVl7X^+0oQr@Ux{Vl)SL%Epn3(cIlB zy`vPPxr=%xqdAXyqm_;3JnD^6jP@1O8><-YE2w8O+Q(3jZ_yVD+Q(3jZ_yVD+BZ>e zysAh0ChD1t_G#41Qa0MBQIBuf7YbSnP%m5AXe~fJlhGQ2dJ~k5))3U=+xLZn)*jTG zq-?bIpq|NS%|gA&%0_Dz>P=CM);iRisu-TZTo~UeB255|4Guidb{$?^YBgf59CDn{vX)?Ob*(q-@8C?TmhM0`5k1#__ zM%PZ5At$L;)NHLXnVPLPm`u&qS4^g6t9n>bDCjzFr<~4@E(!%*Y0qr98qtsve6kQ>djM( z&NxwzAKMfPI#WeGlhK(f>djXr=?oY3PE(A|a8a*RF*-9wJ(JOyG3u2m8=X<3Ub$j) zMvZz46r(e7)H4~KiKE^^Wur5A)H_`bL{k%x;s*}-MpIVSRNTgSF|kj!6mKV{rfA~b#8k+Kff{Q(oocM|W;@(MtVdYU z0@_KT7GnC6B&Da@GH05yDnpvuB*ODeeau6vg;ZF#CYh~?V`WRtIH+;qF;bfUE2Nk| zl2c2!(%K0YODXdc(msE|7E}5Zcm|orAZb-;Es1puSZ5r`s}X zFefj9Mq{f-TmjiDewab~c!zqI&mPS1Sj)5(-<`(t-x;fpw~LOaF|QzFTkhd4QrO{k zb+WzYo{O#ibw*5%joNp&y+^iubRzKo;w+65nRw@|AKtPajyKx+;m!AcqPLhXQjz=d z`*D6zjFgFY*anI;ydjo`caGALXNbv2^p4tOSWiN#LYj_RCyD+d7pWR=tmR@NtU>b1 zfVc?xiy{v^4{|= zU5tn30YUGGJRt5#p5b{*OdOgEP0r91`MAgjzANUS%we>Ug=qOi$m2t#P6eij5+I@i z%oJw;2a2;3ZiyDuHH|UbQKD+@}?@8u2-+XwF?L1f~2oLm=#RbsQMXe7} z+yI#_Mtz9pB`7nK%jAkHpwDA{fw&4XT`2kRp4qi1Q^aM8#gCz<%M>5p9J>Yj(^y|F zZil=`?1Gg}@_iV)pFp!zJP523k3k=1{Yvq3Xd+yzTKp1nop=G*C|*ICCN8r^ybjF; zVjnc?S<@`uhGqlTx=6G^zD&Fa+$8>jGMl-~RpKLPt`Q#tujP_Ah|eK!6aNC<&YHV8 zw)b*uA7ag8tZ8L@7J3cuTTmolMC6nC9SWa#h2y`M%fBXk-emDQ_xJ|JBAMTU@Zs$T z5A^RqpDf;G>wBy@#PWwM|C6m!QhantZ!x~Z`mb3(Me7Y~4p0+K8kJnDQETfp>URU=WN|TTT3EB0HCMCdTGni3 z`6ia{VCw^{d6+fNux1Zy_Oj+JmfvOhpDce4SrbD&)cXhz^*+W!y^n{SEGDpK3Ttv$ zGm|xWtO>DP#PVruJ&QFJtf^s56KmG8=3GT-W*h|6#7r;w zcAA%BwE!5vslkR#ja=3Tp%29cSziQAzOfYOF)CS8DUTPo#Z{tA zG%f=D9HSYSXl!KbMz(H*_1?G^=*x}mz;t5=H2dOqaG71uY%yAagN@zL3*T}Jg#$XnyufOCuktU1JGghAuwG1wo-TjK)2 zvy5S^83TE*o(o)V1dTG$ln`Wn5j6YsrNF3B$(jgctQEjD#zxk(K*m}D++gfr%`V7T zD}a|9yIHdbGFA!T7UKYG4nfBH5J&UG6USab#@+;c)fmQ_F_5tb0pB!&tSN$weFvBj zw=`~;NQAXl4%cO%g99jA2bK&|?IBm565%PYXMi4K3=p#gm}nFM_v%X-Bfzb3&5SLq*&a_Z z*$z1&ZWnN$-pcwt!2Nm~aBJKl;6YvVqLQK)m5c`-)&oEsJAhy4xxjsT5zu2S1@6}) zz(k`Ncu;QvrW@OVhxJ{+e4`ckg}w(k$7ln3j6=Y3LnKg}@xU!c0Ju*d1Keih0{81h zz*mi>z=L`-@UXs}u@#8f0>rADNVNh$%mg4tABeGL+z$LgZv}dcHejM5lE}9JaIi53 zh*`~Y5fC#OILe3sF^5@h0b=$7_v*WVn76=v`W_&BVEGUbb2XW2#RGBt0v^=I0MS0n zML@Ic%D{!yAhc#_Lj0h0z_olHBy=h$HAtP2mY&CGNUIfIp zvpxbu1XykXVx9vruYie0E6aO;=|&sypneEA*bpgHD;_w?2(X+B#G1p{48&RoL<_)l zV-FBB6FAs71jNitrMmGz%uHamF$Rd43CuByfS8%Ud?UhgGjNWv9awI(0?#tqfXfZx zr}ZQNTw~+{HyBHSmmAH%Eyi}>Hlr2zs?i2~)7YLtEw=*U4-lU8Wgmd(9f+*}VzmUq zf8bud4Y*GinN&Ui#QG1!nh(S}55&}2*?8ha6C<#PK#%3TQ3`BV#j;%l(N&8b| z0*tx9QN~in<^j~^b|CgX#x@{)9>_j3<^s_^V>1x`2Y4G9JtEB;kCcFvgwz`;Rb=2h z#|&>@$ODiDAq_>sY{6sCH1F}SjYob0@(IW%Ax(pvgM0?kOvtAo45Demc?_NZ&&`3uy^#6-Z&o5u{Z}QKWN`nvmAQwhsAv*JB z@~e?=L4GaL^^k8wx(R*Wg8Wvb9nkL-{k^-8--C1?(oc~dfbBu#47PiSB7KhZCCYt`T*?fuN2Ymoq}Af%y4!(baB zGrgl^fA1LZ6Obk#O+uQ2G!6C~q?wTOkb+3FkcyDzBAo_X8S(|lPe*q;=3=h;%X1rARGES0HVM?T1KPAYYHP73n6VTab1j z?SyR?@_Ufqhy15V4?=zz`J+gWLw*wZ)5xDez8mQ|$a|1pM*n-kUqyNy={HEfh5mQQ z-$HsD=^do~Nbe#YKza}9&q#-mK0x{q=_91WNdG|He*QeUKgNCQx25b~i&!;nTGjX^pd=>((+uunoh1^G1OIml-qpNaewA0k~1c?EYAis=!FVd@!Uq}8Mq~AjR z9rCx3-iG`R^8HBfLOy`}J)}QFK7{-OD^;|3Lmv|35pZxZC*kW(S|ft(JxFYDK^1NxuQ;&DaJ^&Dahco^d;HYQ|l_IT`l?mt@=ztj>4{cyq>Mz@KG2 z1zeNS3fz+MEO7atSAZ7{dJTB%pf`Ze4tf*#{-8eqeS_P8V+Q{TIDha#;OfDD1ztb+ zZ@@od@!AS{v@4z_GYvJQ!~it z;Th!f)C}@@P6qkBB!hge&LE%HWRTBWGK9qK1AKqn8($U=#vRxZxVtbO_Z3gT*TfTW z|7AKXGjWHp5O-rwFKnMWsG%@b^1W=FVmp!2h^}i zq(d`MWVhgyuM)hNl?#9!m_D zgP|V=)WC;8Gg1bi83B~w^lJ@+fhl6NJP!I%KurY1Fj$8IQ^Z&~9QrXpO&o_6E=7!! zBcVASDDiw`6!gP@DI!abhJHLyijjC)qM`H{=(FWm=uZG@D0e*M3343t6M-6@t&E2} zS<-WvNkDqeasuQjG8_7-Kn=evFaerraw0U-ff`ECFFoYQ$Br)1jXU)UY1sKt4sD2z@S41D^poU!DYg9#F&cnwgM;@?_`>fVhJ#PJt#Q zbD=2&YT{%(!|{n(G9Q}RKn*2=kWZBb&=&zUk&9R6%mr$A zhE@c*M4k%$e4vI_=0J0rEQY2OsNvb#TxiPVJZQ>+8rm&^W`Ud!%|f7tgS^)Wbav}7Kfg1Wg9rD?75%gyPH5{YPfM%&Y6PhJJ4c>eY za)n$B{W742r-^4lvr(Q6%|$>>%)?jyK5?;J3e6=z4gOU?bE#Yg&1FCh{#8Q0TvkEf z0@Oq)o>rxZO>#LjR{%A5yaMuOxf1#-ff}AvMxgnjJO`SqfEu=86*O1NYG{50)bL9P zHIT27wa{+?YS^kMG}p;GXs!in*s60OUoY#SzX6Ch07L^cTV*3OKL%>p&L+s)p6_oIO1#Ak}IHz;@KMBlmbdTr~4t~bMd9S#IFZj4Y@&Vf!qkx#A-Zq z)8NhZ!1M8yxdsnzg!KZT20w0s{C%JXZ*BoLi(8@D0Mx_}#16;ztd zZ^AYBaSw2lxDU8l{1kW%o}_B%??K>o_{LkqH|~$3g&*UaZVi1u4tbk+67r3VH{n;T zG<>uEH1xMH-il|pn%K^G8@|5Q(D!q|+wl#xhFm&qD>Jp}xv_yD*Y zUkhva;`<}u3;4=c!;{B<0QcalUQN7&?{_8q_!ROh_+D4Tm)l6GE%D>q;e6n~upan@z|cHy5$b^Bupjxc<~IVf;k_U0xfeJYM^!)8Z69zt zj+=h0&xyd3a7^@LHO5gBYcIUPs+$HZz%kB`bu|+>8^oqQ2^gM112WBCejll%qnX89U$yZklq zHu(ndcDWCDr+gE5m%JZ%xBMCKUilF4C-M>C{qiy3&*T%phvZYZj(AM|9{7a(1Mn&N zAHZM8Hejp#Bk-5FF3}J)o#-QB3Zixn4(<<^lO&`)3i;%4DCu_ zrgjyuzxE^GKwB?M`5}b{BA> zb~kXcb}w+M_7mWA?S9~i+RuO|X%7KU)*b=oYL5Z)wI_fD+Ec(n?H9n=S}X8W?U%q} z?OEVF&F}=oe9Z?e)p`NTwM5`TEg85-O97s#`GJeIG~n4<25_mC30$W22UckVfy=eQ zz?E76c#d`)uv!}qtkp&W>$K6pdTlJQQ5y$btz`k%XxYH?wTZwBw8_BlYg2*E+H~L# zv=f0BX(xHS&4SNAh5bigv*6TK{3%hXq`1N`jVH~GRy9?JPZkTy$_lG1Ry2sRXj6S< zxU6D%xO{D0xHz(mO_AzwSz|?GQvgslcF&c+1|;d)!J{R~!DG}we3HaoTT zmJ={pec3ikLG`S@Y@?+hBlT??Y)3+?!?leKma~enhYZYTSJYNj!*8^aS68Q+pjfKH zOE`;_Zdj5ZULLIv=T%j?YCCG=EpH6hcVSlzSR2-5E8P`xG!?1szNOB~sD>8QRzL6jV)?hHEQo!d<%7brID}etku4<;pIb>AFaMctxZ(7_F(nXm{33sJ5z`63Q8_ z-&rFZpRP(^G9EFhNT=HFeBMx*Zl+eOnQlhWZtGi=Q+{#5PUnxiy)KKX=Dx)QvfKQY zWmUsnPA0p_ZcC}gx|~vWW8IcgjdeFCI+-|XS#m5u)Nfg&cGc`~b)C7~a?`ZRsfjhe zKDs(m<+62Lqh0ZuhRSGtH4Zl=%gzZ`Hj1*f4LHn*P;FCu|FBq+^M#t)4 zWttnK^;Ua@O|_Md_9_~~<>*}$gqK$|RX5HJ*DS-jdxVeSh6ucNG!d=gA+W2&OmpE`q_U!+u^?O>UICZkK#e-U+oc;~#of;E z5x$557j57;EeMv(Eeb|!YgLryM%$dQ_+e~>(sXiGP=wZ0hU;i7L{Uv$w7xN1RahV8lMbAb#5`VIQQZ_? zvV;zwg~fTZmMka>m6n#wD`}@VBUEN<%8TZP=9Qf8;&V$1TztX&7!Q>c2TN@$SaG3~ z1xp>gG&Dc2Y>sUP#s9^5!H`o`Hm7L5lg|y6&WaTX&YfSlpt#sB08Sn|d2sfevITRU zn!>!ISdG$9a6xIABL+(0j6q>ZX)sh!RO%>Xshq{;ghKNjMTk1h1)*Yx73>IO`>oF} znpYkwE4N(-$NzbyXE-(Gp+&J0Xtg}AUAyIZj&3nj&X9wWraTrf(##9awtJWrDtERA z>Szt24J`^5FDNTo7;=_!>K(;r7nPM4&6-zI8Y(O*Hs=_GCG$$kgR?`yIiZ4*1!`MJ z+ofuW8snn!(A*{SOG{1-1-T+~YMlHpEt)mEylhEnD37P7N#Pr|(P7UkC@2lhD-H1! zF$)zS?4>0fXH%1>CYi~K=FJY3qO$_ABHXy7tS(&1LVl#SqJFJtfX)=_mYD*TqdgY8 zCfhB!ZkZ)f30_1j^Q>^AQ0+$4MU8c)LF-=)HD;bs2e8y(V44de z%a@1QA)GCVdExWQnwHhoNBNk=E|;x@zoM>)Jj0sS&{!W`i$!lW=}_F9jlRrD#O4IEgdWRc3u zt*Bgy!w{Fk83>PtrL%ZRUAR`1)mPHBZBcDR%*U1CdC~eRuH?{DdvJ}fH0?S-=Y*J@SyJGM|Ao^|buAEBg@<_h2}OX_wjLOYkt6~dvNg$2{uhP7ZE zsf^%^%u&&`emV{0MUit2YHzfz0=ty4|VE-S}eefkIu}(~ePBM28>i7L94JMp5Z)rfM<8?#y*8qD-#6n(Z!)Dx_{> z&>0YK8W%Hl7!lT~g62sD7cgaI;LBDKQ5pVqB(b^z*O7DsQ>mP{%|ugeQv(ixvD;*P zawKmRhOllu60?koqw3i-_E^G3c9`P zq|g!0by6w2*1>K|+g^5C(&=iqg=7AjyIZ%Oc2Umuv5PWJ@46@!^UK_QyY;J! za<*SxlyUmiMX{J)o$t$LQ_cfZN8a0Bb=y)mYlrG6uakA7%U%6j?B-m*%l*;ONGE$m ztc^|zs3y9dt=vwxrBq{GOfGJw3%hEdi&?-8bYWKwbUvisR{g$K~Ay zu7D|iL|M14>bzhyx+)SDg}B>T9XTHlRrsL;1-R444K+(DIKr`qQ4L2HhbDF!;PN7N z`e3WkJD$M0o^If56DOl0uWEIqA&h4dIKK>?+f-5AVBVF;!^4i+3S}*8s;jFHH#FEA z5qpusdPH^PyA@eg)z$PS#*ne;{->wiJ$L)5RkNOL=)YC?9zB2Y!hVz6S~SDwF;Xcd zBBdbFnS>&6oC}X5#UMcH2vkTNK}{|mNM#ofR4yi~(%4k;NFxWUlan`j&ZL1k?! z`;*EJs_d^S`R@rAN`--y-f`)ZqKd<56fPdH6-~1K9X9OP;{EgtR1P2NJM9@a? z2ZA>V-XM65;1wE=fgZ!Z0O<^*vq<|aK`X&i1dkCsL~uXBy##j=+)l8aU>m^=1lJH; zMX-tBGU~v<2ulC>I2z9J{_(_8=MoOm^wK*| z_{kE0m%v9ruRwWI2m%Dz1i1vw1g!-0u9R1xo)`b&f4nQ@#e2B`)bok}K`ucv0ZIet z<$nAR@DU^uq!0uMvI%ktnh6BnUPKiF4*|R9BPoR-K#)ry@Ubg*FdT28%RcyrMg}zh zWE@(#%Y1m+$usb*U{gb5v}SHaeZ$HMyk69h6}ypN9wm8UMSY~Aw$UyzF3`TpxPW;B zXD0vK#*?zMv$CmFbz@U~cxG+5sjpF{wgm_}C%N<3B64VvugcY5om9UtFBW=YzmB#iA+rt(@W0rcVkMOb!)}&ncKP zdHjS4!NT$R(?g;0+1XRGrw4;MdDA8o;#;p+$%1cPGSq#^iFw%tq3qDq@e@Nih3LH? zdwkBsNmJ2#ULMkfP<{@6bji{Cgs$5(q{zjT@kyFd_=A91r38;9@Hmr6w>0YAJZR!9 z4b5Dx9&ZV~ECIjQfk9yQ@ifQ;n2kHOPYf)vHOiQ zOHTUMB`0@Z(j3M~UHdsqiovlnBD&p;7df)b`qbZ7%b^Y%HJ2{4 zU24$W^6aj+XOtAjb=aVFE#+v@-0sO;yNGR~eZJF%t=q$nhD}$ebnR-V0i}D&j@C>! zbGmhtg71jb^sc*i3{rmAO*=~Fbzjol_z7M2uJcTpC&i#6M=N&OE{^ZY+V1@`f!F;- zpsNbFt1Ys+DR4xi$93o<=Dq#8FFpVhCwJ9s2bT@8Z6v2+`%GokqNIjxAY9jD^LiKkt$pMqJ%d#EilnGa9^##?{bMYdW;Me%V zVe7(1d^17>a@)1gLwh376M>!x^hDs_KLV02dhzv_XmHp7^g0C zNCkN^a3Q|E#rwMWvbYpd5x(E0Z+eS>g^=m*=iZP0MHju+6_J(mKP&<}T`;N3C@QV~ z3Xn;(T7hp_3-SGHHNJ{1!k4bg&3{9CIM*tNwF24(*emd*YXsI>Zs0<3zjqTF#lKqt zeLXC-_@eg6mR53^Y+TS!L)+P6GQP(}4Dba!{SH77?bYDFFlslV7r}?n;SO6J_rDff zTfyb1^8gZkoi6SE3eZ9WzVRhL>Rf(O*=*cmh?QN4vh^q(+mKQKGTvgYp!O zMlOp-&Dj2!2W9ZO32juuiYMpTt}trG%17Y?{f%ZHi(y^CEzs81;rnFra)nrl)}7lD zE2pAfg?crpSC4OzDKe_;BK+Qf#JH!6?bA3P5f5Fx9~9w-$Pg9KlS@0x0zDDvi9k;TdLqyhfu0ETM4%@EJrU@MKu-jEBG40oqZNVw E0`zG(w*UYD literal 0 HcmV?d00001 diff --git a/Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.dll b/Tools/nant/examples/StyleTask/SimpleExtensionObject/SimpleExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..ad0d4d419c51e99cad6ee710bc97c54b578d0b6a GIT binary patch literal 3072 zcmeHJ&u<%55dPM7f}7%swonow+6^vJRA4c!Q9(k~jU8xceko4VDyrJ7*RRQ<^{%zM zE)Iw)7myG=aNqzp_zyTBs47+BfO@Nh#DQ!703?vOfkgP`?Z$SZieJ5e)JfjFnR)YO zzL|aRC9^9ZAqybKv9$%<;4Dc-S#X+GC<0lV_kylRC}=x|wMtE7HuPpE0C5WN*DFQB8wx=ORe8sQkA z3NSgKYH@+}3kkLihVZcoT<2axjQ@fTma=$~`?!BUGR4v7YD>S3k5#fO@6wXXyd!+% z84Mr0lu0uK$#s!=@htI6?~CW^C{yMMK=Ji+(>2aD>QZZQ(hC}#g=jL)KbFBBQGPW};80RO0qHg} zMQ$V} zz_*&7hpO#49nX#xT9Ffkp4&iuBZ^fE^Nlx^6T@+N8mnZT))f^h-%+rfI0#cWYq8_U zZcAC!pw)Ig71mXF)pb;a#9+tFw5UA0tEK34%&*qyFkiY++_=%^!#hg9>LLZ+B@=? z^eyq6^?jG=8`8UvrNmp@AJWT5=`Yp9+Sey`kNvXIq7EWKo9o+A3N{|8f+Bg literal 0 HcmV?d00001 diff --git a/src/Net.Sf.Dbdeploy/Resources/CreateSchemaVersionTable.mysql.sql b/src/Net.Sf.Dbdeploy/Resources/CreateSchemaVersionTable.mysql.sql index f8dc638..0d7e64a 100644 --- a/src/Net.Sf.Dbdeploy/Resources/CreateSchemaVersionTable.mysql.sql +++ b/src/Net.Sf.Dbdeploy/Resources/CreateSchemaVersionTable.mysql.sql @@ -1,7 +1,7 @@ CREATE TABLE $(QualifiedTableName) ( - ChangeId INT NOT NULL AUTO_INCREMENT, - Folder VARCHAR(256) NOT NULL, - ScriptNumber SMALLINT NOT NULL, + ChangeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + Folder VARCHAR(255) NOT NULL, + ScriptNumber INT NOT NULL, ScriptName VARCHAR(512) NOT NULL, StartDate DATETIME NOT NULL, CompleteDate DATETIME NULL, @@ -10,6 +10,4 @@ CREATE TABLE $(QualifiedTableName) ( ScriptOutput TEXT NOT NULL ); -ALTER TABLE $(QualifiedTableName) ADD CONSTRAINT PK_$(TableName) PRIMARY KEY (ChangeId); - ALTER TABLE $(QualifiedTableName) ADD UNIQUE INDEX(Folder, ScriptNumber); \ No newline at end of file From d35b5b54ac9e89db24e6218425e5b2f57cf21451 Mon Sep 17 00:00:00 2001 From: Tony Briscolino Date: Wed, 17 Dec 2014 13:57:28 -0600 Subject: [PATCH 12/14] Missed the conversion from short to int in this file to support database field type change in version table --- src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs b/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs index 14fa3c7..ed43447 100755 --- a/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs +++ b/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs @@ -66,7 +66,7 @@ public virtual IList GetAppliedChanges() while (reader.Read()) { var folder = GetValue(reader, "Folder"); - var scriptNumber = GetValue(reader, "ScriptNumber"); + var scriptNumber = GetValue(reader, "ScriptNumber"); var changeEntry = new ChangeEntry(folder, scriptNumber); changeEntry.ChangeId = GetValue(reader, "ChangeId"); changeEntry.ScriptName = GetValue(reader, "ScriptName"); From 3180be23ac67c20c1f258045bd6678b8a669911e Mon Sep 17 00:00:00 2001 From: starasov Date: Tue, 24 Mar 2015 15:51:10 +0300 Subject: [PATCH 13/14] =?UTF-8?q?Can=20load=20provider=20file=20from=20cur?= =?UTF-8?q?rent=20directory=20of=20assembly,=20and=20use=20em=E2=80=A6=20?= =?UTF-8?q?=E2=80=A6bedded=20resource=20as=20a=20fallback.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit copy paste from https://github.com/brunomlopes/dbdeploy.net/commit/af5f15d80ebb590c81029d07c7d7fb9c578997c4 --- .../Database/DbProviderFile.cs | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/Net.Sf.Dbdeploy/Database/DbProviderFile.cs b/src/Net.Sf.Dbdeploy/Database/DbProviderFile.cs index c4d0750..c897a02 100755 --- a/src/Net.Sf.Dbdeploy/Database/DbProviderFile.cs +++ b/src/Net.Sf.Dbdeploy/Database/DbProviderFile.cs @@ -10,25 +10,26 @@ public class DbProviderFile { public const string ProviderFilename = @"dbproviders.xml"; - private string path; - public DbProviderFile() { - this.path = null; + this.Path = null; } - public string Path - { - get { return this.path; } - set { this.path = value; } - } + public string Path { get; set; } public DbProviders LoadProviders() { Stream providerStream; - if (Path == null) providerStream = GetType().Assembly.GetManifestResourceStream(GetType(), ProviderFilename); - else if (!File.Exists(Path)) throw new FileNotFoundException("Could not load provider file from " + path); - else providerStream = File.OpenRead(Path); + if (!string.IsNullOrWhiteSpace(Path) && !System.IO.File.Exists(Path)) + throw new FileNotFoundException("File not found for loading providers", Path); + var path = ProviderFilename; + if (!File.Exists(path)) + path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(GetType().Assembly.Location), path); + + if (File.Exists(path)) + providerStream = File.OpenRead(path); + else + providerStream = GetType().Assembly.GetManifestResourceStream(GetType(), ProviderFilename); using (providerStream) using (XmlReader reader = new XmlTextReader(providerStream)) @@ -38,20 +39,20 @@ public DbProviders LoadProviders() return (DbProviders)serializer.Deserialize(reader); } } - + private static string GetDefaultPath() { DirectoryInfo assemblyDirectory = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory; string providerFilePath = System.IO.Path.Combine(assemblyDirectory.FullName, ProviderFilename); - + if (!File.Exists(providerFilePath)) { providerFilePath = System.IO.Path.Combine(Environment.CurrentDirectory, ProviderFilename); } - + return providerFilePath; } } -} +} \ No newline at end of file From de161ec23f4450d9ba09570e65f6cc11612b17ff Mon Sep 17 00:00:00 2001 From: Tony Briscolino Date: Mon, 30 Mar 2015 07:35:34 -0500 Subject: [PATCH 14/14] removed an MSSQL-provider specific call and replaced with a dbconnection required property. --- src/Net.Sf.Dbdeploy/Database/QueryExecuter.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Net.Sf.Dbdeploy/Database/QueryExecuter.cs b/src/Net.Sf.Dbdeploy/Database/QueryExecuter.cs index ddd6e1a..de878f1 100644 --- a/src/Net.Sf.Dbdeploy/Database/QueryExecuter.cs +++ b/src/Net.Sf.Dbdeploy/Database/QueryExecuter.cs @@ -162,7 +162,10 @@ public void InfoMessageEventHandler(object sender, EventArgs args) { if (this.currentOutput != null) { - this.currentOutput.AppendLine(((dynamic)args).Message); + foreach (var errorMessage in ((dynamic)args).errors) + { + this.currentOutput.AppendLine(errorMessage.Message); + } } }