Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加载外部dll';s AssemblyResolve事件中的字符串资源_C#_.net Assembly_Embedded Resource_Assembly Resolution - Fatal编程技术网

C# 加载外部dll';s AssemblyResolve事件中的字符串资源

C# 加载外部dll';s AssemblyResolve事件中的字符串资源,c#,.net-assembly,embedded-resource,assembly-resolution,C#,.net Assembly,Embedded Resource,Assembly Resolution,我被程序集钩住了。解析事件并在运行时从嵌入式资源加载程序集。多年来,这些代码一直在完美地工作,没有对代码进行任何更改 最近,我添加了一个对dll(external.dll)的新引用,该dll具有字符串资源,当该程序集解决问题时,它会尝试从自己的资源(external.Resources)加载字符串(如NameLang或PhoneLang),但无法找到资源。程序集解析程序接收到对外部.resources的请求,但未能找到它们 要明确的是,没有附属程序集,资源位于external.dll中,尽管我知

我被
程序集钩住了。解析
事件并在运行时从嵌入式资源加载程序集。多年来,这些代码一直在完美地工作,没有对代码进行任何更改

最近,我添加了一个对dll(
external.dll
)的新引用,该dll具有字符串资源,当该程序集解决问题时,它会尝试从自己的资源(
external.Resources
)加载字符串(如
NameLang
PhoneLang
),但无法找到资源。程序集解析程序接收到对
外部.resources
的请求,但未能找到它们

要明确的是,没有附属程序集,资源位于
external.dll
中,尽管我知道您可以重新编译dll,将资源作为附属程序集与dll一起,但这不是以这种方式编译的。此外,当我使用Telerik JustDecompile时,我可以看到资源字符串(
NameLang
PhoneLang
),因此我知道它们存在于程序集中

因此,我想也许我可以通过向我的程序集
ResolveEventHandler
添加一个条件叉来解决这个问题,从拥有的程序集提取资源的字节数组,并将其加载到域中,但我只得到一个
System.BadImageFormatException
,因为数据不是程序集,它是一个嵌入式资源文件,这很有意义

//^^^get assembly bytes from embedded resource, works
var asm = Assembly.Load(dllBytes);
if (!resourceToFind.Contains(".resources"))
    return asm;
else
    var resourceNames = asm.GetManifestResourceNames();
    var resourceName = resourceNames.FirstOrDefault();
    var assemblyData = LoadResourceBytes(asm, resourceName);
    return Assembly.Load assemblyData;
    //^^^System.BadImageFormatException: Bad IL format. Silly me thinking it would work
因此,我的主要问题是:当程序集解析事件查找
外部.Resources
时,如何从中加载嵌入的字符串资源

(第二:为什么在加载程序集后它不能找到它的资源?

这可能很有用: