2

我正在使用新的 Metro Design (WinRT) 开发一些 UI 组件,以便将它们提供给第三方公司。我们在部署控件包时遇到了一些问题。当他们引用我们在新项目上的控件生成的 .dll 文件时,他们可以访问所有对象并实例化它们,但是在编译时,会出现以下类型的错误:

"Payload file '...\bin\Debug\Charts\Line\Line.xaml' does not exist.". (如果我们提供 /bin .dll)

或者

XamlParseException at Windows.UI.Xaml.Application.LoadComponent(Object component, Uri resourceLocator, ComponentResourceLocation componentResourceLocation)(如果我们使用 /obj 文件夹中的 .dll)

我们知道“解决此问题的方法是部署/提供 xaml”文件以及 .dll 给我们的客户,但我们真的希望避免显示我们的 XAML 代码。

提前致谢

NG

4

1 回答 1

2

XAML 文件是 Windows 8 WinRT/XAML 中的松散文件,因此如果您想使用将 XAML 和代码绑定在一起的内置工具,则必须共享 XAML 文件。

您可能想在此处阅读 Tim Heuer 关于构建可部署控件的文章。他提到了两种共享控件的方法——使用 VS Extensions SDK 将它们安装到 Visual Studio 中,或者作为可以共享 NuGet 包的 NuGet 包。这样,当您第一次查看您共享的组件时,这些文件将不可见,尽管它们将包含在项目文件夹中,因此如果有人仔细观察 - 他们将看到您的 XAML。

您似乎想要避免的替代方法是将 dll + xaml 文件作为文件共享以放入项目中。您需要将 xaml 文件放入与 dll 同名的文件夹(无文件扩展名),以便工具可以找到它们。只是使用工具的替代方案。

如果您查看从商店安装的应用程序 - 您可以看到它们附带的所有 XAML 文件。除了编写大量代码以某种方式将 XAML 嵌入到您的二进制文件中或用后面的代码替换它之外,目前没有其他好的选择。

于 2012-10-31T18:19:51.100 回答