【问题标题】:Embedded Xaml pages on DLLDLL 上的嵌入式 Xaml 页面
【发布时间】:2012-10-31 17:47:39
【问题描述】:

我正在使用新的 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 代码。

提前致谢

不正常

【问题讨论】:

    标签: c# xaml windows-8 windows-runtime winrt-xaml


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 2015-11-30
      • 2015-11-09
      相关资源
      最近更新 更多