Ошибка в файле .g.cs? - PullRequest
       10

Ошибка в файле .g.cs?

41 голосов
/ 27 июля 2011
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;

Вчера я удалил этот проект (BreadcrumbLib) из своего решения, и основной проект работал нормально.
Сегодня он не работает.

Что я могу с этим поделать?
Какая часть оставленной информации делает Visual Studio или любая другая программа, которая создает файлы .g.cs, помещает эту ссылку туда?

Ответы [ 9 ]

76 голосов
/ 27 июля 2011

Попробуйте сделать чистую.Если это не сработает, удалите директории bin obj в своем решении, а затем выполните полную перестройку.Убедитесь, что ни один из ваших файлов XAML не ссылается на этот компонент (именно это создает файл .g.cs).

25 голосов
/ 27 июля 2011

Файлы .g.cs в моих проектах обычно создаются из XAML.

Убедитесь, что BreadcrumbLib не указан в ссылках xmlns ни в одном из ваших файлов XAML.

5 голосов
/ 02 декабря 2015

Это также случилось со мной, потому что я переместил часть своего содержимого Xaml в подпункт userControl в другую папку, а Resharper переместил ссылки на Xmlns для меня.

Однако вместо использования ссылки Xmlns, которая использовалась ранее (в частности: xmlns: ms = "clr-namespace: Mindscape.WpfElements.Charting; assembly = Mindscape.WpfElements"), ReSharper заменил ее следующим:

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

Я заменил неправильную ссылку на старую правильную. Это решило проблему для меня.

2 голосов
/ 11 мая 2016

В случае, если кто-то, как и я, сталкивается с этой проблемой, причиной моей проблемы было то, что мой словарь ресурсов "GlobalStyles.xaml" ссылался на удаленный файл namesapce, и по какой-то причине он отображался как включение в MainWindow.g Файл .cs. Удаление ссылки в файле словаря ресурсов исправило ее.

1 голос
/ 29 марта 2019

Только что получил это сообщение об ошибке.

Ни один из приведенных здесь ответов не решил мою проблему, но я посмотрел на мое предупреждающее сообщение и увидел, что один проект был построен в .NET 4.7, а другой - в 4.5.Я поставил все проекты на одну и ту же версию, собрал и теперь я счастлив!

0 голосов
/ 25 февраля 2019

Я только что столкнулся с той же проблемой,

У меня был пользовательский элемент управления, который я создал в nuget, и сгенерированный класс xmal просто не понравился задействованным пространством имен.Оказывается, элемент управления имел пространство имен xxx.yyy.zzz.Name, и в моем проекте было пространство имен, eee.fff.yyy... (обратите внимание на yyy), он просто был полностью сбит с толку, и единственным выходом была реорганизация пространств имен в родительском приложении.

0 голосов
/ 13 ноября 2018

Это только что случилось со мной.Моя проблема была в том, что у меня были пробелы в моем x:Name.Как только я удалил пробелы и очистил раствор, он работал нормально.

Неверно

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

Правильно

<button Text="Check In" x:Name="CheckIn">
0 голосов
/ 05 ноября 2018

Мой случай немного отличается. У меня есть проект 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 файле, бла-бла. Похоже, эта проблема возникает, когда имя пространства имен совпадает с именем класса . Я должен изменить их ниже, что привело к исчезновению ошибки.

файл .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>
0 голосов
/ 29 августа 2016

У меня была похожая проблема, но моя проблема заключалась в том, что я удалил пару папок / пространств имен из библиотеки пользовательского интерфейса WPF и забыл удалить соответствующие записи XmlnsDefinition из файла AssemblyInfo.cs библиотеки.Все они указывали на "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:], поэтому он искал их при перестроении. Удалил оскорбительные строки и так далее.

Подумал, что поделюсь с кем-нибудь еще, кто сделал что-то подобное и мог почесать голову.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...