public static void MonoLink(BuildTarget buildTarget, string managedLibrariesDirectory, string[] input, string[] allAssemblies, RuntimeClassRegistry usedClasses)
{
Process process = MonoProcessUtility.PrepareMonoProcess(buildTarget, managedLibrariesDirectory);
string buildToolsDirectory = BuildPipeline.GetBuildToolsDirectory(buildTarget);
string str2 = null;
string path = Path.Combine(MonoInstallationFinder.GetFrameWorksFolder(), StripperExe());
string str5 = Path.Combine(Path.GetDirectoryName(path), "link.xml");
string str6 = Path.Combine(managedLibrariesDirectory, "output");
Directory.CreateDirectory(str6);
process.StartInfo.Arguments = "\"" + path + "\" -l none -c link";
foreach (string str7 in input)
{
ProcessStartInfo info1 = process.StartInfo;
info1.Arguments = info1.Arguments + " -a \"" + str7 + "\"";
}
ProcessStartInfo startInfo = process.StartInfo;
string arguments = startInfo.Arguments;
string[] textArray1 = new string[] { arguments, " -out output -x \"", str5, "\" -d \"", managedLibrariesDirectory, "\"" };
startInfo.Arguments = string.Concat(textArray1);
string str8 = Path.Combine(buildToolsDirectory, "link.xml");
if (File.Exists(str8))
{
ProcessStartInfo info3 = process.StartInfo;
info3.Arguments = info3.Arguments + " -x \"" + str8 + "\"";
}
string str9 = Path.Combine(Path.GetDirectoryName(path), "native_link.xml");
if (File.Exists(str9))
{
ProcessStartInfo info4 = process.StartInfo;
info4.Arguments = info4.Arguments + " -x \"" + str9 + "\"";
}
foreach (string str10 in Directory.GetFiles(Path.Combine(Directory.GetCurrentDirectory(), "Assets"), "link.xml", SearchOption.AllDirectories))
{
ProcessStartInfo info5 = process.StartInfo;
info5.Arguments = info5.Arguments + " -x \"" + str10 + "\"";
}
if (usedClasses != null)
{
str2 = GenerateBlackList(managedLibrariesDirectory, usedClasses, allAssemblies);
ProcessStartInfo info6 = process.StartInfo;
info6.Arguments = info6.Arguments + " -x \"" + str2 + "\"";
}
MonoProcessUtility.RunMonoProcess(process, "assemblies stripper", Path.Combine(str6, "mscorlib.dll"));
DeleteAllDllsFrom(managedLibrariesDirectory);
CopyAllDlls(managedLibrariesDirectory, str6);
foreach (string str11 in Directory.GetFiles(managedLibrariesDirectory))
{
if (str11.Contains(".mdb") && !File.Exists(str11.Replace(".mdb", string.Empty)))
{
FileUtil.DeleteFileOrDirectory(str11);
}
}
if (str2 != null)
{
FileUtil.DeleteFileOrDirectory(Path.Combine(managedLibrariesDirectory, str2));
}
FileUtil.DeleteFileOrDirectory(str6);
}