您可能首先需要確保您的程序集實際上已加載到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
希望有所幫助!
這真的很有幫助。但是當我運行gacutil/l TestReflection.dll時,它說找到0個程序集。但是當我真正轉到.NET 4.0的GAC文件夾時,我可以在那裏看到程序集。任何想法可能是什麼問題? – Learner 2010-12-03 08:43:23