Assembly.GlobalAssemblyCache возвращает FALSE, хотя сборка загружается из GAC - PullRequest
0 голосов
/ 03 декабря 2010

Я создал тестовый проект, чтобы понять отражение.Я загружаю сборку из .NET 4.0 GAC.(Как я понимаю, .NET 4.0 поддерживает GAC в C: \ WINDOWS \ Microsoft.NET \ assembly)

Я написал такой код:

Assembly testAssembly = Assembly.ReflectionOnlyLoadFrom(@"C:\WINDOWS\Microsoft.NET\assembly\GAC_32\TestReflection\v4.0_1.0.0.0__7ff2353191526e8c\TestReflection.dll");

        if(testAssembly.GlobalAssemblyCache)
            Console.WriteLine(testAssembly.FullName);

Когда я запускаю этот код, GlobalAssemblyCache свойство всегда возвращает FALSE, хотя я загружаю сборку из GAC.

Может кто-нибудь сказать мне причину?Или я что-то упустил?

1 Ответ

1 голос
/ 03 декабря 2010

Сначала вы можете убедиться, что ваша сборка действительно загружена в GAC. Для этого вы можете попробовать следующее:

gacutil /l System.Data

Что бы предоставить детали сборки в GAC как:

Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

The Global Assembly Cache contains the following assemblies:
  System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86
  System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86

Number of items = 3

Затем для загрузки сборки из GAC для использования в ReflectionOnly вы можете попробовать ReflectionOnlyLoad вместо ReflectionOnlyLoadFrom

пример:

Assembly testAssembly = Assembly.ReflectionOnlyLoad(@"System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86");

if (testAssembly.GlobalAssemblyCache) {
    Console.WriteLine(testAssembly.FullName);
    Console.WriteLine(testAssembly.Location);
} else {
    Console.WriteLine("Not found in GAC");
}

Вышеприведенное дает следующий вывод:

System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...