【问题标题】:XAML files of referenced library not copied over during build在构建期间未复制引用库的 XAML 文件
【发布时间】:2013-06-24 22:24:05
【问题描述】:

Windows 应用商店应用不再将 xaml 文件编译到程序集中,而是将它们复制到调试/发布文件夹(构建操作:页面)。为了能够引用 xaml 文件,例如。在 ResourceDictionary 中,您必须使用 ms-appx 语法:

<ResourceDictionary.MergedDictionaries>
  <ResourceDictionary Source="ms-appx:///{assemblyname}/{folder}/{xamlfile}.xaml" />
</ResourceDictionary.MergedDictionaries>

当使用 XAML 文件引用另一个程序集时,您应该有一个与该程序集同名的文件夹:

/referencefolder/some.assembly.dll
/referencefolder/some.assembly/subfolder/xamlfile

我之前在几个项目中使用过这个没有问题,但是在我的上一个项目中我无法让它工作。由于某些奇怪的原因,引用程序集中的 xaml 文件不会被复制到调试/发布文件夹中。由于没有复制文件,很明显我在资源字典合并时遇到了错误。

添加 Callisto nuget 包(还包含 Themes.xaml 文件)后,3 个个人程序集文件夹中有 2 个被复制过来。删除调试文件夹并重新构建让我回到第 1 步:没有文件被复制(甚至没有来自 Callisto 的文件)。

由于它只是对本地可用程序集的引用,我不知道哪里出错了。

【问题讨论】:

  • 很好地比较了 xaml 文件的“构建操作”和“自定义工具”高级属性——在一个有效的项目中和一个无效的项目中。

标签: windows-8 windows-store-apps winrt-xaml


【解决方案1】:

WinRT 中的项目引用存在错误。基本上,如果您通过 DLL 添加引用,则该项目的输出文件夹层次结构是错误的。 如果您将整个项目添加到您的解决方案中,则不应出现此错误。

我认为它已在上周发布的 Visual Studio 2012 Update 2 中得到修复。

你的视觉工作室是最新的吗?

如果是,并且您要使用的是 callisto,请不要使用 nuget 包,并下载完整的项目源代码,然后将此项目添加到您的解决方案中。应该可以的。

【讨论】:

  • 它可以正常工作,但是您必须自己提供一个名为程序集的文件夹并将 XAML 文件放入其中。
  • 我知道可以,但您不必自己创建文件夹。由于您引用了一个项目,因此 Visual Studio 应正确创建输出文件夹树。正如我所说,我认为它已在 Visual Studio 的 Update 2 中修复
【解决方案2】:

这可能是一个长镜头,但是如果您在对该项目的引用上“应对本地”会发生什么?

【讨论】:

  • 复制本地对于所有引用的程序集都是正确的(在工作和失败的项目中)。
【解决方案3】:

由于此项目与某些引用项目之间的 nuget 包版本不同,似乎出了点问题。

另一个提示:如果您将所有内容卸载到其他程序集,因此在您的 Windows 应用商店客户端应用程序中没有 xaml 文件(甚至没有在项目创建时添加的常见样式),我已经看到出现了类似的问题。添加一个空的虚拟页面就足以让事情重新开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 2019-09-15
    相关资源
    最近更新 更多