C#中没有"InitializeComponent"的定义,而且当前上下文中不存在名为"controlName"的名称。

17
自6月份以来,我一直在团队中开发Windows Phone应用程序。一切都很正常,所有的同步也进行得很好,直到今天。当我同步项目时,VS开始给我报错:
  • "WindowsPhoneApp.MainPage" 不包含 InitializeComponent 的定义(在所有其他页面上也是如此)
  • 名称 "controlName" 在当前上下文中不存在(在所有页面上都会出现这个问题)
我什么都没改,在昨天还好好的。XAML中的类名与代码后台中的名称匹配。
我已经尝试退出VS,但问题仍然存在。

通常,initializeComponent是自动生成的方法,其中定义了控件,这些控件位于designer.cs文件中...可能在同步过程中,您删除了一些设计文件代码或设计文件本身! - Viru
1
尝试关闭解决方案,删除解决方案目录中隐藏的 .suo 文件,然后再次打开解决方案。不知道这是否适用于您,但我在 VS2013 中使用 Silverlight 时也遇到了同样的问题。 - Silvermind
@Silvermind,我应该在哪里找到那个文件? - Usr
10
关闭解决方案,删除与该解决方案相关联的suo文件,在所有项目中删除"bin"和"obj"文件夹。然后在VS中打开解决方案并重新构建解决方案。 "suo"文件与"sln"文件位于同一文件夹中,即解决方案的根文件夹。它是一个隐藏文件,因此您可能需要进入资源管理器的菜单/查看,并检查"隐藏项目"选项。 - Ladi
3个回答

16

针对我而言,问题在于以下内容:


项目结构

Project\Views\Page1.xaml
Project\Views\Page1.xaml.cs

上述页面构造函数中 Page1.xaml.cs 产生的错误:

public sealed partial class Page1 : Page
{
    public Page1()
    {
        this.InitializeComponent();
    }
}

Xaml 文件

<Page
    x:Class="App1.Page1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
应该是 x:Class="App1.Views.Page1",只是类名中有错字。

3
我知道这很显而易见,但对任何人都可能有帮助。这个错字 "ate" 花费了我80分钟的时间。 - Arsinclair
刚遇到了同样的问题。感谢您发布解决方案。 - Jimmy
通常情况下,对我来说,是错误的用户定义工具(应该是“MSBuild:UpdateDesignTimeXaml”)和“构建操作”(“嵌入式资源”)... - thomiel
但今天直到我连接到我的 Mac 构建机之后,情况才变得奇怪起来 —— IntelliSense 仍然坚持认为 InitializeComponent 没有定义。 - thomiel

2

关闭解决方案,删除与该解决方案相关联的.suo文件,在所有项目中删除"bin"和"obj"文件夹。然后在VS中重新打开解决方案并重新构建解决方案。

"suo"文件是一个隐藏文件,因此您可能需要进入资源管理器的菜单/视图,并勾选"隐藏的项目"选项。在VS2013中,它与.sln文件位于同一文件夹中,在更新版本中,它位于(隐藏的).vs文件夹中。


这个最初是由@Silvermind作为评论发布的,但它对我有用,所以我将其转化为答案。 - Robin Bennett

0

对我来说,问题在于应用程序在后台运行。

任务栏中没有应用程序窗口或图标。即使关闭了Visual Studio,应用程序实例仍然存在,阻止我手动清除解决方案中的/bin/obj文件夹,因为Windows会抛出“文件正在使用”异常。

解决方法:

  • 使用任务管理器(CTRL+SHIFT+ESC)杀死应用程序
  • 清理解决方案
  • 重新构建应用程序

重启系统也可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接