.NET:加载资源时自定义程序集解析失败

时间:2017-07-24 10:10:53

标签: c# reflection resx

我有一个项目需要在运行时动态加载额外的程序集以进行反射。我需要自定义代码,因为框架不知道DLL的路径。此代码适用于普通的DLL,它们加载正常,我可以反映它们。但是,当我尝试加载静态使用嵌入资源(即resx)的类型时,此代码会失败。

没有我的自定义程序集解析代码,这可以正常工作。这是我的装配解析代码:

15:35:44.939 INFO - Selenium Grid node is up and ready to register to the hub
15:35:44.958 INFO - Starting auto registration thread. Will try to register every 5000 ms.
15:35:44.958 INFO - Registering the node to the hub: http://localhost:4444/grid/register
15:35:45.231 INFO - The node is registered to the hub and ready to use

以下是重新创建整个问题的项目链接:

https://drive.google.com/file/d/0B-mqMIMqm_XHcktyckVZbUNtZ28/view?usp=sharing

下载项目后,首先需要构建TestLibrary,然后运行ConsoleApp4。它应该工作正常并写入字符串"这是资源的价值"到控制台,它来自resx文件。但是,在Program.cs中取消注释第23行并再次运行它,它将失败并出现异常,这表示它无法加载嵌入的资源。

1 个答案:

答案 0 :(得分:0)

这个问题的解决方案解决了我的问题:

AppDomain.CurrentDomain.AssemblyResolve asking for a <AppName>.resources assembly?

基本上,将以下代码添加到正在加载的程序集中:

[assembly: NeutralResourcesLanguage("en-GB", UltimateResourceFallbackLocation.MainAssembly)]