/// <summary> /// Generate the command line arguments to write to the response file from the properties. /// </summary> /// <returns>Command line string.</returns> protected override string GenerateResponseFileCommands() { WixCommandLineBuilder commandLineBuilder = new WixCommandLineBuilder(); commandLineBuilder.AppendIfTrue("-nologo", this.NoLogo); commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendIfTrue("-bf", this.BindFiles); commandLineBuilder.AppendExtensions(this.extensions, this.Log); commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-sv", this.SuppressIntermediateFileVersionMatching); commandLineBuilder.AppendArrayIfNotNull("-sw", this.SuppressSpecificWarnings); commandLineBuilder.AppendIfTrue("-wx", this.TreatWarningsAsErrors); commandLineBuilder.AppendIfTrue("-v", this.VerboseOutput); commandLineBuilder.AppendFileNamesIfNotNull(this.ObjectFiles, " "); return(commandLineBuilder.ToString()); }
/// <summary> /// Generate the command line arguments to write to the response file from the properties. /// </summary> /// <returns>Command line string.</returns> protected override string GenerateResponseFileCommands() { WixCommandLineBuilder commandLineBuilder = new WixCommandLineBuilder(); commandLineBuilder.AppendIfTrue("-ai", this.AllowIdenticalRows); commandLineBuilder.AppendIfTrue("-au", this.AllowUnresolvedReferences); commandLineBuilder.AppendArrayIfNotNull("-b ", this.BaseInputPaths); commandLineBuilder.AppendIfTrue("-bf", this.BindFiles); commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath); commandLineBuilder.AppendIfSpecified("-ct ", this.CabinetCreationThreadCount); commandLineBuilder.AppendSwitchIfNotNull("-cultures:", this.Cultures); commandLineBuilder.AppendArrayIfNotNull("-d", this.WixVariables); commandLineBuilder.AppendExtensions(this.Extensions, this.Log); commandLineBuilder.AppendIfTrue("-fv", this.SetMsiAssemblyNameFileVersion); commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles); commandLineBuilder.AppendIfTrue("-nologo", this.NoLogo); commandLineBuilder.AppendIfTrue("-notidy", this.LeaveTemporaryFiles); commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic); commandLineBuilder.AppendIfTrue("-reusecab", this.ReuseCabinetCache); commandLineBuilder.AppendIfTrue("-sa", this.SuppressAssemblies); commandLineBuilder.AppendIfTrue("-sacl", this.SuppressAclReset); commandLineBuilder.AppendIfTrue("-sadmin", this.SuppressDefaultAdminSequenceActions); commandLineBuilder.AppendIfTrue("-sadv", this.SuppressDefaultAdvSequenceActions); commandLineBuilder.AppendIfTrue("-sdut", this.SuppressDroppingUnrealTables); commandLineBuilder.AppendArrayIfNotNull("-sice:", this.SuppressIces); commandLineBuilder.AppendIfTrue("-sma", this.SuppressMsiAssemblyTableProcessing); commandLineBuilder.AppendIfTrue("-sf", this.SuppressFiles); commandLineBuilder.AppendIfTrue("-sh", this.SuppressFileHashAndInfo); commandLineBuilder.AppendIfTrue("-sl", this.SuppressLayout); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-sui", this.SuppressDefaultUISequenceActions); commandLineBuilder.AppendIfTrue("-sv", this.SuppressIntermediateFileVersionMatching); commandLineBuilder.AppendIfTrue("-sval", this.SuppressValidation); commandLineBuilder.AppendArrayIfNotNull("-sw", this.SuppressSpecificWarnings); commandLineBuilder.AppendIfTrue("-ts", this.TagSectionIdAttributeOnTuples); commandLineBuilder.AppendSwitchIfNotNull("-usf", this.UnreferencedSymbolsFile); commandLineBuilder.AppendIfTrue("-v", this.VerboseOutput); commandLineBuilder.AppendIfTrue("-wx", this.TreatWarningsAsErrors); commandLineBuilder.AppendIfTrue("-xo", this.OutputAsXml); commandLineBuilder.AppendFileNamesIfNotNull(this.ObjectFiles, " "); return(commandLineBuilder.ToString()); }
/// <summary> /// Generate the command line arguments to write to the response file from the properties. /// </summary> /// <returns>Command line string.</returns> protected override string GenerateResponseFileCommands() { WixCommandLineBuilder commandLineBuilder = new WixCommandLineBuilder(); commandLineBuilder.AppendArrayIfNotNull("-d", this.DefineConstants); commandLineBuilder.AppendIfTrue("-p", this.PreprocessToStdOut); commandLineBuilder.AppendSwitchIfNotNull("-p", this.PreprocessToFile); commandLineBuilder.AppendArrayIfNotNull("-I", this.IncludeSearchPaths); commandLineBuilder.AppendIfTrue("-nologo", this.NoLogo); commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-trace", this.ShowSourceTrace); commandLineBuilder.AppendExtensions(this.Extensions, this.Log); commandLineBuilder.AppendArrayIfNotNull("-sw", this.SuppressSpecificWarnings); commandLineBuilder.AppendIfTrue("-wx", this.TreatWarningsAsErrors); commandLineBuilder.AppendIfTrue("-v", this.VerboseOutput); commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " "); return(commandLineBuilder.ToString()); }
/// <summary> /// Builds a command line from options in this task. /// </summary> protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder) { base.BuildCommandLine(commandLineBuilder); commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendArrayIfNotNull("-b ", this.baseInputPaths); if (null != this.BindInputPaths) { Queue <String> formattedBindInputPaths = new Queue <String>(); foreach (ITaskItem item in this.BindInputPaths) { String formattedPath = string.Empty; String bindName = item.GetMetadata("BindName"); if (!String.IsNullOrEmpty(item.GetMetadata("BindName"))) { formattedPath = String.Concat(bindName, "=", item.GetMetadata("FullPath")); } else { formattedPath = item.GetMetadata("FullPath"); } formattedBindInputPaths.Enqueue(formattedPath); } commandLineBuilder.AppendArrayIfNotNull("-b ", formattedBindInputPaths.ToArray()); } commandLineBuilder.AppendIfTrue("-bf", this.BindFiles); commandLineBuilder.AppendExtensions(this.extensions, this.ExtensionDirectory, this.referencePaths); commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles); commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-sv", this.SuppressIntermediateFileVersionMatching); commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions); List <string> objectFilePaths = AdjustFilePaths(this.objectFiles, this.ReferencePaths); commandLineBuilder.AppendFileNamesIfNotNull(objectFilePaths.ToArray(), " "); }
/// <summary> /// Builds a command line from options in this task. /// </summary> protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder) { // Always put the output first so it is easy to find in the log. commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendSwitchIfNotNull("-pdbout ", this.PdbOutputFile); base.BuildCommandLine(commandLineBuilder); commandLineBuilder.AppendIfTrue("-ai", this.AllowIdenticalRows); commandLineBuilder.AppendIfTrue("-au", this.AllowUnresolvedReferences); commandLineBuilder.AppendArrayIfNotNull("-b ", this.baseInputPaths); if (null != this.BindInputPaths) { Queue <String> formattedBindInputPaths = new Queue <String>(); foreach (ITaskItem item in this.BindInputPaths) { String formattedPath = string.Empty; String bindName = item.GetMetadata("BindName"); if (!String.IsNullOrEmpty(bindName)) { formattedPath = String.Concat(bindName, "=", item.GetMetadata("FullPath")); } else { formattedPath = item.GetMetadata("FullPath"); } formattedBindInputPaths.Enqueue(formattedPath); } commandLineBuilder.AppendArrayIfNotNull("-b ", formattedBindInputPaths.ToArray()); } commandLineBuilder.AppendIfTrue("-bcgg", this.BackwardsCompatibleGuidGeneration); commandLineBuilder.AppendIfTrue("-bf", this.BindFiles); commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath); commandLineBuilder.AppendIfSpecified("-ct ", this.CabinetCreationThreadCount); commandLineBuilder.AppendSwitchIfNotNull("-cub ", this.AdditionalCub); commandLineBuilder.AppendSwitchIfNotNull("-cultures:", this.Cultures); commandLineBuilder.AppendSwitchIfNotNull("-binder ", this.CustomBinder); commandLineBuilder.AppendArrayIfNotNull("-d", this.WixVariables); commandLineBuilder.AppendSwitchIfNotNull("-dcl:", this.DefaultCompressionLevel); commandLineBuilder.AppendIfTrue("-dut", this.DropUnrealTables); commandLineBuilder.AppendIfTrue("-eav", this.ExactAssemblyVersions); commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.referencePaths); commandLineBuilder.AppendIfTrue("-fv", this.SetMsiAssemblyNameFileVersion); commandLineBuilder.AppendArrayIfNotNull("-ice:", this.Ices); commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles); commandLineBuilder.AppendIfTrue("-notidy", this.LeaveTemporaryFiles); commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic); commandLineBuilder.AppendIfTrue("-reusecab", this.ReuseCabinetCache); commandLineBuilder.AppendIfTrue("-sa", this.SuppressAssemblies); commandLineBuilder.AppendIfTrue("-sacl", this.SuppressAclReset); commandLineBuilder.AppendIfTrue("-sadmin", this.SuppressDefaultAdminSequenceActions); commandLineBuilder.AppendIfTrue("-sadv", this.SuppressDefaultAdvSequenceActions); commandLineBuilder.AppendArrayIfNotNull("-sice:", this.SuppressIces); commandLineBuilder.AppendIfTrue("-sma", this.SuppressMsiAssemblyTableProcessing); commandLineBuilder.AppendIfTrue("-sf", this.SuppressFiles); commandLineBuilder.AppendIfTrue("-sh", this.SuppressFileHashAndInfo); commandLineBuilder.AppendIfTrue("-sl", this.SuppressLayout); commandLineBuilder.AppendIfTrue("-sloc", this.SuppressLocalization); commandLineBuilder.AppendIfTrue("-spdb", this.SuppressPdbOutput); commandLineBuilder.AppendIfTrue("-spsd", this.SuppressPatchSequenceData); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-sts", this.SuppressTagSectionIdAttributeOnTuples); commandLineBuilder.AppendIfTrue("-sui", this.SuppressDefaultUISequenceActions); commandLineBuilder.AppendIfTrue("-sv", this.SuppressIntermediateFileVersionMatching); commandLineBuilder.AppendIfTrue("-sval", this.SuppressValidation); commandLineBuilder.AppendSwitchIfNotNull("-usf ", this.UnreferencedSymbolsFile); commandLineBuilder.AppendIfTrue("-xo", this.OutputAsXml); commandLineBuilder.AppendSwitchIfNotNull("-contentsfile ", this.BindContentsFile); commandLineBuilder.AppendSwitchIfNotNull("-outputsfile ", this.BindOutputsFile); commandLineBuilder.AppendSwitchIfNotNull("-builtoutputsfile ", this.BindBuiltOutputsFile); commandLineBuilder.AppendSwitchIfNotNull("-wixprojectfile ", this.WixProjectFile); commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions); List <string> objectFilePaths = AdjustFilePaths(this.objectFiles, this.ReferencePaths); commandLineBuilder.AppendFileNamesIfNotNull(objectFilePaths.ToArray(), " "); }
/// <summary> /// Builds a command line from options in this task. /// </summary> protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder) { // Always put the output first so it is easy to find in the log. commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendSwitchIfNotNull("-pdbout ", this.PdbOutputFile); base.BuildCommandLine(commandLineBuilder); commandLineBuilder.AppendIfTrue("-ai", this.AllowIdenticalRows); commandLineBuilder.AppendIfTrue("-au", this.AllowUnresolvedReferences); commandLineBuilder.AppendArrayIfNotNull("-b ", this.baseInputPaths); if (null != this.BindInputPaths) { Queue<String> formattedBindInputPaths = new Queue<String>(); foreach (ITaskItem item in this.BindInputPaths) { String formattedPath = string.Empty; String bindName = item.GetMetadata("BindName"); if (!String.IsNullOrEmpty(bindName)) { formattedPath = String.Concat(bindName, "=", item.GetMetadata("FullPath")); } else { formattedPath = item.GetMetadata("FullPath"); } formattedBindInputPaths.Enqueue(formattedPath); } commandLineBuilder.AppendArrayIfNotNull("-b ", formattedBindInputPaths.ToArray()); } commandLineBuilder.AppendIfTrue("-bcgg", this.BackwardsCompatibleGuidGeneration); commandLineBuilder.AppendIfTrue("-bf", this.BindFiles); commandLineBuilder.AppendSwitchIfNotNull("-cc ", this.CabinetCachePath); commandLineBuilder.AppendIfSpecified("-ct ", this.CabinetCreationThreadCount); commandLineBuilder.AppendSwitchIfNotNull("-cub ", this.AdditionalCub); commandLineBuilder.AppendSwitchIfNotNull("-cultures:", this.Cultures); commandLineBuilder.AppendSwitchIfNotNull("-binder ", this.CustomBinder); commandLineBuilder.AppendArrayIfNotNull("-d", this.WixVariables); commandLineBuilder.AppendSwitchIfNotNull("-dcl:", this.DefaultCompressionLevel); commandLineBuilder.AppendIfTrue("-dut", this.DropUnrealTables); commandLineBuilder.AppendIfTrue("-eav", this.ExactAssemblyVersions); commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.referencePaths); commandLineBuilder.AppendIfTrue("-fv", this.SetMsiAssemblyNameFileVersion); commandLineBuilder.AppendArrayIfNotNull("-ice:", this.Ices); commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles); commandLineBuilder.AppendIfTrue("-notidy", this.LeaveTemporaryFiles); commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic); commandLineBuilder.AppendIfTrue("-reusecab", this.ReuseCabinetCache); commandLineBuilder.AppendIfTrue("-sa", this.SuppressAssemblies); commandLineBuilder.AppendIfTrue("-sacl", this.SuppressAclReset); commandLineBuilder.AppendIfTrue("-sadmin", this.SuppressDefaultAdminSequenceActions); commandLineBuilder.AppendIfTrue("-sadv", this.SuppressDefaultAdvSequenceActions); commandLineBuilder.AppendArrayIfNotNull("-sice:", this.SuppressIces); commandLineBuilder.AppendIfTrue("-sma", this.SuppressMsiAssemblyTableProcessing); commandLineBuilder.AppendIfTrue("-sf", this.SuppressFiles); commandLineBuilder.AppendIfTrue("-sh", this.SuppressFileHashAndInfo); commandLineBuilder.AppendIfTrue("-sl", this.SuppressLayout); commandLineBuilder.AppendIfTrue("-sloc", this.SuppressLocalization); commandLineBuilder.AppendIfTrue("-spdb", this.SuppressPdbOutput); commandLineBuilder.AppendIfTrue("-spsd", this.SuppressPatchSequenceData); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-sts", this.SuppressTagSectionIdAttributeOnTuples); commandLineBuilder.AppendIfTrue("-sui", this.SuppressDefaultUISequenceActions); commandLineBuilder.AppendIfTrue("-sv", this.SuppressIntermediateFileVersionMatching); commandLineBuilder.AppendIfTrue("-sval", this.SuppressValidation); commandLineBuilder.AppendSwitchIfNotNull("-usf ", this.UnreferencedSymbolsFile); commandLineBuilder.AppendIfTrue("-xo", this.OutputAsXml); commandLineBuilder.AppendSwitchIfNotNull("-contentsfile ", this.BindContentsFile); commandLineBuilder.AppendSwitchIfNotNull("-outputsfile ", this.BindOutputsFile); commandLineBuilder.AppendSwitchIfNotNull("-builtoutputsfile ", this.BindBuiltOutputsFile); commandLineBuilder.AppendSwitchIfNotNull("-wixprojectfile ", this.WixProjectFile); commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions); List<string> objectFilePaths = AdjustFilePaths(this.objectFiles, this.ReferencePaths); commandLineBuilder.AppendFileNamesIfNotNull(objectFilePaths.ToArray(), " "); }
/// <summary> /// Builds a command line from options in this task. /// </summary> protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder) { base.BuildCommandLine(commandLineBuilder); commandLineBuilder.AppendArrayIfNotNull("-d", this.DefineConstants); commandLineBuilder.AppendIfTrue("-p", this.PreprocessToStdOut); commandLineBuilder.AppendSwitchIfNotNull("-p", this.PreprocessToFile); commandLineBuilder.AppendIfTrue("-sfdvital", this.suppressFilesVitalByDefault); commandLineBuilder.AppendArrayIfNotNull("-I", this.IncludeSearchPaths); commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic); commandLineBuilder.AppendSwitchIfNotNull("-arch ", this.InstallerPlatform); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-trace", this.ShowSourceTrace); commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.referencePaths); commandLineBuilder.AppendIfTrue("-zs", this.OnlyValidateDocuments); commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions); commandLineBuilder.AppendIfTrue("-fips", this.fipsCompliant); // Support per-source-file output by looking at the SourceFiles items to // see if there is any "CandleOutput" metadata. If there is, we do our own // appending, otherwise we fall back to the built-in "append file names" code. // Note also that the wix.targets "Compile" target does *not* automagically // fix the "@(CompileObjOutput)" list to include these new output names. // If you really want to use this, you're going to have to clone the target // in your own .targets file and create the output list yourself. bool usePerSourceOutput = false; if (this.SourceFiles != null) { foreach (ITaskItem item in this.SourceFiles) { if (!String.IsNullOrEmpty(item.GetMetadata("CandleOutput"))) { usePerSourceOutput = true; break; } } } if (usePerSourceOutput) { string[] newSourceNames = new string[this.SourceFiles.Length]; for (int iSource = 0; iSource < this.SourceFiles.Length; ++iSource) { ITaskItem item = this.SourceFiles[iSource]; if (null == item) { newSourceNames[iSource] = null; } else { string output = item.GetMetadata("CandleOutput"); if (!String.IsNullOrEmpty(output)) { newSourceNames[iSource] = String.Concat(item.ItemSpec, ";", output); } else { newSourceNames[iSource] = item.ItemSpec; } } } commandLineBuilder.AppendFileNamesIfNotNull(newSourceNames, " "); } else { commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " "); } }
/// <summary> /// Builds a command line from options in this task. /// </summary> /// <param name="commandLineBuilder">The command-line builder provided by the base class.</param> protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder) { base.BuildCommandLine(commandLineBuilder); commandLineBuilder.AppendFileNamesIfNotNull(this.TestPackages, " "); }
/// <summary> /// Builds a command line from options in this task. /// </summary> protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder) { base.BuildCommandLine(commandLineBuilder); commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendArrayIfNotNull("-b ", this.baseInputPaths); if (null != this.BindInputPaths) { Queue<String> formattedBindInputPaths = new Queue<String>(); foreach (ITaskItem item in this.BindInputPaths) { String formattedPath = string.Empty; String bindName = item.GetMetadata("BindName"); if (!String.IsNullOrEmpty(item.GetMetadata("BindName"))) { formattedPath = String.Concat(bindName, "=", item.GetMetadata("FullPath")); } else { formattedPath = item.GetMetadata("FullPath"); } formattedBindInputPaths.Enqueue(formattedPath); } commandLineBuilder.AppendArrayIfNotNull("-b ", formattedBindInputPaths.ToArray()); } commandLineBuilder.AppendIfTrue("-bf", this.BindFiles); commandLineBuilder.AppendExtensions(this.extensions, this.ExtensionDirectory, this.referencePaths); commandLineBuilder.AppendArrayIfNotNull("-loc ", this.LocalizationFiles); commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-sv", this.SuppressIntermediateFileVersionMatching); commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions); List<string> objectFilePaths = AdjustFilePaths(this.objectFiles, this.ReferencePaths); commandLineBuilder.AppendFileNamesIfNotNull(objectFilePaths.ToArray(), " "); }
/// <summary> /// Builds a command line from options in this task. /// </summary> protected override void BuildCommandLine(WixCommandLineBuilder commandLineBuilder) { base.BuildCommandLine(commandLineBuilder); commandLineBuilder.AppendArrayIfNotNull("-d", this.DefineConstants); commandLineBuilder.AppendIfTrue("-p", this.PreprocessToStdOut); commandLineBuilder.AppendSwitchIfNotNull("-p", this.PreprocessToFile); commandLineBuilder.AppendIfTrue("-sfdvital", this.suppressFilesVitalByDefault); commandLineBuilder.AppendArrayIfNotNull("-I", this.IncludeSearchPaths); commandLineBuilder.AppendSwitchIfNotNull("-out ", this.OutputFile); commandLineBuilder.AppendIfTrue("-pedantic", this.Pedantic); commandLineBuilder.AppendSwitchIfNotNull("-arch ", this.InstallerPlatform); commandLineBuilder.AppendIfTrue("-ss", this.SuppressSchemaValidation); commandLineBuilder.AppendIfTrue("-trace", this.ShowSourceTrace); commandLineBuilder.AppendExtensions(this.Extensions, this.ExtensionDirectory, this.referencePaths); commandLineBuilder.AppendIfTrue("-zs", this.OnlyValidateDocuments); commandLineBuilder.AppendTextIfNotNull(this.AdditionalOptions); commandLineBuilder.AppendIfTrue("-fips", this.fipsCompliant); // Support per-source-file output by looking at the SourceFiles items to // see if there is any "CandleOutput" metadata. If there is, we do our own // appending, otherwise we fall back to the built-in "append file names" code. // Note also that the wix.targets "Compile" target does *not* automagically // fix the "@(CompileObjOutput)" list to include these new output names. // If you really want to use this, you're going to have to clone the target // in your own .targets file and create the output list yourself. bool usePerSourceOutput = false; if (this.SourceFiles != null) { foreach (ITaskItem item in this.SourceFiles) { if (!String.IsNullOrEmpty(item.GetMetadata("CandleOutput"))) { usePerSourceOutput = true; break; } } } if (usePerSourceOutput) { string[] newSourceNames = new string[this.SourceFiles.Length]; for (int iSource = 0; iSource < this.SourceFiles.Length; ++iSource) { ITaskItem item = this.SourceFiles[iSource]; if (null == item) { newSourceNames[iSource] = null; } else { string output = item.GetMetadata("CandleOutput"); if (!String.IsNullOrEmpty(output)) { newSourceNames[iSource] = String.Concat(item.ItemSpec, ";", output); } else { newSourceNames[iSource] = item.ItemSpec; } } } commandLineBuilder.AppendFileNamesIfNotNull(newSourceNames, " "); } else { commandLineBuilder.AppendFileNamesIfNotNull(this.SourceFiles, " "); } }