我最近将 .NET Framework 4.8 WPF 应用程序转换为 .NET5。当我编译应用程序时,出现以下错误
当前上下文中不存在名称“InitializeComponent”
我关注了此链接,但对我帮助不大。
我检查了
*.xaml
和 *.cs
文件命名空间。
<Window x:Class="Cl.Wpf.MessageWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
SizeToContent = "WidthAndHeight"
Title="MessageWindow" >
还检查了
.cs
文件
namespace Cl.Wpf
{
public partial class MessageWindow : Window
{
public MessageWindow()
{
InitializeComponent();
.....
}
我的
*.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0-windows</TargetFramework>
<OutputType>Library</OutputType>
<RootNamespace>Cl.Wpf</RootNamespace>
<Deterministic>false</Deterministic>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<UseWPF>true</UseWPF>
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.2.241603">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Settings.Designer.cs">
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<None Update="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
</Project>
我还尝试删除
obj
文件夹并重新启动 Visual Studio 2019,但也没有帮助我。
此外,尝试在
XAML
文件中添加一些空格,但这也没有帮助。
构建行动
MessageWindow.xml
看来问题出在
Microsoft Visual Studio Community 2019 Version 16.11.2
。
我重新安装了社区版,但还是不行。
最后,我卸载了社区版本并重新安装了
Microsoft Visual Studio Professional 2019 Version 16.11.2
,幸运的是它对我有用。
我不确定这对其他用户有多大用处,但这对我有用。
我在这里发布这个解决方案是因为我在非常相似的情况下遇到了这个问题,因为我将我的 WPF 解决方案从 .NET Framework 移动到 .NET 7。我也在使用 VS Community Edition。版本是2022年17.4.1
就我而言,我可以删除 obj 文件夹并清理我的项目,关闭并重新打开 VS,这样就不会出现任何错误。我可以编码,智能感知会很乐意向我提出建议。然而,一旦我运行我的项目,智能感知错误就会显示在与 XAML 视图关联的每个命名空间变量上。
我的 XAML 页面构建操作设置为页面,我的 C# 代码隐藏页面构建操作设置为 C# 编译器。
我将构建操作后面的 C# 代码切换到“Page”,然后将它们切换回 C# 编译器,问题神秘地消失了。
我希望这对某人有帮助。
我也遇到了同样的事情,解决方法是: