C#:在GAC中查找PresentationCore.dll(和其他程序集)的路径

问题描述 投票:0回答:1

我需要通过调用CSharpCodeProvider来引用ReferencedAssemblies.Add中的各种程序集。

对于某些程序集,只需传递程序集名称就足够了 - 例如ReferencedAssemblies.Add("System.dll")

然而,PresentationCore.dll是需要组装完整路径的那个 - 我可能不一定知道目标机器。

题:

如何找到(最新?)相应组件的最终路径 - 例如,在GAC中?

理想情况下,该解决方案不仅适用于PresentationCore.dll,还适用于其他组件,如PresentationFramework.dllSystem.Xaml.dllSystem.Windows.Forms

Sources that didn't yield the intended results:

  • This solution将涉及对特定路径进行硬编码,但解决方案应该是动态的
  • 实施this Windows API可能有效;但我不知道 - 或者它是否有助于解决上述问题
  • This C ++问题指的是找到GAC的位置,而不是指如何获取实际的文件路径
c# .net reflection gac csharpcodeprovider
1个回答
0
投票

您可以在代码中引用应该进行解析的程序集。然后运行时将告诉您程序集位置:

typeof([TypeKnownToBeInTheDesiredAssembly]).Assembly.CodeBase

例如,要查找System.Xml.dll:

string codeBase = typeof(System.Xml.XmlDocument).Assembly.CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
Console.WriteLine(path);

[ref]

在我的系统上:

C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

© www.soinside.com 2019 - 2024. All rights reserved.