[阅读更多]

Silverlight程序中,App.xaml中片段如下(使用了资源文件):

<Application.Resources>
    <ResourceDictionary>
...
        <res:StringLib x:Key="StringRes" />
    </ResourceDictionary>
</Application.Resources>

在VS2008 SP1下编译通过,但是执行时报错:Invalid or malformed application: Check manifest

检查了manifest,并没有错误

仔细检查之后发现,VS生成的StringLib.Designer.cs中,StringLib类的构造函数是internal的,而App.xaml.cs中的App类并不和StringLib在同一命名空间中,所以调用构造函数的时候会出错。但是很诡异的是报了个Check manifest的错误,不知道是不是VS的bug。

[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal StringLib() {
}

解决方法就是手动把该构造函数改成public的,如下:

[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public StringLib() {
}

这样再编译运行就不会有上面的错误了。

标签, | 日志分类:C#, Silverlight