web-dev-qa-db-fra.com

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 retiré ce projet (BreadcrumbLib) de ma solution et le projet principal a bien fonctionné.
Aujourd'hui, ça ne marche pas. 

Que puis-je faire à ce sujet?
Quel élément d'information délaissé permet à Visual Studio ou à un programme quelconque de créer les fichiers .g.cs qui mettent cette référence à cet endroit?

39
Vercas

Essayez de faire un nettoyage. Si cela ne fonctionne pas, supprimez les répertoires bin obj de votre solution, puis effectuez une reconstruction complète. Assurez-vous qu'aucun de vos fichiers XAML ne fait référence à ce composant (qui génère le fichier .g.cs).

73
Jeff

Les fichiers .g.cs de mes projets sont généralement générés à partir de XAML.

Vérifiez que BreadcrumbLib n'est pas référencé dans les références xmlns de vos fichiers XAML.

24
Stuart

Cela m'est aussi arrivé parce que j'ai déplacé une partie de mon contenu Xaml vers un sous utilisateur userControl situé dans un autre dossier et que Resharper a déplacé les références Xmlns pour moi. 

Cependant, au lieu d'utiliser la référence Xmlns qui était utilisée auparavant (plus précisément: xmlns: ms = "espace de nom clr: Mindscape.WpfElements.Charting; Assembly = Mindscape.WpfElements"), ReSharper l'a remplacée par le texte suivant: 

xmlns:ms="http://namespaces.mindscape.co.nz/wpf" 

J'ai remplacé la référence incorrecte par l'ancienne référence correcte. Cela a résolu le problème pour moi.

5
willem

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 à la structure de noms supprimée et qu'il apparaissait comme une inclusion dans le fichier MainWindow.g.cs. . La suppression de la référence dans le fichier de dictionnaire de ressources a corrigé le problème.

2
CodeMonkey

J'avais un problème similaire, mais mon problème était que j'avais supprimé quelques dossiers/espaces de noms d'une bibliothèque d'interface utilisateur WPF et j'avais oublié de supprimer les entrées XmlnsDefinition correspondantes du fichier AssemblyInfo.cs de la bibliothèque. Je les avais tous pointés vers " http://schemas.foo.com/ui " pour faciliter la référence 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é ViewModels et Commands, mais j'ai oublié de supprimer les attributs [Assembly:]. Ils étaient donc à la recherche lorsque j'ai reconstruit. Supprimé les lignes incriminées, et le tour est joué. 

Je pensais partager cela avec quiconque aurait fait ce genre de choses et risquait de se gratter la tête. 

0
Mike Loux

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

J'ai créé un contrôle personnalisé dans un nuget et la classe xmal générée n'appréciait tout simplement pas l'espace de nom impliqué. Le contrôle avait alors un espace de noms de xxx.yyy.zzz.Name et mon projet contenait un espace de noms, eee.fff.yyy... (remarquez la yyy), il était devenu complètement confus et le seul recours était de refactoriser les espaces de noms de l'application parent. 

0
Michael Randall

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

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 le fichier g.cs bla bla. Il semble donc que ce problème se produit lorsque le nom de l'espace de noms est identique au nom de la classe Je dois les changer en dessous, ce qui a causé l'erreur est partie. 

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

namespace MegaMenu
{
    public class MegaMenuPanel : Panel
    {
<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>
0
Ogrish Man

Cela m'est juste arrivé. Mon problème était que j'avais des espaces dans mon x:Name. Une fois que j'ai enlevé les espaces et nettoyé la solution cela a bien fonctionné. 

Incorrect

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

Correct

<button Text="Check In" x:Name="CheckIn">
0
Suit Boy Apps