.g.cs文件错误
本文关键字:错误 文件 cs | 更新日期: 2023-09-27 18:03:56
Error 1 The type or namespace name 'BreadcrumbLib' could not be found (are you missing a using directive or an assembly reference?) YOU_CAN'T_KNOW_THE_PATH_OR_NAME.g.cs 16 7 someWPFapp
麻烦的那一行是:
using BreadcrumbLib;
昨天我已经从我的解决方案中删除了那个项目(breadcrumlib),主项目工作得很好。
今天它不起作用了。
我该怎么办?
是什么被遗忘的信息让Visual Studio或其他程序构建。gcs文件时把这个引用放在那里?
试着清理一下。如果这不起作用,请删除解决方案中的bin obj目录,然后进行完整的重新构建。确保没有任何XAML文件引用该组件(生成.g.cs文件的就是这个组件)。
我的项目中的.g.cs文件通常是由XAML生成的。
检查在任何XAML文件的xmlns引用中没有引用breadcrumlib。
这种情况也发生在我身上,因为我将一些Xaml内容移动到另一个文件夹中的子userControl中,Resharper为我移动了Xmlns引用。
但是,ReSharper没有使用之前使用的Xmlns引用(具体来说是:Xmlns:ms="clr-namespace:Mindscape.WpfElements. charts;assembly=Mindscape.WpfElements"),而是用以下内容替换了它:
xmlns:ms="http://namespaces.mindscape.co.nz/wpf"
我用旧的正确的引用替换了错误的引用。这就解决了我的问题。
我也有这个问题。对我来说,问题是重命名没有通过剃刀文件的所有方式,所以g.cs文件一直以旧名称生成。
我通过检查相关的.razor文件中的错误并手动修复它们来解决它。
如果像我这样的人遇到这个问题,我的问题的原因是我的"GlobalStyles。"xaml"资源字典引用了被删除的命名空间,由于某种原因,它在MainWindow.g.cs文件中显示为包含。删除资源字典文件中的引用修复了它。
刚刚收到这个错误信息。
这里的答案都没有解决我的问题,但是我查看了我的警告信息,发现其中一个项目是用。net 4.7构建的,另一个是用。net 4.5构建的。我把所有项目放在同一个版本上,构建,现在我很高兴!
这就发生在我身上了。我的问题是,我有空间在我的x:Name
。一旦我移除了空间并清洗了溶液,它就工作得很好。
<button Text="Check In" x:Name="Check In">
正确<button Text="Check In" x:Name="CheckIn">
有相同的错误。根本原因是我重命名了几个视图模型,结果发现我发现了& &;替换未完成。
我通过在错误消息中查找违规视图模型名称解决了这个问题,在我的视图中进行了全局搜索和替换(而不是.g.cs文件)。这个问题就消失了。
我也遇到过同样的问题,
我在nuget中创建了一个自定义控件,生成的xml类不喜欢所涉及的名称空间。它把控件变成了xxx.yyy.zzz.Name
的名称空间,我的项目在其中有一个名称空间,eee.fff.yyy...
(注意yyy
),它只是完全混淆了,唯一的办法是重构父应用程序中的名称空间。
遇到g.cs问题,删除/bin和/obj没有帮助。如果你重命名了命名空间或类,手动打开每个。cshtml文件(由于某种原因,双击错误将不会在VS 2022中这样做),并确保。cshtml没有语法错误。在我的例子中,我将@model指向前面的名称空间。在使用替换工具和我的各种查找/替换查找时错过了这些。
我有一个类似的问题,但我的问题是我已经从WPF UI库中删除了几个文件夹/名称空间,并且忘记从库的AssemblyInfo.cs文件中删除相应的XmlnsDefinition条目。我让它们都指向"http://schemas.foo.com/ui",以便更容易在.xaml文件中引用,如下所示:
[assembly: XmlnsPrefix("http://schemas.foo.com/ui", "ui")]
[assembly: XmlnsDefinition("http://schemas.foo.com/ui", "Foo.UI.Common.Behaviors")]
[assembly: XmlnsDefinition("http://schemas.foo.com/ui", "Foo.UI.Common.Converters")]
[assembly: XmlnsDefinition("http://schemas.foo.com/ui", "Foo.UI.Common.Commands")]
[assembly: XmlnsDefinition("http://schemas.foo.com/ui", "Foo.UI.Common.ViewModels")]
[assembly: XmlnsDefinition("http://schemas.foo.com/ui", "Foo.UI.Common.UserControls")]
[assembly: XmlnsDefinition("http://schemas.foo.com/ui", "Foo.UI.Common.Extensions")]
在AssemblyInfo.cs中和
xmlns:ui="http://schemas.foo.com/foo/ui/"
在MainWindow.xaml 。
我删除了ViewModels和Commands,但忘记删除[assembly:]属性,所以当我重建时,它正在寻找它们。删除冒犯的行,等等。
我想我应该和其他做过类似事情的人分享,可能会让他们挠头。
我的情况有点不同。我有一个WPF项目,我创建了一个自定义面板,如下所示:
using System;
using System.Windows;
using System.Windows.Controls;
namespace MegaMenu
{
public class MegaMenu : Panel
{
我的。xaml文件看起来像这样:
<Window x:Class="MegaMenu.MainWindow"
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"
xmlns:local="clr-namespace:MegaMenu"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"
>
<local:MegaMenu>
<TextBox Width="50" Height="20" Text="First"></TextBox>
<TextBox Width="50" Height="20" Text="Second"></TextBox>
<TextBox Width="50" Height="20" Text="Third"></TextBox>
<TextBox Width="50" Height="20" Text="Fourth"></TextBox>
<TextBox Width="50" Height="20" Text="Fifth"></TextBox>
<TextBox Width="50" Height="20" Text="Sixth"></TextBox>
<TextBox Width="50" Height="20" Text="Seventh"></TextBox>
</local:MegaMenu>
</Window>
这给了我g.cs
文件中的错误等等。因此,当命名空间名称与类名称相同时,似乎会发生这个问题。我必须将它们更改为下面,这导致错误消失。
using System;
using System.Windows;
using System.Windows.Controls;
namespace MegaMenu
{
public class MegaMenuPanel : Panel
{
xaml文件<Window x:Class="MegaMenu.MainWindow"
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"
xmlns:local="clr-namespace:MegaMenu"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"
>
<local:MegaMenuPanel>
<TextBox Width="50" Height="20" Text="First"></TextBox>
<TextBox Width="50" Height="20" Text="Second"></TextBox>
<TextBox Width="50" Height="20" Text="Third"></TextBox>
<TextBox Width="50" Height="20" Text="Fourth"></TextBox>
<TextBox Width="50" Height="20" Text="Fifth"></TextBox>
<TextBox Width="50" Height="20" Text="Sixth"></TextBox>
<TextBox Width="50" Height="20" Text="Seventh"></TextBox>
</local:MegaMenuPanel>
</Window>
在我的例子中,我试图使用x: name命名一个xaml控件,但忘记了,并将其保留为x: name =". 编译器一直抛出错误。给出正确的名称或删除那个空字符串为我解决了错误。
我没有使用WPF,但得到了这个错误,因为我忘记在我的剃刀视图的@inject部分更改命名空间。
我把.NET 6
项目降级到.NET 4.8
。
默认情况下,.NET 6
添加到我的.csproj
<ImplicitUsings>enable</ImplicitUsings>
,如果我删除强制我手动添加using
语句,这解决了我的问题,一个幻影using
认为它是需要的,当它不是,找不到