编写clr探查器时,您可能需要使用帮助程序类加载帮助程序dll。
由于这是一种有用的策略,因此有人问了这个问题,但是答案并未涉及这些解决方案中的很多问题,例如:
示例1- CLR profiler: issue in using DefineAssemblyRef
示例2-https://github.com/dotnet/coreclr/issues/3894(未提供实际解决方案)
总体而言,有一些选择可供考虑:
GAC-这是一个不错的解决方案,但是它需要安装步骤,并且某些环境可能没有GAC(azure,Linux [具有.net核心])。
另一种方法是注入代码,该代码执行AssemblyResolve + = 类似于示例1中的内容-但这会导致涉及透明代码的问题,这些问题调用的是securityCritical等+ =代码。 或例如在IIS中实现的有关“高/中/ ...”信任级别的其他问题,可能使加载此辅助dll变得困难(即使它具有强名称)。
另一个大问题是,助手dll将被加载到特定的AppDomain中,而不是“ EE共享程序集注册表”。如果将dll引用注入到GAC dll中并且包含帮助程序dll的appDomain已关闭,则这可能会导致MultiDomainHost LoaderOptimization策略出现问题。
那么从没有GAC的clr探查器中加载帮助程序dll并避免所有这些问题的推荐方法是什么?