C# 将WPF应用程序项目转换为UserControl库会导致找不到InitializeComponent()错误
我在做一个项目,在那里我创建了一堆用户控件。后来,我决定将这些控件移动到UserControl库中。我就是这么做的:C# 将WPF应用程序项目转换为UserControl库会导致找不到InitializeComponent()错误,c#,wpf,visual-studio-2010,.net-3.5,class-library,C#,Wpf,Visual Studio 2010,.net 3.5,Class Library,我在做一个项目,在那里我创建了一堆用户控件。后来,我决定将这些控件移动到UserControl库中。我就是这么做的: 创建了一个新的VS2010项目(用户控制库) 将.NET版本设置为3.5 创建了一堆文件夹 将上一个项目中的文件添加到我的库中 但是,当我尝试构建库时,出现以下错误: Error 14 'EChart.Controls.EPreviewGraphSelector' does not contain a definition for 'InitializeComponent
Error 14 'EChart.Controls.EPreviewGraphSelector' does not contain a
definition for 'InitializeComponent' and no extension method 'InitializeComponent'
accepting a first argument of type 'EChart.Controls.EPreviewGraphSelector'
could be found (are you missing a using directive or an assembly reference?)
C:\Projects\eControls\EChart\EChart\Controls\EPreviewGraphSelector.xaml.cs 73 18 EChart
我的XAML文件的命名空间和代码隐藏不匹配。当它是一个应用程序而不是一个库时,整个项目都在构建中
以下是我的UserControl的简化代码:
<UserControl x:Class="EChart.Controls.EPreviewGraphSelector">
- g、 没有为此用户控件生成cs文件李>
- 生成操作设置为第页
- 我已经添加了所有必要的参考资料
- 用户控件生成工具设置为MSBuild:Compile
using Microsoft.Windows.Themes;
你知道为什么会这样吗?我想你没有正确设置项目。我建议查看WPF应用程序的设置,例如引用,并将它们复制到库中。用户控件的生成工具是否设置为MSBuild:Compile?是否已检查添加到新项目的现有文件的命名空间?我可以想象存在不一致或不同的名称空间不适合,或者xaml中的名称空间与类定义中的名称空间不匹配。事实上,我已经解决了这个问题,我不知道为什么会出现这种情况,但我知道如何解决它 在我的UserControl中,我有以下引用:
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Luna"
这可能是由Blend添加的,当时我正在设计一些标准控件的样式。当我处于设计模式时,我不会收到任何错误消息。因此,当我编译userControl时,我会得到生成InitializeComponent方法的g.cs文件。然后在那里我得到了对
Microsoft.Windows.Themes的引用代码>,因为我在xaml中有这个引用(见上文)。当它编译g.cs文件时,它会失败,因此不会生成g.cs文件,也不存在InitializeComponent方法,这会导致该错误。我已添加了所有必需的引用。并且构建工具设置为MSBuild:CompileThey do match,它是在上一个项目中编译的,从那时起我就没有更改过名称空间,并且我已经多次检查了它。是一样的。
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Luna"