Здравстуйте.
Есть приложение на NET, которое находится в сетевой папке (экзешик приложения постоянно обновляется).
Хотелость бы усорить его запуск с помошью ngen
У меня есть прога которая энгенет это приложени(код ниже). Она находится в папке с приложением
Подскажите пожалуйста как бы автоматизировать этот процесс, при учете того,что приложение постоянно модифицируетя, и как
проэнгенить зависящие сборки (получить их список).
using System;
using System.Diagnostics;
using System.IO;
namespace ConsoleApplication2
{
class Program
{
static string ourPath = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
public static string GetNgenPath(bool forceX86)
{
string frameworkDir;
if ((UIntPtr.Size == 8) && !forceX86)
{
frameworkDir = "Framework64";
}
else
{
frameworkDir = "Framework";
}
return Path.Combine(Environment.ExpandEnvironmentVariables((@"%WINDIR%\Microsoft.NET\" + frameworkDir + @"\v") + Environment.Version.ToString(3) + @"\"), "ngen.exe");
}
public static void InstallAssembly(string name, bool delete, bool queue, bool forceX86)
{
if (delete)
{
name = Path.GetFileName(name);
name = Path.ChangeExtension(name, null);
}
else
{
name = Path.Combine(ourPath, name);
}
string arguments = string.Concat(new string[] { delete ? "uninstall" : "install", " ", "\"" + name + "\"", " ", ((queue && !delete) ? "/queue" : "") + (" /AppBase:\"" + ourPath + "\"") });
string fileName = GetNgenPath(forceX86);
ProcessStartInfo startInfo = new ProcessStartInfo(fileName, arguments);
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
Console.WriteLine("run:" + fileName + " " + arguments);
Process.Start(startInfo).WaitForExit();
}
static void Main(string[] args)
{
InstallAssembly("ConsoleApplication2.exe", false, true, false);
}
}
}