58 votes

Une erreur dans un fichier .g.cs ?

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

Et la ligne gênante est :

using BreadcrumbLib;

Hier, j'ai supprimé ce projet (BreadcrumbLib) de ma solution et le projet principal a fonctionné correctement.
Aujourd'hui, ça ne marche pas.

Que puis-je faire à ce sujet ?
Quelle est l'information qui permet à Visual Studio ou à tout autre programme qui crée les fichiers .g.cs de placer cette référence ?

3voto

CodeMonkey Points 299

Au cas où quelqu'un, comme moi, rencontrerait ce problème, la cause de mon problème était que mon dictionnaire de ressources "GlobalStyles.xaml" faisait référence au namesapce supprimé, et pour une raison quelconque, il est apparu comme un include dans le fichier MainWindow.g.cs. La suppression de la référence dans le fichier du dictionnaire de ressources a permis de résoudre le problème.

2voto

Suit Boy Apps Points 1747

Ça vient de m'arriver. Mon problème était que j'avais des espaces dans mon x:Name . Une fois que j'ai retiré les espaces et nettoyé la solution, tout s'est bien passé.

Incorrect

<button Text="Check In" x:Name="Check In">

Correct

<button Text="Check In" x:Name="CheckIn">

1voto

TheGeneral Points 40470

Je viens de rencontrer le même problème,

J'avais un contrôle personnalisé que j'avais créé dans un nuget, et la classe xmal générée n'aimait pas l'espace de nom impliqué. Il s'avère que le contrôle avait un espace de nom de xxx.yyy.zzz.Name et mon projet comportait un espace de nom, eee.fff.yyy... (remarquez le yyy ), la confusion était totale et le seul recours était de remanier les espaces de noms dans l'application mère.

0voto

Mike Loux Points 166

J'ai eu un problème similaire, mais mon problème était que j'avais supprimé quelques dossiers/espaces de noms d'une bibliothèque WPF UI, et oublié de supprimer les entrées XmlnsDefinition correspondantes du fichier AssemblyInfo.cs de la bibliothèque. Elles pointaient toutes vers " http://schemas.foo.com/ui "pour faciliter les références dans les fichiers .xaml, comme suit :

[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")]

dans AssemblyInfo.cs, et :

xmlns:ui="http://schemas.foo.com/foo/ui/"

dans MainWindow.xaml.

J'ai supprimé les ViewModels et les Commands, mais j'ai oublié de supprimer les attributs [assembly :], ce qui fait qu'il les a recherchés lorsque j'ai reconstruit. J'ai supprimé les lignes incriminées, et voilà.

J'ai pensé que je devais partager pour tous ceux qui ont fait des choses comme ça et qui se grattent la tête.

0voto

Yousui Points 4171

Mon cas est un peu différent. J'ai un projet WPF et j'ai créé un panneau personnalisé comme ceci :

using System;
using System.Windows;
using System.Windows.Controls;

namespace MegaMenu
{
    public class MegaMenu : Panel
    {

Mon fichier .xaml ressemble à ceci :

<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>

Cela me donne l'erreur dans g.cs dossier bla bla. Il semble donc ce problème se produit lorsque le nom de l'espace de nom est le même que celui de la classe. . J'ai dû les changer pour ceux ci-dessous, ce qui a provoqué l'erreur.

Fichier .cs

using System;
using System.Windows;
using System.Windows.Controls;

namespace MegaMenu
{
    public class MegaMenuPanel : Panel
    {

fichier 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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X