wpf - 为什么在 Visual Studio 2019 中不会生成 WPF 表单的 .g.vb 文件?
问题描述
我在 WPF 应用程序中有一个生成错误消息的表单:
"BC30451: 'InitializeComponent()'is not declared. It may be inaccessible due to its protection level"
InitializeComponent()
是在与 XAML 文件关联的 .G.VB 文件中生成的函数。如果没有生成.G.VB,则没有InitialzeComponent()
功能。
到目前为止,我采取的步骤是:
- 将不生成 .G.VB 的 XAML 文件的属性与生成 .G.VB 文件的 XAML 文件的属性进行比较。
- 我试过了
Build | Clean Solution
;后跟一个Build | Rebuild Solution
. - 确保命名空间和类在 VB 和 XAML x:Class 中相同。
- 关闭并重新启动 Visual Studio 2019。
- 向类添加了一个
InitializeComponent()
功能。
这需要记录在案,因此我们知道这通常是自动生成的。这样做会使代码容易受到设计器中未来更改的影响。
XAML 文件的属性设置为:
- 构建动作:
Page
- 复制到输出目录:
Do not copyist item
- 自定义工具:
XamlIntelliSenseFileGenerator
我的问题是:
- 是什么阻止了 .G.VB 文件自动生成?
- 诊断此问题原因的最佳资源是什么?
附加信息
- 我添加了一个带有
InitializeComponent()
方法的部分类。此函数调用LoadComponent( uriLocator )
加载由 uriLocator 字符串引用的 XAML。这undefined InitializeComponent()...
在短期内解决了错误,以获得进一步的信息来确定根本原因。
请注意,添加您自己的InitializeComponent()
不应被视为解决方案。它仅应用作找出未生成 .G.CS 或 .G.VB 文件的原因的垫脚石。问题是自定义 G.CS 或 G.VB 必须手动更新 XAML 的任何更改。
解决方案
推荐阅读
- power-automate - 如何在 Power Automate 自定义连接器中使用纯数字作为字符串类型默认值
- excel - 在 Excel 中将四位数字更改为年份
- php - 如何将电子邮件发送到多个地址?
- nuxt.js - Nuxt.js 运行生成,全局混合(...不是函数)
- node.js - 意外行为 - redis memolock 实现(node.js ioredis)
- javascript - 为什么只有第一次 React 函数组件获取道具
- python - 根据要求将csv转json
- python - Pygame cam.get_raw() 返回无
- python - Keras:使用 Dice 系数损失函数,val loss 没有改善
- python - linearmodels.iv OLS 和 statsmodels.formula.api OLS 没有给出相同的结果