在构建期间未复制引用库的XAML文件

时间:2013-04-15 07:14:07

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

Windows应用商店应用不再将xaml文件编译到程序集中,而是将它们复制到调试/发布文件夹(Build Action:Page)。为了能够引用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的文件)。

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

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

这可能是一个很长的镜头,但如果你对该项目的引用“Cope Local”会发生什么?

答案 2 :(得分:0)

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

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