从WPF应用程序复制XAML控件到类库后出现的问题

62
在重构一些代码的过程中,我遇到了几个构建错误,例如:

库项目文件不能指定ApplicationDefinition元素。

项目文件包含一个无效的属性值。

如何解决这些错误?

5个回答

136

当你在项目内复制和粘贴文件,或者将其复制到另一个项目时,Visual Studio有一个不好的习惯,它经常会更改BuildAction属性为看似随机的值,例如ApplicationDefinition,这会导致构建错误。

检查(在Visual Studio中选择文件并在“解决方案资源管理器”中右键单击然后选择“属性”)你的每个.xaml文件是否具有BuildAction属性,其值应该是Page,而你的代码文件应该具有BuildAction属性,其值应该是Compile


1
奇怪 - 我将我的XAML文件分成了2个DLL。我的所有页面都被标记为AppDef,而我的App.xaml被标记为Page :) 感谢您的帖子,他们需要修复IDE或至少改进此错误消息(在原因上投射一些光)。 - Gishu
请注意,这不仅适用于.xaml文件,我在.ps文件(编译的像素着色器)中也遇到了同样的问题。 - TGasdf
2
很棒的文章,简短明了...我遇到过这个问题很多次,但从未想过是构建操作缺失,所以我总是费尽心思地解决这个问题...谢谢你,现在你将为我节省大量时间和挫折,哈哈 - Robert Petz

27

即使您的构建操作已经正确设置,您仍可能会看到此问题。例如,如果您将项目启动为应用程序,然后稍后将其切换为类库。在这种情况下,您还必须记得删除App.xaml(和相应的App.cs)。


2
或者只是将其重命名以备可能的后续使用。 - Florian K
3
仍有一个.NET CORE的问题(日期为2020年10月6日)。我只是将App.xaml文件重命名,然后“瞬间”就解决了。 - 00jt
1
这是我的问题,我有一个类库,我创建了一个App.xml,这就是导致问题的原因。将其更改为AppTheme.xaml对我有用。 - undefined

4
将Xaml控件的构建操作从ApplicationDefinition更改为Page(可以通过在Solution Explorer树视图中右键单击控件并选择属性来访问此属性)。

3
当我们将图像/XAML文件复制粘贴到类库项目中时,需要将该图像的生成操作属性更改为资源。

1

两年后我用同样的问题进行搜索,但只能通过上面的评论来排除其他选项,最终当我注意到两个项目在同一个解决方案中有相同命名的.xaml文件时,才找到了答案。


摘要示例

一个解决方案有两个项目:PRINTNOTESPROJ和MAKENOTESPROJ。

在开发过程中,我在MAKENOTESPROJ中使用了一个XAML窗口,实际上应该是发布可执行文件的PRINTNOTESPROJ的一部分。

在切换到Build->Release时,我只需点击"PrintWindow.XAML"(在MAKENOTESPROJ中,带有子项PrintWindow.xaml.cs),然后将其拖动到我的PRINTNOTESPROJ中。

*这是关键。我忘记了这样做只会将相关文件复制到新项目中[至少在VS 2010中]。从此时起,直到我从原始项目MAKENOTESPROJ中删除"PrintWindow.xaml"之前,我都收到了您的错误提示。

希望这有意义...请用问题发表评论!


很好的发现。很高兴上面的评论/答案至少在某种程度上能帮到你。加一。 - ouflak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接