【注意】这个问题在Visual Stuido2010(.Net Framework4.0)中已经修复,在VS2010中Source应该改为全路径,否则会导致运行时资源无法定位。
错误描述:
当我们向WPF项目中添加文件(Add items)时,我们可以选择”Add As Link”,这样做的目的是:我们可以在多个项目之间共享同一个文件(比如一个被多个项目引用的图标文件,或者项目间共享的资源等)。
但是,如果引用的对象位于项目的某个目录中,我们将无法用通常的URI语法来加载资源,比如下图中我们将以链接形式添加Info.xml文件到项目中(比如我们将它添加到目录Data下):
当我们希望在XAML文档中引用该资源时:
Source="pack://application:,,,/AssemblyName;component/Data/Info.xml"
以上代码在运行时会报错(cannot locate resource ‘Data/Info.xml’)
如果不是Add As Link方式而是直接添加以上资源的话,上面的代码是没有问题的,可是由于微软对Link文件的路径处理和普通项目文件有一定的区别,所以导致运行时无法正确加载资源文件。
解决方法:
Link的资源在VS2008下,默认编译完成后,是放在根目录下的,而不是我们设置的Data目录下:
修改为以下路径后可以解决问题:
Source="pack://application:,,,/AssemblyName;component/Info.xml"
引用资源:
关于该Bug的详细描述和微软官方回复:
其他参考的问题解决方法:
逃离北上广
NaRiver Blog
最近留言