31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 617
|
|
1 | |
Вывод программы в релиз31.10.2016, 17:35. Показов 14612. Ответов 11
Метки нет (Все метки)
Здравствуйте. Написал программу, в процессе разработки устанавливал Nuget пакет Microsoft.Office.Interop.Excel. После окончания работы в папке bin есть две папки Debug и Release. Release пустая, а в Debug лежит экзешник моей программы и еще несколько файлов. Интересует следующее:
1) Зачем папка Release нужна? 2) Если запустить экзешник на другом компьютере, то программа вылетает с ошибкой, видимо пакета этого не хватает. Пробовал .dll положить в одну папку с exe файлом, то же не работает, с той же ошибкой вылетает. Как запускать программы на других машинах? 3) Чем можно запаковать exe файл и все dll, чтобы был один красивый экзешник, который можно было запустить на любой машине и он работал себе спокойно?
0
|
31.10.2016, 17:35 | |
Ответы с готовыми решениями:
11
Релиз программы Релиз программы без зависимости от .NET PlayMarket. Деактивировать последний релиз программы Phonon при компиляции релиз программы выдает ошибку |
31.10.2016, 17:43 | 2 |
Release - оптимизирует код (грубо говоря).
Debug - все собирается точно так как Вы написали без оптимизации. При "кривом" написании кода (особенно в больших проектах) - Release и Debug могут работать по разному. Можете выбрать как собрать проект под Release или Debug . Какой что пишет? в смысле установщик сделать? Что значит запокавать? Или что бы одним файлом все было?
1
|
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 617
|
|
31.10.2016, 17:51 [ТС] | 3 |
0
|
31.10.2016, 17:55 | 4 |
1
|
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 617
|
|
31.10.2016, 18:01 [ТС] | 5 |
0
|
933 / 461 / 233
Регистрация: 02.06.2016
Сообщений: 731
|
|
31.10.2016, 18:35 | 6 |
Chizel, больше похоже на то, что приложению прав не хватает. Пробовали запускать от имени администратора?
выберите перед компиляцией релизную конфигурацию, тогда он в папку Release положит exe'шник без всякой отладочной фигни.
2
|
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 617
|
|
31.10.2016, 19:00 [ТС] | 7 |
0
|
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,638
|
|
31.10.2016, 19:17 | 8 |
Совсем-совсем одним файлом не получится. Обязательно нужно будет, чтобы в системе была установлена нужная версия .NET Framework. Полностью "самодостаточные" EXE-шники для .NET пока сделать невозможно (да и не особо кому нужно).
Упаковывать всё хозяйство в один EXE, крайне тупое занятие. Меньше он от этого не станет, а на удобстве использования это никак не отразится. Ну а если тебе действительно хочется фигнёй позаниматься, то можешь или посмотреть в сторону ILMerge как выше уже порекомендовали или затолкать все DLL-ки в ресурсы и подгружать их вручную подписавшись на событие Domain.AssemblyResolve. Есть ещё третий вариант: assembly probing. Это когда все DLL-ки складываются в отдельную папочку рядом с EXE-шником и в app.config указывается, где CLR должна их искать. Последний вариант самый адекватный. Хотя вру. Самый адекватный вариант - устанавливать программу вместе со всем её барахлом с помощью установщика любой сложности и выкидывания ярлыка на рабочий стол или в меню. Тогда вообще пофигу всем сколько у твоей программы DLL-лок и где они и как лежат.
0
|
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 617
|
|
31.10.2016, 19:26 [ТС] | 9 |
По поводу упаковки понятно. А вот что с ошибкой делать?
Программу делал используя .Net Framework 4.5.1, на той машине, на которой не запускается 4.5.2 стоит. Может в этом дело?
0
|
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,638
|
|
31.10.2016, 19:30 | 10 |
В ошибке говорится что-то про COM-сервис. Видимо твоя программа завязана на некий COM-сервис, которого на другой машине нет (или он не той версии). Так же я увидел заветное слово EXСEL, что говорит о том, что твоя программа хочет EXСEL, но не видит COM-сервиса для работы с ним (или самого офиса в системе нэма).
0
|
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 617
|
|
31.10.2016, 19:42 [ТС] | 11 |
Точно, ступил я, офиса то там нет Поставил офис, все запускается и работает, если запускать из папки Debug, если просто exe файл вытащить и положить где-нибудь, то не запускается, dll кидал ему в эту же папку, не помогло. Я еще ссылку добавлял, когда разрабатывал, на работу с MS SQL, может эту dll тоже надо ему? Но в папке packeges больше никаких dll нет, только та, для работы с Excel которая.
0
|
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,638
|
|
31.10.2016, 19:47 | 12 |
Сообщение было отмечено Chizel как решение
Решение
В папке Debug, помимо самой программы могут лежать используемые ею DLL-ки и конфигурационные файлы. В packages лезть не нужно, студия сама оттуда всё что нужно скопирует.
1
|
31.10.2016, 19:47 | |
31.10.2016, 19:47 | |
Помогаю со студенческими работами здесь
12
Релиз консольной программы с SNMP запросами - найти ошибку в коде Релиз Релиз Релиз 8.5.3 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |