我的资源文件在另一个项目中。在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));
到目前为止,它在设计时和运行时都运行良好。
答案 0 :(得分:0)
尝试将资源文件的“复制到输出目录”属性设置为“始终复制”。通过这样做,您的资源文件将被复制到正在执行的程序集的Bin目录中。即使这不起作用,也要将资源设置为嵌入式资源,并尝试从清单
中读取它答案 1 :(得分:0)
我不确定你是如何获取文件的,一旦你将资源文件的“复制到输出目录”属性设置为“始终复制”,然后只是加载文件,它应该可以工作