2012-10-31 90 views
2

我正在開發一些新的Metro Design(WinRT)的UI組件,以便將它們提供給第三方公司。 我們在部署控件包時遇到了一些麻煩。 當他們引用我們的控件在一個新項目上生成的.dll文件時,他們可以訪問所有對象並實例化它們,但編譯時會出現以下類型的錯誤:在DLL上嵌入Xaml頁面

"Payload file '...\bin\Debug\Charts\Line\Line.xaml' does not exist."。 (如果我們提供的/ bin中.DLL)

OR

XamlParseException at Windows.UI.Xaml.Application.LoadComponent(Object component, Uri resourceLocator, ComponentResourceLocation componentResourceLocation)(如果我們使用該.dll從/ OBJ文件夾)

我們知道一個「的辦法解決這個問題是部署/提供xaml「文件以及.dll給我們的客戶,但我們真的很想避免顯示我們的XAML代碼。

在此先感謝

NG

回答

2

XAML文件在Windows 8的WinRT/XAML寬鬆的文件,所以你必須共享XAML文件,如果你想使用的內置工具,將XAML和代碼綁定在一起。

您可能會想要閱讀Tim Heuer關於構建可部署控件here的文章。他提到了兩種共享控件的方法 - 使用VS Extensions SDK將其安裝到Visual Studio中,或者作爲NuGet包來共享NuGet包。這樣,當您首次查看共享的組件時,這些文件將不可見,不過它們將包含在項目文件夾中,所以如果有人看起來更近 - 他們會看到您的XAML。

您似乎想避免的選擇是將dll + xaml文件作爲文件共享放入項目中。您需要將xaml文件放入與dll具有相同名稱(無文件擴展名)的文件夾中,以供工具找到它們。只是使用這些工具的替代方案。

如果您查看從商店安裝的應用程序 - 您可以看到隨附的所有XAML文件。除了編寫大量的代碼來將XAML嵌入到二進制代碼中,或者將其替換爲代碼後,在這一點上沒有好的選擇。