перечисление блоков в GAC

Попробуйте это:

Integer startIn = null;

try {
  startIn = Integer.valueOf(startField.getText());
} catch (NumberFormatException e) {
  .
  .
  .
}

if (startIn == null) {
  // Prompt for value...
}
11
задан effkay 21 October 2009 в 09:02
поделиться

4 ответа

Если у вас ограниченный доступ к серверу, это может сработать:

// List of all the different types of GAC folders for both 32bit and 64bit
// environments.
List<string> gacFolders = new List<string>() { 
    "GAC", "GAC_32", "GAC_64", "GAC_MSIL", 
    "NativeImages_v2.0.50727_32", 
    "NativeImages_v2.0.50727_64",
    "NativeImages_v4.0.30319_32",
    "NativeImages_v4.0.30319_64"
};

foreach (string folder in gacFolders)
{
    string path = Path.Combine(
       Environment.ExpandEnvironmentVariables(@"%systemroot%\assembly"), 
       folder);

    if(Directory.Exists(path))
    {
        Response.Write("<hr/>" + folder + "<hr/>");

        string[] assemblyFolders = Directory.GetDirectories(path);
        foreach (string assemblyFolder in assemblyFolders)
        {
            Response.Write(assemblyFolder + "<br/>");
        }
    }
}

Он в основном перечисляет необработанные папки GAC. Он работает на виртуальном хостинге DiscountASP, поэтому может работать и в вашей среде хостинга.

Его можно было бы украсить, глубже пронумеровав папку каждой сборки, чтобы извлечь номер версии и токен открытого ключа.

10
ответ дан 3 December 2019 в 04:33
поделиться

Ознакомьтесь с этой статьей GAC API Interface кода проекта. Это использует недокументированный файл fusion.dll для перечисления GAC. Но автор утверждает, что

Этот код, как известно, работает с .NET. 1.1 и 2.0. Обратите внимание, что DLL fusion.dll отличается в версиях 1.1 и 2.0. Поэтому, если у вас установлены оба фреймворка, обязательно укажите код справа DLL. В противном случае большинство API-вызовы не будут выполнены. По умолчанию реализация использует тот, что найден в the WINDOWS directory.

4
ответ дан 3 December 2019 в 04:33
поделиться

На самом деле вам не нужно писать что-то на C #, чтобы узнать, есть ли эта конкретная dll находится в гас. Вы можете использовать gacutil.exe с параметром / l из командной строки, чтобы вывести список содержимого GAC.

4
ответ дан 3 December 2019 в 04:33
поделиться

Возможно, вам понадобится программа просмотра GAC примерно такого вида:

alt text

Видео: как использовать диалог добавления ссылок GAC

Надеюсь, это поможет

s

-3
ответ дан 3 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

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