C#“无法解析方法'InitializeComponent'。解析器报告以下错误'无效的符号种类:NamedType'”

时间:2018-08-06 14:32:57

标签: c# designer

我有一个其他人使用.NET Framework 4编写的项目 我对其中一种表单有疑问(其他表单正确打开)。

当我尝试在“设计模式”下​​打开Form1时,Visual Studio 2017显示错误屏幕并返回 “无法解析方法'InitializeComponent'。解析器报告以下错误'无效的符号种类:NamedType'。请在任务列表中查找潜在的错误。”

带有调用堆栈

at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.OnMethodPopulateStatements(Object sender, EventArgs e)
at System.CodeDom.CodeMemberMethod.get_Statements()
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host) 

3 个答案:

答案 0 :(得分:9)

为了增加知识范围,我遇到了同样的错误。我的情况是我正在升级由JetBrains dotPeek创建的解决方案。其解决方案版本为10.0(VS2008),并已针对VS2017转换为15.0(VS2015),并且是.NET 3.5目标类库。打开表单后(采用没有设计器文件的旧样式),在打开设计器时总是引发错误(但是运行类库就可以了)。在仔细检查InitializeComponent的每一行时,我发现了一个“ this.Name = nameof(formname)”。在查看另一个有效的表单时,我看到了“ this.Name =“ formname””。一旦我将生产线换成其他方法,设计师就可以完美打开!

答案 1 :(得分:1)

转到 InitializeComponent() 函数并搜索 nameof()。如果找到,只需将值部分替换为准确值。

就我而言是

this.Text = nameof (Form1);

改为:

this.Text = "Page1";

答案 2 :(得分:0)

  1. 这也可能是由于未引用的程序集中提到的类型缺失
  2. 程序集损坏(所引用程序集的错误签名或公钥令牌不匹配)。这主要是由于版本不匹配(强名称程序集)或程序集补丁造成的。

请检查组件,清理,重建并查看是否仍然出现此错误。也许重新启动Visual Studio。

欢呼