ngen по сети
От: binom82 Россия  
Дата: 17.07.09 09:06
Оценка:
Здравстуйте.
Есть приложение на 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);
        }
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.