Visual Studio C # - Компиляция приложения? - PullRequest
0 голосов
/ 03 января 2012

Я провел прошлую неделю, изучая и кодируя небольшое личное приложение на C #.Я использовал dotnetbar, и все работает нормально, когда я отлаживаю на своей машине, но я хочу скомпилировать все в ОДИН исполняемый файл и заставить все работать ...

Мне сказали, что способ компиляции в Visual Studio былпостроить решение, которое помещает файл в bin / release или bin / debug.Я построил решение в режиме выпуска и запустил приложение, и все работало, но потом, когда я перенес его на другой компьютер для тестирования, ничего не открылось, и примерно через 30 секунд появилась ошибка.

Я предположил, что это dotnetbarТаким образом, я сделал новый проект с одной кнопкой, проверил его на другом компьютере, и он работал.Я добавил один ButtonX из dotnetbar, протестировал его, и он не открывался, и даже не было сообщения об ошибке.

Почему это происходит?Должна ли программа поставляться с dll-файлами dotnetbar, или я могу как-то скомпилировать их с приложением?

Ответы [ 3 ]

2 голосов
/ 03 января 2012

Да, все зависимости должны быть включены ... вы не можете связать их с вашей сборкой.Я предполагаю, что этот dotnetbar (никогда не использовал его), вероятно, установил себя в вашем GAC.Если соответствующий DLL-файл не будет скопирован в папку Release, вам нужно изменить значение «copy local» в ссылке на сборку на true.Это скопирует его в выходную папку, что сделает его доступным при развертывании.

1 голос
/ 03 января 2012

Взгляните на эту информацию с сайта DotNetBar .Вам нужно либо скопировать файлы поверх, либо использовать Проект установки в Visual Studio.

С сайта выше:

DotNetBar для WPF с вашими приложениями выглядит какпросто, как сборка DotNetBar в той же папке, что и исполняемый файл вашего приложения.Вам нужно только распространять сборки, на которые вы ссылаетесь в своем проекте.

Могут быть включены следующие сборки:

DevComponents.WpfRibbon.dll

DevComponents.WpfEditors.dll

DevComponents.WpfDock.dll

DevComponents.WpfSchedule.dll


Редактировать:

На основании ваших комментариев вы можете попробовать сделать Самораспаковывающийся Exe или использующий что-то вроде ILMerge .Я лично не пробовал.

0 голосов
/ 03 января 2012

Похоже, что могут отсутствовать некоторые DLL-файлы, которые должны находиться в той же папке, что и выпуск. Обычно для правильной работы приложения вам нужны все файлы в папке выпуска (поскольку некоторые файлы, которые вы могли записать, могли быть просто созданы как DLL и связаны во время выполнения).

...