Преобразование проекта приложения WPF в библиотеку UserControl вызывает InitializeComponent () невозможно найти ошибку - PullRequest
0 голосов
/ 17 февраля 2011

Я работал над проектом, в котором я создавал группу пользовательских элементов управления. Позже я решил переместить эти элементы управления в библиотеку UserControl. Вот что я сделал:

  1. Создан новый проект VS2010 (библиотека управления пользователями).
  2. Установите версию .NET на 3,5
  3. Создано несколько папок
  4. Добавлены файлы из предыдущего проекта в мою библиотеку

Однако, когда я пытаюсь собрать свою библиотеку, я получаю следующую ошибку:

Error   14  'EChart.Controls.EPreviewGraphSelector' does not contain a 
definition for 'InitializeComponent' and no extension method 'InitializeComponent' 
accepting a first argument of type 'EChart.Controls.EPreviewGraphSelector'
could be found (are you missing a using directive or an assembly reference?)    
C:\Projects\eControls\EChart\EChart\Controls\EPreviewGraphSelector.xaml.cs  73  18  EChart

Пространство имен моего файла XAML и код позади совпадают. Весь проект, когда это было приложение, а не библиотека, строился нормально.

Вот упрощенный код для моего UserControl:

<UserControl x:Class="EChart.Controls.EPreviewGraphSelector">

Код позади:

   namespace EChart.Controls
    {
        public partial class EPreviewGraphSelector : UserControl
        {
            public EPreviewGraphSelector()
            {
                InitializeComponent();
            }
        }
    }
  • Файл g.cs не создается для этого пользовательского элемента управления!
  • Действие сборки установлено на страницу.
  • У меня есть все необходимые ссылки, добавленные
  • Пользовательский инструмент управления Build установлен на MSBuild: Compile

EDIT:

Я нашел возможное место, где он не компилируется:

Если я закомментирую весь код, кроме конструкторов, будет сгенерирован файл g.cs для моего usercontrol, однако он выдаст ошибку:

Ошибка 2 Тип или имя пространства имен «Windows» не существует в пространстве имен «Microsoft» (отсутствует ссылка на сборку?) C: \ Projects \ eControls \ EChart \ EChart \ obj \ Debug \ Controls \ EPreviewGraphSelector. г. 15 15 EChart

это происходит из этой части g.cs

using Microsoft.Windows.Themes;

Есть идеи, почему это происходит?

Ответы [ 3 ]

1 голос
/ 17 февраля 2011

На самом деле я продал проблему, я не уверен, почему она возникает, но я знаю, как ее исправить.

В моем UserControl у меня была следующая ссылка:

xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Luna"

Вероятно, это было добавлено Blend, когда я разрабатывал некоторые стандартные элементы управления.Когда я нахожусь в режиме разработки, я не получаю никаких сообщений об ошибках.Поэтому, когда я компилирую свой userControl, я получаю файлы g.cs, в которых генерируется мой метод InitializeComponent.Затем я получаю ссылку на Microsoft.Windows.Themes;, потому что эта ссылка была в моем xaml (см. Выше).И когда он компилирует файл g.cs, то происходит сбой, поэтому файл g.cs не генерируется и не существует методов InitializeComponent, что приводит к этой ошибке.

0 голосов
/ 17 февраля 2011

Вы проверили пространства имен существующих файлов, которые вы добавили в новый проект? Я мог бы предположить, что есть несоответствия или разные пространства имен, которые не подходят, или пространства имен в xaml не соответствуют пространствам имен в определениях классов.

0 голосов
/ 17 февраля 2011

Полагаю, вы неправильно настроили проект.Я предлагаю посмотреть на настройки вашего приложения WPF, такие как ссылки, и скопировать их в вашу библиотекуУстановлен ли инструмент сборки пользовательского элемента управления MSBuild: Compile?

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