Сообщество программистов Autodesk в СНГ
		ADN Club => Revit API => Тема начата: Владимир П от 07-11-2015, 15:16:10
		
			
			- 
				Сделал приложение, которое выполняться в Ревите, запускается из "библиотеки классов" dll.
 В этом приложении исходные данные вводятся в обычной WindowsForms.
 Затем захотелось сделать красиво, использовать "Окно" ввода исходных данных на основе WPF.
 Отработал все, что мне нужно для ввода исходных данных в приложении WPF, т. е. получился exe-файл.
 Основная проблема в том, что приложение WPF, напрямую, не собирается в dll.
 Похоже вариантов как внедрить файлы WPF в dll может быть несколько.
 Про обходной путь, т.е. сделать в обычной Win-форме host, тут же сделать пользовательский элемент на основе WPF, внедрить этот элемент в host и т. д. я знаю.
 Но может быть, вообще, такая задача решается как-то проще?
 Пока пробую так: создаю пустой проект по шаблону Revit 2015 Addin, туда добавляю файлы из проекта WPF с диалоговым окном MainWindow.xaml. и MainWindow.xaml.cs. Дальше не знаю, как сделать, чтобы при запуске dll  в Ревит включалось это окно MainWindow.xaml.? или это невозможно?
- 
				Владимир, как я вижу, у вас сейчас полная каша в голове.
 Естественно все можно сделать просто. Самый простой вариант - в той же самой dll, где у вас код надстройки Revit, при выполнении команды открывать форму WPF.
 
 Основная проблема в том, что приложение WPF, напрямую, не собирается в dll.  все прекрасно собирается. В настройках проекта установите OutputType = Class Library.
 
  т.е. сделать в обычной Win-форме host, тут же сделать пользовательский элемент на основе WPF, внедрить этот элемент в host и т. д. я знаю. Какой ужас:) Не знаю где вы нашли такой Workaround, но лучше про него забыть и не вспоминать больше. По крайней мере для данного случая.
- 
				Владимир, как я вижу, у вас сейчас полная каша в голове.
 
 За "кашу" отдельное спасибо! Но вопрос вообще-то, был не про то, что у меня в голове. Как раз, чтобы кашу упорядочить хоть чуть-чуть, я и задаю здесь вопросы. Если же Вас сильно раздражают вопросы начинающих, просто игнорируйте таких "чайников"... Какие проблемы?
 Основная проблема в том, что приложение WPF, напрямую, не собирается в dll.  все прекрасно собирается. В настройках проекта установите OutputType = Class Library.
 
 Ну давайте вместе попробуем: Создаем проект - Приложение WPF - В Свойствах проекта, Тип выходных данных, меняем "Приложение Windows" на "Библиотеку классов".
 После этого нажимаем кнопочку "Собрать решение". В итоге получаем следующую картину, см вложение.
 А именно: Ошибок 2.
 Виктор, Вы вот это имеете в виду, когда говорите, что "все прекрасно собирается"? или у Вас как-то по-другому?
 Ну, ладно бы, у меня одного не получилось. Но я ж потом спросил у Яндекса: c# wpf в dll (поиск). Попробуйте набрать нечто подобное.
 И оказалось немало людей на специализированных форумах тоже обсуждают эту проблему, например:
 CyberForum.ru - форум программистов и сисадминов.
 
  Какой ужас:) Не знаю где вы нашли такой Workaround, но лучше про него забыть и не вспоминать больше. По крайней мере для данного случая.
 
 ну, вот в недрах таких форумов, такие ужасы! сам бы я, со своей кашей в голове, такого никогда бы не сочинил!   ;)
- 
				Если же Вас сильно раздражают вопросы начинающих, просто игнорируйте таких "чайников"... Владимир, да нет, раздражения никакого не было отнюдь. Имел ввиду что собрали все подряд казалось бы не связанные друг с другом проблемы:)
 После этого нажимаем кнопочку "Собрать решение". В итоге получаем следующую картину, см вложение.
 А именно: Ошибок 2.
 Виктор, Вы вот это имеете в виду, когда говорите, что "все прекрасно собирается"? или у Вас как-то по-другому?
 Ну это совсем никакая не проблема. Собственно Visual Studio прямо говорит что здесь не так.
 В случае с "Приложением Windows" генерируется класс Main, задающий точку входа в приложение. Этим собственно и отличается приложение Windows от Библиотеке классов. WPF видимо где то в файле проекта из-за этого добавил элемент ApplicationDefinition. Вернее WPF генерит еще некоторые файлы, в частности класc Main, которые не видны в проекте.
 Собственно проблема решается очень просто. Нужно удалить файл App.xaml и App.xaml.cs через который осуществляется точка входа. Удалив их, все собирается (сам только что проверил:))
 
 ну, вот в недрах таких форумов, такие ужасы! сам бы я, со своей кашей в голове, такого никогда бы не сочинил!    Честно говоря, я в шоке. Такую простую проблему, решать таким извращенным способом:)
- 
				Собственно проблема решается очень просто. Нужно удалить файл App.xaml и App.xaml.cs через который осуществляется точка входа. Удалив их, все собирается (сам только что проверил:)) И я проверил! есть dll из приложения WPF! Спасибо Виктор!