2012-08-22 39 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包時,它構建的應用程序。