WPF: g.cs File Pain

У меня ранее была подпапка в проекте приложения WPF под названием "Элементы управления". Он содержал пользовательский элемент управления WPF. Я решил переместить этот пользовательский элемент управления в папку "Views". Поскольку исходная папка была пуста, я решил удалить ее из проекта.

Поскольку пользовательский элемент управления и папка удалены, я получаю ошибку компиляции, потому что пользовательский элемент управления использовал ProjectName.Folder пространство имен, и теперь ничто не ссылается на него. MainWindow.g.cs - это то, что ссылки ProjectName.Controls в заявлении об использовании.

Я знаю, что *.g.cs генерируется VS и не может быть отредактирован, потому что он будет перезаписан. Что я делаю, чтобы не допустить записи этого пространства имен в файл g.cs? Я попытался очистить свое решение / проект и восстановить, но ничего не помогло.

6 ответов

Решение

У меня была локальная ссылка на пространство имен Controls в моем коде Xaml (MainWindow.xaml). Я удалил ссылку, очистил проект и произвел успешную сборку.

В вашем пользовательском управляющем файле

В вашем ClassName.xaml вы должны изменить пространство имен, как показано ниже

<UserControl
    x:Class="YourOldNamespace.ClassName"
    ...
    ...
/>

И в вашем ClassName.xaml.cs вы должны изменить пространство имен, как показано ниже

using System;
using System.Windows;

namespace YourOldNamespace{

   public class ClassName{ ....

}

В обоих файлах вы должны заменить YourOldNamespace на какое-то новое пространство имен по мере необходимости.

Не забывайте также, что вы должны проверить, установлено ли для свойства Build Action при нажатии на затронутый файл XAML значение PAGE (вместо ресурса). Это полезно знать, когда вы копируете XAML из другого проекта, используя копирование-вставку, чтобы сэкономить время.

Также посмотрите на App.xaml и все ваши словари ресурсов. По какой-то причине опция замены в файлах / "Полное решение" VS 2012 не нашла старую ссылку на пространство имен в App.xaml, пришлось вручную изменить это. Исправил это для меня.

У меня были проблемы с файлами g.cs в моих проектах и ​​раньше. Так как они генерируются автоматически, я обычно удаляю файл вручную и перестраиваю.

Не забудьте также изменить свой файл Generic.xaml,

<ResourceDictionary 
                   xmlns:local="clr-namespace:MyOldNameSpace">
</ResourceDictionary>
Другие вопросы по тегам