Методы, чтобы программно установить блок.NET в GAC

static Random random = new Random();

public static IEnumerable<T> RandomPermutation<T>(IEnumerable<T> sequence)
{
    T[] retArray = sequence.ToArray();


    for (int i = 0; i < retArray.Length - 1; i += 1)
    {
        int swapIndex = random.Next(i, retArray.Length);
        if (swapIndex != i) {
            T temp = retArray[i];
            retArray[i] = retArray[swapIndex];
            retArray[swapIndex] = temp;
        }
    }

    return retArray;
}

измененный для обработки списков или других объектов, реализовывая IEnumerable

10
задан Alfred Myers 14 June 2011 в 20:18
поделиться

2 ответа

Я настоятельно рекомендую использовать существующие методы (например, те, которые вы упомянули), потому что они поддерживаются и поддерживаются Microsoft и будут продолжать работать с будущими выпусками.

Быстрый просмотр gacutil.exe с Process Monitor показывает, что это немного больше, чем просто копирование файлов:

  • проблемы параллелизма (например, временные файлы, блокировка ] WINDOWS \ assembly \ GACLock.dat и т. Д.)
  • уведомления (например, HKLM \ SOFTWARE \ Microsoft \ Fusion \ GACChangeNotification \ ... )
  • индексирование (например, HKLM \ SOFTWARE \ Microsoft \ Fusion \ NativeImagesIndex ... )
  • проверка (например, строгое имя, ...)

Оболочка в System.EnterpriseServices очень похож на этот старый пост в блоге и должен работать нормально.

11
ответ дан 3 December 2019 в 22:01
поделиться

Недавно нам пришлось сделать это для десятков серверов в корпоративной среде. Мы использовали Wix для создания очень простого MSI (серьезно - 5 минут работы) и опубликовали его для всех серверов (и разработчиков) через групповую политику.

5
ответ дан 3 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: