private static string BuildArgs(CompilerParameters options,string[] fileNames)
#endif
{
StringBuilder args=new StringBuilder();
if (options.GenerateExecutable)
args.Append("/target:exe ");
else
args.Append("/target:library ");
string privateBinPath = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath;
if (privateBinPath != null && privateBinPath.Length > 0)
args.AppendFormat ("/lib:\"{0}\" ", privateBinPath);
if (options.Win32Resource != null)
args.AppendFormat("/win32res:\"{0}\" ",
options.Win32Resource);
if (options.IncludeDebugInformation)
args.Append("/debug+ /optimize- ");
else
args.Append("/debug- /optimize+ ");
if (options.TreatWarningsAsErrors)
args.Append("/warnaserror ");
if (options.WarningLevel >= 0)
args.AppendFormat ("/warn:{0} ", options.WarningLevel);
if (options.OutputAssembly == null || options.OutputAssembly.Length == 0) {
string extension = (options.GenerateExecutable ? "exe" : "dll");
options.OutputAssembly = GetTempFileNameWithExtension (options.TempFiles, extension,
!options.GenerateInMemory);
}
args.AppendFormat("/out:\"{0}\" ",options.OutputAssembly);
foreach (string import in options.ReferencedAssemblies) {
if (import == null || import.Length == 0)
continue;
args.AppendFormat("/r:\"{0}\" ",import);
}
if (options.CompilerOptions != null) {
args.Append (options.CompilerOptions);
args.Append (" ");
}
#if NET_2_0
foreach (string embeddedResource in options.EmbeddedResources) {
args.AppendFormat("/resource:\"{0}\" ", embeddedResource);
}
foreach (string linkedResource in options.LinkedResources) {
args.AppendFormat("/linkresource:\"{0}\" ", linkedResource);
}
if (providerOptions != null && providerOptions.Count > 0) {
string langver;
if (!providerOptions.TryGetValue ("CompilerVersion", out langver))
langver = "2.0";
if (langver.Length >= 1 && langver [0] == 'v')
langver = langver.Substring (1);
switch (langver) {
case "2.0":
args.Append ("/langversion:ISO-2");
break;
case "3.5":
// current default, omit the switch
break;
}
}
#endif
args.Append (" -- ");
foreach (string source in fileNames)
args.AppendFormat("\"{0}\" ",source);
return args.ToString();
}
private static CompilerError CreateErrorFromString(string error_string)