首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不加载程序集的情况下将AssemblyName解析为程序集文件路径?

如何在不加载程序集的情况下将AssemblyName解析为程序集文件路径?
EN

Stack Overflow用户
提问于 2019-03-31 22:41:52
回答 1查看 642关注 0票数 1

在.NET框架、.NET核心或.NET标准中是否有任何公共API可以将System.Reflection.AssemblyName解析为将要加载的程序集文件的文件路径,而无需实际加载该程序集?

我目前得到的最好的结果是:

代码语言:javascript
复制
string ResolveToPath(AssemblyName name) => Assembly.ReflectionOnlyLoad(name).Location;

但这仍然会导致程序集被加载(尽管只是加载到仅反射的上下文中)。

(假设我不想更改运行库定位程序集的方式。我请求在一个库中使用它,在这个库中,我不能随意检查应用程序配置文件、定义AppDomain.AssemblyResolve处理程序等。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-01 07:38:05

框架中的候选API:

  • 有一个只在Core.
  • System.Reflection.MetadataLoadContext (source on GitHubpackage on nuget.org)上可用的方法string ResolveAssemblyToPath(AssemblyName assemblyName),它显然面临着完全相同的问题:能够从AssemblyName中检索Assembly,这显然需要从某个地方加载前者。

该库的创建者通过要求程序员提供一个具有MetadataAssemblyResolver依赖项的MetadataLoadContext来解决这个问题。

虽然此库附带了单个具体实现(PathAssemblyResolver),但它没有提供封装运行库的本机程序集探测/解析算法的实现。

框架外的其他库如何处理程序集解析?

(我通过the blog post "Referencing system assemblies in Roslyn compilations" by Luís Gonçalvesthis GitHub post by @tmat.)了解到了这一点

一些特定于平台的指针

中重现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55442043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档