use*_*402 358 wpf initializecomponent visual-studio-2010 visual-studio
如果我在Visual Studio 2010 SP1中创建一个新项目并选择"WPF应用程序"并尝试生成生成的应用程序,我会收到错误
当前上下文中不存在名称"InitializeComponent".
今天早上,当我尝试构建当前项目时,我遇到了类似的错误.昨天,编译和运行它没有问题.
我创建了一个新项目,每当我编译项目时都会收到错误.我刚刚将项目发送给了一位同事,他刚编译时没有任何错误.
怎么了?
Sea*_*n B 698
我已经遇到过这种情况并且忘记了导致它的原因.当我在我的代码隐藏文件后重命名命名空间而不是在我的XAML中时,我遇到了这个问题.
所以检查一下你是否也这样做过.
该命名空间和类名需要匹配,因为它们是一个局部类的两个组成部分
namespace ZZZ
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow
{
//...
}
}
<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">
Run Code Online (Sandbox Code Playgroud)
Seg*_*ult 227
.xaml文件的Build Action也必须设置为"Page",当在项目之间移动xaml文件时,此设置会丢失(至少在VS 2010中).
BCA*_*BCA 87
对于那些(在VS2015中)在调试模式下没有错误,但在发布模式下确实有指定错误(但项目运行正常)的人,这里有一些简单的尝试:
这种方法对我有用.
Sha*_*ngh 25
这有一个非常具体的原因,它在项目设置中.每当您尝试将WPF控件/窗口添加到.NET 2.0类库或项目时,通常会发生这种情况.出现此错误的原因是项目不知道它正在构建WPF控件或窗口,因此尝试将其构建为C#2.0项目.
解决方案涉及编辑.csproj文件.右键单击导致问题的项目,然后选择"卸载项目".右键单击卸载的项目,然后选择"编辑.csproj"..csproj文件将打开,您可以看到XML.寻找以下一行:
<Import Project=…..
Run Code Online (Sandbox Code Playgroud)
它接近文件的末尾,并且你可能拥有的唯一一行
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)
这告诉Visual Studio将项目构建为.NET 2.0项目.我们想要做的是告诉Visual Studio这实际上是一个WPF项目,所以我们必须添加以下行:
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
Run Code Online (Sandbox Code Playgroud)
该行将告诉Visual Studio将项目构建为WPF项目.现在你的.csproj文件底部应如下所示:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
Run Code Online (Sandbox Code Playgroud)
保存.csproj文件,在解决方案资源管理器中右键单击它并选择"重新加载项目"编译就可以了,你就完成了!
Jor*_*ean 24
我在重构期间遇到了这个错误,我重命名了一些文件/文件夹,并且需要重新生成prexisiting*.g.cs文件.
小智 22
当我偶然从xaml定义中删除类引用时,这发生在我身上:
我已经取代了
<Window x:Class="myapp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Run Code Online (Sandbox Code Playgroud)
第一行:
<RibbonWindow
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Run Code Online (Sandbox Code Playgroud)
我知道这不是原始问题的答案(因为那个项目建立在另一台机器上),但错误信息是相同的,所以也许我会帮助这种情况的人.
小智 16
确保在xaml文件中
<Page x:Class="Project1.Page1" ...
Run Code Online (Sandbox Code Playgroud)
匹配'Project1'名称和'Page1'名称
小智 16
从其他项目导入类,或更改xaml文件的路径或xaml或后面.cs文件的命名空间时,可能会收到此错误.
一:它的命名空间可能与您在新项目中的命名空间不同
namespace TrainerB.MVC.Forms
{
public partial class AboutDeveloper : ContentPage
{
public AboutDeveloper()
{
InitializeComponent();
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,导入文件中的名称空间以旧项目名称开头:"TrainerB",但您的新项目可能有不同的名称,因此只需在.xaml文件中将其更改为正确的新项目名称即可.背后的.cs文件.
二:
将.xaml文件的属性更改为:
构建操作:嵌入式资源
自定义工具: MSBuild:UpdateDesignTimeXaml
Dav*_*ave 14
我有这个(虽然这是我的错,并且是在我复制并粘贴了一些代码后引起的); 当命名空间在XAML和后面的代码之间不匹配时,可能会发生这种情况
例如
<UserControl x:Class="DockPanel.TreeView" />
Run Code Online (Sandbox Code Playgroud)
而背后的代码是
namespace NotDockPanel
Run Code Online (Sandbox Code Playgroud)
Mor*_*ker 13
我在重命名usercontrol时遇到了这个问题.我修复它的方法是注释掉InitializeComponent,验证所有名称是否正确(xaml和代码隐藏),构建项目,取消注释InitializeComponent,然后再次构建.听起来这个问题可能有几个原因/解决方案,但这种方式对我来说.
Ctr*_*l S 12
检查设计器文件。
我有同样的问题。在我的情况,原因是,namespace
对于FileName.Designer.cs不匹配(正确)namespace
中使用FileName.cs。
改变namespace
的FileName.Designer.cs相匹配的FileName.cs立即解决了这个问题。
小智 11
上述答案都不适合我.我尝试了所有这些,除了重复的.但是出于一些奇怪的原因,这在我在Visual Studio 2015中的跨平台项目中起作用:
我同意上面的答案,命名空间必须匹配.但是,我有一个像名称空间匹配的问题.
为了解决这个问题,我只是简单地将XAML中的命名空间更改为INCORRECT,保存,然后将其更改回CORRECT.瞧!
如果您正在使用Xamarin Forms并移动XAML文件,则会更改文件的"构建操作".Xamarin Forms需要"构建动作=嵌入式资源".
在Visual Studio中应用"构建操作":
Select the XAML file -> Properties -> Build Action = Embedded Resource
小智 7
帮助我的是将 .csproj 中的第一行更改为
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
Run Code Online (Sandbox Code Playgroud)
此错误的另一个常见原因是,如果您执行了以下操作:
右键单击项目中的文件夹以创建新的UserControl.这将创建一个类和xaml文件,该文件派生自文件夹命名空间中的用户控件.
然后你决定改变类的命名空间,因为你真的只是使用文件夹来组织代码.x:Class属性不会自动更新,因此它将搜索不存在的类.可能使用更好的错误消息,例如"x:在名称bla.blaa.blaaa中找不到类类型".
解决此问题的另一种方法是,只需将XAML上的property-> Build Action(嵌入式操作)从Embedded Resource(嵌入式资源)更改为其他任何内容,保存,然后再将其更改回Embedded Resource(嵌入式资源)。错误消失了。