本文整理汇总了C#中Microsoft.Build.Tasks.CommandLineBuilderExtension.AppendFileNamesIfNotNull方法的典型用法代码示例。如果您正苦于以下问题:C# CommandLineBuilderExtension.AppendFileNamesIfNotNull方法的具体用法?C# CommandLineBuilderExtension.AppendFileNamesIfNotNull怎么用?C# CommandLineBuilderExtension.AppendFileNamesIfNotNull使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Build.Tasks.CommandLineBuilderExtension
的用法示例。
在下文中一共展示了CommandLineBuilderExtension.AppendFileNamesIfNotNull方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddCommandLineCommands
void AddCommandLineCommands (CommandLineBuilderExtension commandLine)
{
if (Resources.Length == 0)
return;
commandLine.AppendFileNameIfNotNull (OutputFile);
commandLine.AppendFileNamesIfNotNull (Resources, " ");
}
示例2: AddResponseFileCommands
protected internal override void AddResponseFileCommands(CommandLineBuilderExtension commandLine)
{
if (((this.OutputAssembly == null) && (this.Sources != null)) && ((this.Sources.Length > 0) && (this.ResponseFiles == null)))
{
try
{
this.OutputAssembly = new TaskItem(Path.GetFileNameWithoutExtension(this.Sources[0].ItemSpec));
}
catch (ArgumentException exception)
{
throw new ArgumentException(exception.Message, "Sources");
}
if (string.Compare(this.TargetType, "library", StringComparison.OrdinalIgnoreCase) == 0)
{
ITaskItem outputAssembly = this.OutputAssembly;
outputAssembly.ItemSpec = outputAssembly.ItemSpec + ".dll";
}
else if (string.Compare(this.TargetType, "module", StringComparison.OrdinalIgnoreCase) == 0)
{
ITaskItem item2 = this.OutputAssembly;
item2.ItemSpec = item2.ItemSpec + ".netmodule";
}
else
{
ITaskItem item3 = this.OutputAssembly;
item3.ItemSpec = item3.ItemSpec + ".exe";
}
}
commandLine.AppendSwitchIfNotNull("/addmodule:", this.AddModules, ",");
commandLine.AppendSwitchWithInteger("/codepage:", base.Bag, "CodePage");
this.ConfigureDebugProperties();
commandLine.AppendPlusOrMinusSwitch("/debug", base.Bag, "EmitDebugInformation");
commandLine.AppendSwitchIfNotNull("/debug:", this.DebugType);
commandLine.AppendPlusOrMinusSwitch("/delaysign", base.Bag, "DelaySign");
commandLine.AppendSwitchWithInteger("/filealign:", base.Bag, "FileAlignment");
commandLine.AppendSwitchIfNotNull("/keycontainer:", this.KeyContainer);
commandLine.AppendSwitchIfNotNull("/keyfile:", this.KeyFile);
commandLine.AppendSwitchIfNotNull("/linkresource:", this.LinkResources, new string[] { "LogicalName", "Access" });
commandLine.AppendWhenTrue("/nologo", base.Bag, "NoLogo");
commandLine.AppendWhenTrue("/nowin32manifest", base.Bag, "NoWin32Manifest");
commandLine.AppendPlusOrMinusSwitch("/optimize", base.Bag, "Optimize");
commandLine.AppendSwitchIfNotNull("/out:", this.OutputAssembly);
commandLine.AppendSwitchIfNotNull("/resource:", this.Resources, new string[] { "LogicalName", "Access" });
commandLine.AppendSwitchIfNotNull("/target:", this.TargetType);
commandLine.AppendPlusOrMinusSwitch("/warnaserror", base.Bag, "TreatWarningsAsErrors");
commandLine.AppendWhenTrue("/utf8output", base.Bag, "Utf8Output");
commandLine.AppendSwitchIfNotNull("/win32icon:", this.Win32Icon);
commandLine.AppendSwitchIfNotNull("/win32manifest:", this.Win32Manifest);
commandLine.AppendFileNamesIfNotNull(this.Sources, " ");
}
示例3: AddResponseFileCommands
/// <summary>
/// Fills the provided CommandLineBuilderExtension with those switches and other information that can go into a response file.
/// </summary>
protected internal override void AddResponseFileCommands(CommandLineBuilderExtension commandLine)
{
// If outputAssembly is not specified, then an "/out: <name>" option won't be added to
// overwrite the one resulting from the OutputAssembly member of the CompilerParameters class.
// In that case, we should set the outputAssembly member based on the first source file.
if (
(OutputAssembly == null) &&
(Sources != null) &&
(Sources.Length > 0) &&
(this.ResponseFiles == null) // The response file may already have a /out: switch in it, so don't try to be smart here.
)
{
try
{
OutputAssembly = new TaskItem(Path.GetFileNameWithoutExtension(Sources[0].ItemSpec));
}
catch (ArgumentException e)
{
throw new ArgumentException(e.Message, "Sources");
}
if (String.Compare(TargetType, "library", StringComparison.OrdinalIgnoreCase) == 0)
{
OutputAssembly.ItemSpec += ".dll";
}
else if (String.Compare(TargetType, "module", StringComparison.OrdinalIgnoreCase) == 0)
{
OutputAssembly.ItemSpec += ".netmodule";
}
else
{
OutputAssembly.ItemSpec += ".exe";
}
}
commandLine.AppendSwitchIfNotNull("/addmodule:", this.AddModules, ",");
commandLine.AppendSwitchWithInteger("/codepage:", this.Bag, "CodePage");
ConfigureDebugProperties();
// The "DebugType" parameter should be processed after the "EmitDebugInformation" parameter
// because it's more specific. Order matters on the command-line, and the last one wins.
// /debug+ is just a shorthand for /debug:full. And /debug- is just a shorthand for /debug:none.
commandLine.AppendPlusOrMinusSwitch("/debug", this.Bag, "EmitDebugInformation");
commandLine.AppendSwitchIfNotNull("/debug:", this.DebugType);
commandLine.AppendPlusOrMinusSwitch("/delaysign", this.Bag, "DelaySign");
commandLine.AppendSwitchWithInteger("/filealign:", this.Bag, "FileAlignment");
commandLine.AppendSwitchIfNotNull("/keycontainer:", this.KeyContainer);
commandLine.AppendSwitchIfNotNull("/keyfile:", this.KeyFile);
// If the strings "LogicalName" or "Access" ever change, make sure to search/replace everywhere in vsproject.
commandLine.AppendSwitchIfNotNull("/linkresource:", this.LinkResources, new string[] { "LogicalName", "Access" });
commandLine.AppendWhenTrue("/nologo", this.Bag, "NoLogo");
commandLine.AppendWhenTrue("/nowin32manifest", this.Bag, "NoWin32Manifest");
commandLine.AppendPlusOrMinusSwitch("/optimize", this.Bag, "Optimize");
commandLine.AppendSwitchIfNotNull("/out:", this.OutputAssembly);
commandLine.AppendSwitchIfNotNull("/ruleset:", this.CodeAnalysisRuleSet);
commandLine.AppendSwitchIfNotNull("/subsystemversion:", this.SubsystemVersion);
// If the strings "LogicalName" or "Access" ever change, make sure to search/replace everywhere in vsproject.
commandLine.AppendSwitchIfNotNull("/resource:", this.Resources, new string[] { "LogicalName", "Access" });
commandLine.AppendSwitchIfNotNull("/target:", this.TargetType);
commandLine.AppendPlusOrMinusSwitch("/warnaserror", this.Bag, "TreatWarningsAsErrors");
commandLine.AppendWhenTrue("/utf8output", this.Bag, "Utf8Output");
commandLine.AppendSwitchIfNotNull("/win32icon:", this.Win32Icon);
commandLine.AppendSwitchIfNotNull("/win32manifest:", this.Win32Manifest);
// Append the analyzers.
this.AddAnalyzersToCommandLine(commandLine);
// Append additional files.
this.AddAdditionalFilesToCommandLine(commandLine);
// Append the sources.
commandLine.AppendFileNamesIfNotNull(Sources, " ");
}
示例4: LogResgenCommandLine
/// <summary>
/// Logs a Resgen.exe command line that indicates what parameters were
/// passed to this task. Since this task is replacing Resgen, and we used
/// to log the Resgen.exe command line, we need to continue logging an
/// equivalent command line.
/// </summary>
/// <param name="inputFiles"></param>
/// <param name="outputFiles"></param>
private void LogResgenCommandLine(List<ITaskItem> inputFiles, List<ITaskItem> outputFiles)
{
CommandLineBuilderExtension commandLineBuilder = new CommandLineBuilderExtension();
// start the command line with the path to Resgen.exe
commandLineBuilder.AppendFileNameIfNotNull(Path.Combine(_resgenPath, "resgen.exe"));
GenerateResGenCommandLineWithoutResources(commandLineBuilder);
if (StronglyTypedLanguage == null)
{
// append the resources to compile
for (int i = 0; i < inputFiles.Count; ++i)
{
if (!ExtractResWFiles)
{
commandLineBuilder.AppendFileNamesIfNotNull
(
new string[] { inputFiles[i].ItemSpec, outputFiles[i].ItemSpec },
","
);
}
else
{
commandLineBuilder.AppendFileNameIfNotNull(inputFiles[i].ItemSpec);
}
}
}
else
{
// append the resource to compile
commandLineBuilder.AppendFileNamesIfNotNull(inputFiles.ToArray(), " ");
commandLineBuilder.AppendFileNamesIfNotNull(outputFiles.ToArray(), " ");
// append the strongly-typed resource details
commandLineBuilder.AppendSwitchIfNotNull
(
"/str:",
new string[] { StronglyTypedLanguage, StronglyTypedNamespace, StronglyTypedClassName, StronglyTypedFileName },
","
);
}
Log.LogCommandLine(MessageImportance.Low, commandLineBuilder.ToString());
}
示例5: CalculateResourceBatchSize
/// <summary>
/// Given the list of inputs and outputs, returns the number of resources (starting at the provided initial index)
/// that can fit onto the commandline without exceeding MaximumCommandLength.
/// </summary>
private int CalculateResourceBatchSize(List<ITaskItem> inputsToProcess, List<ITaskItem> outputsToProcess, string resourcelessCommand, int initialResourceIndex)
{
CommandLineBuilderExtension currentCommand = new CommandLineBuilderExtension();
if (!String.IsNullOrEmpty(resourcelessCommand))
{
currentCommand.AppendTextUnquoted(resourcelessCommand);
}
int i = initialResourceIndex;
while (currentCommand.Length < s_maximumCommandLength && i < inputsToProcess.Count)
{
currentCommand.AppendFileNamesIfNotNull
(
new ITaskItem[] { inputsToProcess[i], outputsToProcess[i] },
","
);
i++;
}
int numberOfResourcesToAdd = 0;
if (currentCommand.Length <= s_maximumCommandLength)
{
// We've successfully added all the rest.
numberOfResourcesToAdd = i - initialResourceIndex;
}
else
{
// The last one added tossed us over the edge.
numberOfResourcesToAdd = i - initialResourceIndex - 1;
}
return numberOfResourcesToAdd;
}
示例6: AddResponseFileCommandsImpl
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)
//.........这里部分代码省略.........
示例7: GenerateResGenCommands
/// <summary>
/// Generate the command line to be passed to resgen.exe, sans the path to the tool.
/// </summary>
private void GenerateResGenCommands(CommandLineBuilderExtension resGenArguments, bool useForResponseFile)
{
resGenArguments = resGenArguments ?? new CommandLineBuilderExtension();
if (ResGen.IsNullOrEmpty(OutputFiles))
{
GenerateOutputFileNames();
}
// Append boolean flags if requested
string useSourcePathSwitch = "/useSourcePath" + (useForResponseFile ? "\n" : String.Empty);
string publicClassSwitch = "/publicClass" + (useForResponseFile ? "\n" : String.Empty);
resGenArguments.AppendWhenTrue(useSourcePathSwitch, Bag, "UseSourcePath");
resGenArguments.AppendWhenTrue(publicClassSwitch, Bag, "PublicClass");
// append the references, if any
if (References != null)
{
foreach (ITaskItem reference in References)
{
// ResGen.exe response files frown on quotes in filenames, even if there are
// spaces in the names of the files.
if (useForResponseFile && reference != null)
{
resGenArguments.AppendTextUnquoted("/r:");
resGenArguments.AppendTextUnquoted(reference.ItemSpec);
resGenArguments.AppendTextUnquoted("\n");
}
else
{
resGenArguments.AppendSwitchIfNotNull("/r:", reference);
}
}
}
if (String.IsNullOrEmpty(StronglyTypedLanguage))
{
// append the compile switch
resGenArguments.AppendSwitch("/compile" + (useForResponseFile ? "\n" : String.Empty));
// append the resources to compile
if (InputFiles != null && InputFiles.Length > 0)
{
ITaskItem[] inputFiles = InputFiles;
ITaskItem[] outputFiles = OutputFiles;
for (int i = 0; i < inputFiles.Length; ++i)
{
if (useForResponseFile)
{
// ResGen.exe response files frown on quotes in filenames, even if there are
// spaces in the names of the files.
if (inputFiles[i] != null && outputFiles[i] != null)
{
resGenArguments.AppendTextUnquoted(inputFiles[i].ItemSpec);
resGenArguments.AppendTextUnquoted(",");
resGenArguments.AppendTextUnquoted(outputFiles[i].ItemSpec);
resGenArguments.AppendTextUnquoted("\n");
}
}
else
{
resGenArguments.AppendFileNamesIfNotNull
(
new ITaskItem[] { inputFiles[i], outputFiles[i] },
","
);
}
}
}
}
else
{
// append the resource to compile
resGenArguments.AppendFileNamesIfNotNull(InputFiles, " ");
resGenArguments.AppendFileNamesIfNotNull(OutputFiles, " ");
// append the strongly-typed resource details
resGenArguments.AppendSwitchIfNotNull
(
"/str:",
new string[] { StronglyTypedLanguage, StronglyTypedNamespace, StronglyTypedClassName, StronglyTypedFileName },
","
);
}
}
示例8: AddResponseFileCommands
protected override void AddResponseFileCommands(CommandLineBuilderExtension commandLine)
{
JarCommand command;
string flags = "";
switch (Command.ToLowerInvariant())
{
case "create":
command = JarCommand.Create;
flags += "c";
break;
case "update":
command = JarCommand.Update;
flags += "u";
break;
case "extract":
command = JarCommand.Extract;
flags += "x";
break;
case "index":
command = JarCommand.Index;
flags += "i";
break;
case "list":
command = JarCommand.List;
flags += "t";
break;
default:
throw new InvalidOperationException();
}
if (command != JarCommand.Index && JarFile != null && JarFile.ItemSpec != null)
flags += 'f';
if (Verbose && command != JarCommand.Index)
flags += 'v';
if (command == JarCommand.Create || command == JarCommand.Update)
{
if (!Compress)
flags += '0';
if (!CreateManifest)
flags += 'M';
if (Manifest != null && Manifest.Length == 0 && Manifest[0].ItemSpec != null)
flags += 'm';
}
commandLine.AppendSwitch(flags);
if (JarFile != null && JarFile.ItemSpec != null)
commandLine.AppendFileNameIfNotNull(JarFile);
if (command == JarCommand.Create || command == JarCommand.Update)
{
if (Manifest != null && Manifest.Length == 0 && Manifest[0].ItemSpec != null)
commandLine.AppendFileNameIfNotNull(Manifest[0]);
}
ILookup<string, ITaskItem> inputs = Inputs.ToLookup(i => i.GetMetadata("BaseOutputDirectory") ?? string.Empty);
commandLine.AppendFileNamesIfNotNull(inputs[string.Empty].ToArray(), " ");
foreach (var pair in inputs)
{
if (pair.Key == string.Empty)
continue;
foreach (var file in pair)
{
commandLine.AppendSwitchIfNotNull("-C ", pair.Key);
commandLine.AppendFileNameIfNotNull(file.ItemSpec.StartsWith(pair.Key) ? file.ItemSpec.Substring(pair.Key.Length) : file.ItemSpec);
}
//commandLine.AppendSwitchIfNotNull("-C ", pair.Key);
//commandLine.AppendFileNamesIfNotNull(pair.Select(i => i.ItemSpec.StartsWith(pair.Key) ? i.ItemSpec.Substring(pair.Key.Length) : i.ItemSpec).ToArray(), " ");
}
if (!string.IsNullOrEmpty(EntryPoint))
commandLine.AppendSwitchIfNotNull("-e ", EntryPoint);
}
示例9: AddResponseFileCommands
protected override void AddResponseFileCommands(CommandLineBuilderExtension commandLine)
{
// the -verbose flag must be included or there's no way to figure out what the output files are
commandLine.AppendSwitch("-verbose");
if (!string.IsNullOrEmpty(Encoding))
commandLine.AppendSwitchIfNotNull("-encoding ", Encoding);
switch (DebugSymbols)
{
case "All":
commandLine.AppendSwitch("-g");break;
case "None":
commandLine.AppendSwitch("-g:none");break;
case "Specific":
if (!string.IsNullOrEmpty(SpecificDebugSymbols))
commandLine.AppendSwitchIfNotNull("-g:", SpecificDebugSymbols);
else
commandLine.AppendSwitch("-g:none");
break;
case "Default":
default:
break;
}
if (!string.IsNullOrEmpty(SourceRelease) && !string.Equals(SourceRelease, "Default", StringComparison.OrdinalIgnoreCase))
commandLine.AppendSwitchIfNotNull("-source ", SourceRelease);
if (!string.IsNullOrEmpty(TargetRelease) && !string.Equals(TargetRelease, "Default", StringComparison.OrdinalIgnoreCase))
commandLine.AppendSwitchIfNotNull("-target ", TargetRelease);
if (!string.IsNullOrEmpty(OutputPath))
commandLine.AppendSwitchIfNotNull("-d ", OutputPath);
if (!ShowWarnings)
{
commandLine.AppendSwitch("-nowarn");
}
else if (ShowAllWarnings)
{
commandLine.AppendSwitch("-Xlint");
commandLine.AppendSwitch("-deprecation");
}
if (!string.IsNullOrEmpty(BuildArgs))
commandLine.AppendTextUnquoted(" " + BuildArgs);
// reference paths
List<string> referencePaths = new List<string>();
foreach (var reference in (References ?? Enumerable.Empty<ITaskItem>()))
{
string path = GetReferencePath(reference);
if (!string.IsNullOrEmpty(path))
referencePaths.Add(path);
}
if (referencePaths.Count > 0)
{
commandLine.AppendSwitchIfNotNull("-cp ", referencePaths.ToArray(), ";");
}
commandLine.AppendSwitchIfNotNull("-classpath ", ClassPath, ";");
commandLine.AppendFileNamesIfNotNull(Sources, " ");
}
示例10: LogResgenCommandLine
private void LogResgenCommandLine(List<ITaskItem> inputFiles, List<ITaskItem> outputFiles)
{
CommandLineBuilderExtension resGenCommand = new CommandLineBuilderExtension();
resGenCommand.AppendFileNameIfNotNull(Path.Combine(this.resgenPath, "resgen.exe"));
this.GenerateResGenCommandLineWithoutResources(resGenCommand);
if (this.StronglyTypedLanguage == null)
{
resGenCommand.AppendSwitch("/compile");
for (int i = 0; i < inputFiles.Count; i++)
{
resGenCommand.AppendFileNamesIfNotNull(new string[] { inputFiles[i].ItemSpec, outputFiles[i].ItemSpec }, ",");
}
}
else
{
resGenCommand.AppendFileNamesIfNotNull(inputFiles.ToArray(), " ");
resGenCommand.AppendFileNamesIfNotNull(outputFiles.ToArray(), " ");
resGenCommand.AppendSwitchIfNotNull("/str:", new string[] { this.StronglyTypedLanguage, this.StronglyTypedNamespace, this.StronglyTypedClassName, this.StronglyTypedFileName }, ",");
}
base.Log.LogCommandLine(MessageImportance.Low, resGenCommand.ToString());
}
示例11: GenerateResGenCommands
private void GenerateResGenCommands(CommandLineBuilderExtension resGenArguments, bool useForResponseFile)
{
resGenArguments = resGenArguments ?? new CommandLineBuilderExtension();
if (IsNullOrEmpty(this.OutputFiles))
{
this.GenerateOutputFileNames();
}
string switchName = "/useSourcePath" + (useForResponseFile ? "\n" : string.Empty);
string str2 = "/publicClass" + (useForResponseFile ? "\n" : string.Empty);
resGenArguments.AppendWhenTrue(switchName, base.Bag, "UseSourcePath");
resGenArguments.AppendWhenTrue(str2, base.Bag, "PublicClass");
if (this.References != null)
{
foreach (ITaskItem item in this.References)
{
if (useForResponseFile && (item != null))
{
resGenArguments.AppendTextUnquoted("/r:");
resGenArguments.AppendTextUnquoted(item.ItemSpec);
resGenArguments.AppendTextUnquoted("\n");
}
else
{
resGenArguments.AppendSwitchIfNotNull("/r:", item);
}
}
}
if (string.IsNullOrEmpty(this.StronglyTypedLanguage))
{
resGenArguments.AppendSwitch("/compile" + (useForResponseFile ? "\n" : string.Empty));
if ((this.InputFiles != null) && (this.InputFiles.Length > 0))
{
ITaskItem[] inputFiles = this.InputFiles;
ITaskItem[] outputFiles = this.OutputFiles;
for (int i = 0; i < inputFiles.Length; i++)
{
if (useForResponseFile)
{
if ((inputFiles[i] != null) && (outputFiles[i] != null))
{
resGenArguments.AppendTextUnquoted(inputFiles[i].ItemSpec);
resGenArguments.AppendTextUnquoted(",");
resGenArguments.AppendTextUnquoted(outputFiles[i].ItemSpec);
resGenArguments.AppendTextUnquoted("\n");
}
}
else
{
resGenArguments.AppendFileNamesIfNotNull(new ITaskItem[] { inputFiles[i], outputFiles[i] }, ",");
}
}
}
}
else
{
resGenArguments.AppendFileNamesIfNotNull(this.InputFiles, " ");
resGenArguments.AppendFileNamesIfNotNull(this.OutputFiles, " ");
resGenArguments.AppendSwitchIfNotNull("/str:", new string[] { this.StronglyTypedLanguage, this.StronglyTypedNamespace, this.StronglyTypedClassName, this.StronglyTypedFileName }, ",");
}
}
示例12: CalculateResourceBatchSize
private int CalculateResourceBatchSize(List<ITaskItem> inputsToProcess, List<ITaskItem> outputsToProcess, string resourcelessCommand, int initialResourceIndex)
{
CommandLineBuilderExtension extension = new CommandLineBuilderExtension();
if (!string.IsNullOrEmpty(resourcelessCommand))
{
extension.AppendTextUnquoted(resourcelessCommand);
}
int num = initialResourceIndex;
while ((extension.Length < MaximumCommandLength) && (num < inputsToProcess.Count))
{
extension.AppendFileNamesIfNotNull(new ITaskItem[] { inputsToProcess[num], outputsToProcess[num] }, ",");
num++;
}
if (num == inputsToProcess.Count)
{
return (num - initialResourceIndex);
}
return ((num - initialResourceIndex) - 1);
}