【发布时间】:2013-08-08 18:16:05
【问题描述】:
我有一个程序集,我试图通过反射加载并从中读取资源字符串。
所以,我使用这样的东西:
config.Extras="C:\dev\foo.dll";
string dir = Directory.GetCurrentDirectory();
string tmp = Path.GetDirectoryName(config.Extras[0]);
Directory.SetCurrentDirectory(tmp);
var asm = Assembly.LoadFile(config.Extras[0]);
foreach (var item in asm.GetManifestResourceNames())
{
ResourceManager rm = new ResourceManager(item, asm);
string foo=rm.GetString("foo"); //error here
}
但是,这会引发 FileNotFoundException,因为它找不到 foo.dll 的引用程序集。 Foo.dll 依赖于Bar.dll。它抛出错误说它找不到bar.dll。 bar.dll 的实际位置与 foo.dll 在同一目录中。
那么,我该如何解决这个错误呢?
【问题讨论】:
-
永远不要使用 LoadFile(),加载的程序集没有加载上下文。使用 LoadFrom()。
-
@HansPassant 修复了它。如果你比一个答案,我会接受它。呵呵
标签: c# reflection filenotfoundexception resourcemanager