【问题标题】:Problems after copying XAML controls from WPF Application to a class library将 XAML 控件从 WPF 应用程序复制到类库后出现问题
【发布时间】:2009-06-26 18:41:17
【问题描述】:

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

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

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

如何解决这些错误?

【问题讨论】:

    标签: .net wpf xaml


    【解决方案1】:

    当您在一个项目或另一个项目中复制和粘贴文件时,Visual Studio 有一个讨厌的习惯,即不保留相同的 BuildAction 属性。它经常将构建操作更改为看似随机的值,例如ApplicationDefinition,这会导致构建错误。

    检查(在 Visual Studio 属性窗口中,在解决方案资源管理器中选择文件)您的每个 .xaml 文件都具有 PageBuildAction 属性和您的代码文件具有 CompileBuildAction 属性。

    【讨论】:

    • 奇怪 - 我将我的 XAML 文件拆分为另外 2 个 DLL。我的所有页面都标有 AppDef 并且我的 App.xaml 被标记为 Page :) 感谢您的帖子,他们需要修复 IDE 或至少改进此错误消息(阐明原因)
    • 请注意,这不是特定于 .xaml 文件的,我对 .ps 文件(编译的像素着色器)也有同样的问题
    • 很棒的帖子,简明扼要...我遇到过很多次这个问题,从来没有想过这是缺少构建操作,所以我总是不遗余力地工作围绕这个问题......谢谢你,你现在将为我节省大量时间和挫败感,哈哈
    【解决方案2】:

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

    【讨论】:

    • 或者只是重命名以备后用
    • .NET CORE 仍然存在问题(2020 年 10 月 6 日)。我只是重命名了 App.xaml 文件,然后“噗”一下,一切正常。
    【解决方案3】:

    这也是我们将图像/XAML 文件复制粘贴到 ClassLibrary 项目时。

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

    【讨论】:

      【解决方案4】:

      Xaml 控件上的构建操作必须从 ApplicationDefinition 更改为 Page(可以通过右键单击解决方案资源管理器树视图中的控件并选择属性来访问此属性)。

      【讨论】:

        【解决方案5】:

        2 年后,我带着同样的问题来搜索,但是当我注意到这两个项目都有相同的同名 .xaml 文件时,我只能使用上述 cmets 排除其他选项并最终找到我的答案在一个解决方案中。


        抽象例子

        1 解决方案有 2 个项目:PRINTNOTESPROJ 和 MAKENOTESPROJ。

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

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

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

        我希望这是有道理的...请有问题发表评论!

        【讨论】:

        • 好收获。很高兴上面的 cmets/answers 至少可以提供一点帮助。加一。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多