Assembly.LoadFile在设计时无法找到该文件

时间:2011-07-13 03:10:48

标签: c# wpf binding

我的资源文件在另一个项目中。在MainwindowProject的App.xaml.cs中,我编写如下代码来加载资源文件。

static ResourceBundle CreateResourceBundle()
        {

             string dllPath = System.IO.Directory.GetCurrentDirectory() + "\\Trade.Resources.dll";
               ResourceBundle resBundle = new ResourceBundle(Assembly.LoadFile(dllPath));
                resBundle.LocaleRoot = "Trade.Resources.locale"; //where my locale files are
                resBundle.AddResourceFile("Resources");

                string culture = "en-US";
                resBundle.Locale = culture;
                System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
               return resBundle;
}

某些用户控件正在使用此resBundle。它在运行时工作正常。但是,如果我在设计时打开父xaml窗口,我得到了这个异常,并且无法加载usercontrol。

The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
   at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
   at System.Reflection.Assembly.LoadFile(String path)

我怎么能解决这个问题?谢谢。

编辑:临时解决方法

我刚刚在Trade.Resources项目中添加了界面。在App.xaml.cs中,它如下所示。

Type iResType = Type.GetType("Trade.Resources.IRes,Trade.Resources", true);
            ResourceBundle resBundle = new ResourceBundle(Assembly.GetAssembly(iResType));

到目前为止,它在设计时和运行时都运行良好。

2 个答案:

答案 0 :(得分:0)

尝试将资源文件的“复制到输出目录”属性设置为“始终复制”。通过这样做,您的资源文件将被复制到正在执行的程序集的Bin目录中。即使这不起作用,也要将资源设置为嵌入式资源,并尝试从清单

中读取它

答案 1 :(得分:0)

我不确定你是如何获取文件的,一旦你将资源文件的“复制到输出目录”属性设置为“始终复制”,然后只是加载文件,它应该可以工作