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

在重构一些代码的过程中,我遇到了几个这样的构build错误:

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

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

这些错误如何解决?

当您复制和粘贴文件在一个项目或另一个项目时,Visual Studio有一个不保留相同的BuildAction属性的恶习 。 它通常会将构build操作更改为表面上随机的值,例如ApplicationDefinition ,这会导致构build错误。

检查(在解决scheme资源pipe理器中select的文件在Visual Studio属性窗口中)每个.xaml文件都有一个页面BuildAction属性,并且您的代码文件具有一个BuildAction属性的编译

即使您的构build操作设置正确,您也可能会看到这一点。 例如,如果以应用程序的forms启动项目,然后再将其切换为类库。 在这种情况下,您还必须记得删除App.xaml(和相应的App.cs)。

Xaml控件上的构build操作必须从ApplicationDefinition更改为Page(通过右键单击解决scheme资源pipe理器树视图中的控件并select属性,可以访问此属性)。

这也是当我们复制粘贴一个Image / XAML文件到ClassLibrary项目。

将该图像的构build操作属性更改为资源

2年后,我用相同的问题来search,但只能使用上面的注释来排除其他选项,并最终find我的答案时,我注意到两个项目中每个具有相同的命名.xaml文件在一个单一解。


抽象的例子

1解决scheme有两个项目:PRINTNOTESPROJ和MAKENOTESPROJ。

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

切换到Build-> Release后,我只需单击“PrintWindow.XAML”(在MAKENOTESPROJ&带有子PrintWindow.xaml.cs),然后将其拖放到我的PRINTNOTESPROJ上。

*这是关键。 我忘记了这样做只会将相关文件复制到新项目中[至less在VS 2010中]。 从这之后,我收到了你的错误,直到我从我的原始项目MAKENOTESPROJ中删除了“PrintWindow.xaml”。

我希望这是有道理的…请评论问题!