【发布时间】:2019-02-20 03:28:53
【问题描述】:
我需要通过调用ReferencedAssemblies.Add 来引用CSharpCodeProvider 中的各种程序集。
对于某些程序集,只需传递程序集名称就足够了 - 例如ReferencedAssemblies.Add("System.dll")。
但是,PresentationCore.dll 是需要完整路径的程序集之一 - 我可能在目标计算机上不一定知道。
问题:
我如何找到(最新的?)相应程序集的最终路径 - 例如,在 GAC 中?
理想情况下,该解决方案不仅适用于
PresentationCore.dll,还适用于其他程序集,例如PresentationFramework.dll、System.Xaml.dll或System.Windows.Forms。
未产生预期结果的来源:
- This solution 将涉及对特定路径进行硬编码,但解决方案应该是动态的
- 实施this Windows API 可能有效;但我不知道如何 - 或者它是否有助于解决上述问题
- This C++ 问题是指 GAC 的位置,而不是如何获取实际文件路径
【问题讨论】:
-
是否可以在应该进行解析的程序中引用这些程序集?然后你可以
typeof([TypeKnownToBeInTheDesiredAssembly]).Assembly.CodeBase并使用:stackoverflow.com/a/283917/4035472 处理结果。 -
@thehennyy 这完美无瑕 - 非常感谢。如果你能把它变成一个答案,我就能把它标记为已接受。
标签: c# .net reflection gac csharpcodeprovider