Проблемы после копирования элементов управления XAML из приложения WPF в библиотеку классов
В процессе рефакторинга некоторого кода я столкнулся с несколькими ошибками сборки, такими как эти:
Файл проекта библиотеки не может указывать элемент ApplicationDefinition.
Файл проекта содержит недопустимое значение свойства.
Как можно устранить эти ошибки?
Ответы
Ответ 1
При копировании и вставке файлов либо в проект, либо в другой проект Visual Studio имеет неприятную привычку не сохранять одно и то же свойство BuildAction. Он часто изменяет действие сборки на кажущуюся случайную величину, например. ApplicationDefinition, что приводит к ошибке сборки.
Проверьте (в окне свойств Visual Studio с файлом, выбранным в обозревателе решений), что каждый из ваших .xaml файлов имеет свойство BuildAction Страница и ваш код файлы имеют свойство BuildAction Компилировать.
Ответ 2
Вы также можете увидеть это, даже если ваши действия сборки установлены правильно. Например, если вы запустите проект в качестве приложения, а затем переключите его на библиотеку классов. В этом случае вам также необходимо запомнить App.xaml(и соответствующие App.cs).
Ответ 3
Действие по созданию элемента управления Xaml должно быть изменено с ApplicationDefinition на Page (к этому свойству можно обратиться, щелкнув правой кнопкой мыши элемент управления в древовидной структуре Solution Explorer и выбрав свойства).
Ответ 4
Это также когда мы скопируем файл Image/XAML в проект ClassLibrary.
Измените свойство свойства сборки этого изображения на ресурсы
Ответ 5
Спустя 2 года я пришел к поиску с тем же вопросом, но смог использовать приведенные выше комментарии, чтобы исключить другие варианты и, в конце концов, найти ответ, когда заметил, что каждый из двух проектов имеет один и тот же файл с именованным именем .xaml в пределах одного решения.
Абстрактный пример
1 решение, которое имеет 2 проекта: PRINTNOTESPROJ и MAKENOTESPROJ.
Во время разработки я использовал окно XAML в MAKENOTESPROJ, которое должно фактически быть частью PRINTNOTESPROJ в исполняемых файлах Release.
При переключении на Build- > Release я просто нажал на "PrintWindow.XAML" (в MAKENOTESPROJ и с дочерним принтеромWindow.xaml.cs) и DRAGGED на мой PRINTNOTESPROJ.
* Это ключ. Я забыл, что это только COPIES связанные файлы с новым проектом [по крайней мере в VS 2010]. С этого момента я получил вашу ошибку, пока не удалю "PrintWindow.xaml" из моего оригинального проекта MAKENOTESPROJ.
Надеюсь, это имеет смысл... Прокомментируйте с вопросами!