当在 64 位程序集中定义基窗体时,无法在窗体Designer显示继承的窗体

来源:Microsoft 支持部门

快速发布

快速发布文章直接从MICROSOFT支持组织内部提供信息。 此处包含的信息是针对新出现或唯一的主题创建的,或旨在补充其他知识库信息。

症状

症状 1

尝试在 Visual Basic 或 C# 项目中使用 Visual 继承添加继承的表单时,会收到以下错误:

“警告:没有生成的程序集包含要继承的组件。 生成当前应用程序,或单击“浏览”,然后从另一个应用程序选择以前生成的程序集。”

症状 2

尝试在 Windows 窗体Designer中打开继承的窗体时,将显示以下错误。

“无法为此文件显示设计器,因为无法设计其中的任何类。 设计器检查了文件中的以下类:<filename<>类名称>---无法加载基类“<基类名称>”。 确保已引用程序集,并且已生成所有项目。 "

原因

窗体Designer需要编译的程序集才能显示继承的窗体。 如果基窗体类包含在使用 x64 或 Itanium 选项编译的程序集中,则 Form Designer无法打开它们。 这是因为 Visual Studio 是一个 32 位进程,无法在 64 位 (x64 或 Itanium) 模块中执行代码。

解决方法

确保在使用“AnyCPU”生成选项编译的程序集中定义了基窗体 () 。 这允许在程序集中定义的表单类在 32 位进程 ((如 Visual Studio) )或 64 位自定义进程中使用。

详细信息

重现问题的步骤

1. 创建新的Windows 窗体项目。 默认创建 Form1。
2. 在“项目”菜单上,单击项目名称>“<属性”以查看项目的属性。
3. 如果使用 Visual Basic,请单击“编译”选项卡,然后单击“高级编译选项”。 将“目标 CPU”设置为“x64”,然后单击“确定”。 如果使用 Visual C#,请单击“生成”选项卡,并将“平台目标”设置为“x64”。
4. 在“生成”菜单上,单击“生成解决方案”。 这将生成面向 x64 平台的程序集。

重现症状 1 的步骤

5. 在“项目”菜单上,单击“添加新项”。
6. 选择“Windows 窗体”,选择“继承的窗体”,然后单击“添加”。

请注意,收到错误“警告:没有生成的程序集包含要继承的组件。 生成当前应用程序,或单击“浏览”,然后从另一个应用程序选择以前生成的程序集。”即使浏览并手动选择之前编译的类库程序集,也会发生这种情况。

重现症状 2 的步骤

7. 在“项目”菜单上,单击“添加类”。 (class1) 选择默认名称,然后单击“添加”。
8. 如果使用的是 Visual Basic,请在类文件中使用此代码。

导入 System.Windows.Forms
公共类类 1
   继承 Form1
End Class

9. 如果使用的是 Visual C#,请在类文件中使用此代码。

using System;
使用 System.Windows.Forms;

命名空间 WindowsFormsApplication1
{
    类 Class1:Form1
    {
    }
}

10. 在“生成”菜单上,单击“生成解决方案”。 项目应进行编译。
11. 尝试在 Windows 窗体Designer中打开 Class1 继承的窗体。

请注意,你收到错误:“无法为此文件显示设计器,因为无法设计其中的任何类。 设计器检查了文件中的以下类:Class1 ---无法加载基类“WindowsApplication1.Form1”。 确保已引用程序集,并且已生成所有项目。

 

免责 声明

MICROSOFT和/或其供应商不对网站上发布的文档和相关图形中包含的信息的适用性、可靠性或准确性作出任何声明或保证, (“材料”) 出于任何目的。 这些材料可能包含技术不准确或排版错误,可随时修订,不另行通知。

在适用法律允许的最大范围内,MICROSOFT和/或其供应商否认并排除所有明示、默示或法定的陈述、保证和条件,包括但不限于与材料有关的所有权、不侵权、令人满意的条件或质量、适销性和特定用途适用性的陈述、保证或条件。