WinRT类库(DLL)中的资源字典

时间:2012-08-22 22:28:14

标签: xaml windows-runtime resourcedictionary

有没有人知道WinRT是否真的支持使用带有嵌入式XAML资源字典的C#(或VB我想)创建类库(DLL),然后在另一个项目中添加对这些DLL的引用并合并到该字典中甚至加载字典从“资源”到内存中的字符串?

这似乎应该从根本上得到支持,但我似乎无法让它工作,因为当我添加对该DLL的引用时,我总是得到一个错误,即缺少有效负载。现在我知道XAML文件实际上并没有编译到DLL中,而只是作为appx的一部分进行部署。 Visual Studio显然遇到了麻烦,但我可以手动将文件复制到不同的位置,至少可以解决问题。 (据我所知,这在发布之前被认为是一个已知问题,但我似乎无法在发布版本中开箱即用)。此外,即使我设法添加引用,我仍然似乎无法访问资源字典。我尝试了各种方式,例如将其合并到其他资源中(使用ms-appx语法)。我还尝试将文件中的字典加载到字符串中,以查看是否可以访问。似乎没有骰子。

哦,如果我想把这样的DLL交给别人,我究竟会如何部署呢?有推荐的方法吗?

1 个答案:

答案 0 :(得分:4)

Tim's article是创建自定义控件的最佳指南,它也适用于资源字典。基本上你可以选择构建一个NuGet包(这些包不必公开共享 - 你可以轻松共享/添加私有NuGet包)或构建一个安装到Visual Studio并可供所有应用程序使用的扩展。

您当然也可以手动共享包。假设您的应用程序引用了位于

中的MyLibrary.dll
MySolution/MyApplication/Dependencies/MyLibrary.dll

您还需要将.pri文件放在同一个文件夹中:

MySolution/MyApplication/Dependencies/MyLibrary.pri

然后将资源放在一个名为库的子文件夹中,它们位于与库项目相同的子文件夹层次结构中,例如。

MySolution/MyApplication/Dependencies/MyLibrary/Themes/Generic.xaml
MySolution/MyApplication/Dependencies/MyLibrary/Resources/Brushes.xaml
MySolution/MyApplication/Dependencies/MyLibrary/Resources/TextBlockStyles.xaml
MySolution/MyApplication/Dependencies/MyLibrary/Resources/ButtonStyles.xaml
...

一旦这样做 - Visual Studio将自动选择这些文件,并在构建应用程序时将它们放入appx包中。