2012-08-22 41 views
3

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

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

哦,如果我然后想给这样一个DLL给别人,我该如何部署呢?有推荐的方法吗?

回答

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包时,它构建的应用程序。