Проблемы после копирования элементов управления XAML из приложения WPF в библиотеку классов - PullRequest
51 голосов
/ 26 июня 2009

В процессе рефакторинга некоторого кода я столкнулся с несколькими ошибками сборки, такими как эти:

В файле проекта библиотеки не может быть указан элемент ApplicationDefinition.

Файл проекта содержит недопустимое значение свойства.

Как можно устранить эти ошибки?

Ответы [ 5 ]

124 голосов
/ 28 июня 2009

Когда вы копируете и вставляете файлы в рамках проекта или в другой проект, Visual Studio имеет неприятную привычку не сохранять то же свойство BuildAction . Он часто изменяет действие сборки на казалось бы случайное значение, например, ApplicationDefinition , что приводит к ошибке сборки.

Проверьте (в окне свойств Visual Studio с файлом, выбранным в обозревателе решений), что каждый из ваших файлов .xaml имеет BuildAction свойство Page и ваши файлы кода имеют BuildAction свойство Компиляция .

15 голосов
/ 01 мая 2012

Вы также можете увидеть это, даже если ваши действия по сборке установлены правильно. Например, если вы запускаете свой проект как приложение, а затем переключаете его на библиотеку классов. В этом случае вы также должны не забыть удалить App.xaml (и соответствующий App.cs).

3 голосов
/ 26 июня 2009

Действие сборки на элементе управления Xaml должно быть изменено с ApplicationDefinition на Page (к этому свойству можно обратиться, щелкнув правой кнопкой мыши элемент управления в древовидной структуре Solution Explorer и выбрав свойства).

2 голосов
/ 03 июля 2013

Это также происходит при копировании и вставке файла изображения / XAML в проект ClassLibrary.

Измените свойство Build Action этого изображения на ресурсы

1 голос
/ 06 мая 2015

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


Абстрактный пример

1 решение, которое имеет 2 проекта: PRINTNOTESPROJ и MAKENOTESPROJ.

Во время разработки я использовал XAML-окно в MAKENOTESPROJ, которое должно быть частью PRINTNOTESPROJ в исполняемых файлах Release.

После переключения в Build-> Release я просто нажал на «PrintWindow.XAML» (в MAKENOTESPROJ и с дочерним PrintWindow.xaml.cs) и перетащил его на мой PRINTNOTESPROJ.

* Это ключ. Я забыл, что при этом копируются только связанные файлы в новый проект [по крайней мере, в VS 2010]. С этого момента я получал вашу ошибку, пока не удалил «PrintWindow.xaml» из моего первоначального проекта MAKENOTESPROJ.

Надеюсь, это имеет смысл ... Пожалуйста, прокомментируйте с вопросами!

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