protected void AddResponseFileCommandsImpl(CommandLineBuilderExtension commandLine) { if (OutputAssembly == null && Sources != null && Sources.Length > 0 && ResponseFiles == null) { try { OutputAssembly = new TaskItem(Path.GetFileNameWithoutExtension(Sources[0].ItemSpec)); } catch (ArgumentException exception) { throw new ArgumentException(exception.Message, "Sources", exception); } var outputAssembly = OutputAssembly; switch (TargetType.ToLowerInvariant()) { case "library": outputAssembly.ItemSpec = outputAssembly.ItemSpec + ".dll"; break; case "module": outputAssembly.ItemSpec = outputAssembly.ItemSpec + ".netmodule"; break; default: outputAssembly.ItemSpec = outputAssembly.ItemSpec + ".exe"; break; } } // Don't call base.AddResponseFileCommands()! //base.AddResponseFileCommands(commandLine); //System.Diagnostics.Debug.Assert(false); if (RunDebugger) commandLine.AppendSwitch("\n/debugger"); if (Optimize) commandLine.AppendSwitch("\n/optimize"); commandLine.AppendPlusOrMinusSwitch("\n/checked", base.Bag, "CheckIntegerOverflow"); commandLine.AppendSwitch("\n/no-color"); commandLine.AppendSwitchIfNotNull("\n/lib:", base.AdditionalLibPaths, ","); commandLine.AppendSwitchIfNotNull("\n/nowarn:", this.DisabledWarnings, ","); commandLine.AppendSwitchIfNotNull("\n/dowarn:", this.EnabledWarnings, ","); if (NoStdLib) commandLine.AppendSwitch("\n/no-stdlib"); if (NoStdMacros) commandLine.AppendSwitch("\n/no-stdmacros"); if (!GreedyReferences) commandLine.AppendSwitch("\n/greedy-references:-"); if (WarningLevel != 4) commandLine.AppendSwitchIfNotNull("\n/warn:", this.WarningLevel.ToString()); if (IndentationSyntax) commandLine.AppendSwitch("\n/indentation-syntax"); commandLine.AppendSwitchIfNotNull("\n/doc:", this.DocumentationFile); if (!string.IsNullOrEmpty(base.DefineConstants)) { var defines = base.DefineConstants .Split(new char[] { ';', ' ', '\r', '\n', '\t' }, StringSplitOptions.RemoveEmptyEntries); commandLine.AppendSwitchUnquotedIfNotNull("\n/define:", String.Join(";", defines)); } commandLine.AppendSwitchIfNotNull("\n/win32res:", base.Win32Resource); commandLine.AppendSwitchIfNotNull("\n/platform:", this.Platform); // Switchs from base.AddResponseFileCommands() commandLine.AppendSwitchIfNotNull("\n/addmodule:", this.AddModules, ","); commandLine.AppendPlusOrMinusSwitch("\n/delaysign", base.Bag, "DelaySign"); commandLine.AppendSwitchIfNotNull("\n/keycontainer:", this.KeyContainer); commandLine.AppendSwitchIfNotNull("\n/keyfile:", this.KeyFile); commandLine.AppendSwitchIfNotNull("\n/linkresource:", this.LinkResources, new[] { "LogicalName", "Access" }); if (NoLogo) commandLine.AppendSwitch("\n/nologo"); commandLine.AppendSwitchIfNotNull("\n/resource:", this.Resources, new[] { "LogicalName", "Access" }); commandLine.AppendSwitchIfNotNull("\n/target:", this.TargetType); commandLine.AppendPlusOrMinusSwitch("\n/warnaserror", base.Bag, "TreatWarningsAsErrors"); commandLine.AppendSwitchIfNotNull("\n/win32icon:", this.Win32Icon); commandLine.AppendPlusOrMinusSwitch("\n/debug", base.Bag, "EmitDebugInformation"); commandLine.AppendSwitchIfNotNull("\n/project-path:", this.ProjectPath); commandLine.AppendSwitchIfNotNull("\n/root-namespace:", this.RootNamespace); commandLine.AppendSwitchIfNotNull("\n/main:", this.MainEntryPoint); if (CompilerStackSize > 0) commandLine.AppendSwitchIfNotNull("\n/stack-size:", this.CompilerStackSize.ToString()); // Not supported options: //commandLine.AppendSwitchWithInteger("\n/codepage:", base.Bag, "CodePage"); //commandLine.AppendSwitchIfNotNull("/debug:", this.DebugType); //commandLine.AppendSwitchWithInteger("\n/filealign:", base.Bag, "FileAlignment"); //commandLine.AppendWhenTrue("\n/utf8output", base.Bag, "Utf8Output"); // Add sources if (this.Sources != null) { commandLine.Append("\n\n"); commandLine.AppendFileNamesIfNotNull(this.Sources, "\n"); commandLine.Append("\n"); } if (null != base.ResponseFiles) { foreach (var it in base.ResponseFiles) commandLine.AppendSwitchIfNotNull("\n/fromfile:", it.ItemSpec); } if (null != base.References) { foreach (var it in base.References) commandLine.AppendSwitchIfNotNull("\n/ref:", it.ItemSpec); } if (null != this.MacroReferences) { foreach (var it in this.MacroReferences) commandLine.AppendSwitchIfNotNull("\n/macros:", it.ItemSpec); } if (!string.IsNullOrEmpty(CustomArguments)) commandLine.AppendSwitch(CustomArguments); commandLine.AppendSwitchIfNotNull("\n\n/out:", OutputAssembly); }