2016-05-03 4 views
2

Я недавно закодировал небольшую программу для определения чисел на картинке, и она зависит от двух библиотек, которые я использовал. (DLL)Создание «портативного» .exe (без установщика)

Поскольку моему целевому компьютеру не разрешено устанавливать программы из-за соображений безопасности, мне нужно создать переносимый файл .exe. .NET установлен на целевом компьютере, но по какой-то причине VS по-прежнему не включает библиотеки, которые я использовал в exe, но вместо этого создает папку приложения с setup.exe, некоторые файлы .DEPLOY и манифест приложения.

Я новичок в VS и .NET в целом, поэтому на этот вопрос может быть легко ответить, но я спрашиваю, так как я не нашел ничего полезного в StackOverflow ни на google.

+2

Похоже, вы используете «развернуть» вместо «строить». В VS вы обычно можете просто взять вывод своего каталога проекта («bin/debug» или «bin/release») и скопировать его на ваш целевой компьютер. –

+0

Вы можете запустить проект и запустить файл .exe без установки. Файл .exe вы можете найти в папке .. \ bin \ Debug –

+0

Оба вышеперечисленных комментария верны, за исключением приложений Win 8, 8.1 и UWP. Вы не получите exe-файл из них и будете вынуждены их обойти на нужном ПК. –

ответ

4

Один из способов сделать это - создать приложение в режиме деблокирования (в выпадающем списке вы можете выбрать Отладка или выпуск). Затем перейдите к C: \ Projects [ProjectName] [ProjectName] \ bin \ Release (расположение папки вашего проекта может отличаться). Вы увидите кучу файлов, но все, что вам действительно нужно, это библиотеки DLL, исполняемые файлы и конфиг, если вы их использовали. Вам не придется выполнять какие-либо настройки, если вы храните необходимые файлы в папке приложения, просто скопируйте их все в папку на целевом компьютере, создайте ярлык, если хотите, тогда вам будет хорошо.

4

Вы можете просто создать приложение и скопировать папку bin/Debug, но это все равно означает, что вам нужно несколько файлов.

Чтобы слить все ссылки в исполняемый файл, используйте ILMerge. Вот some help calling ILMerge.

В принципе, после того, как строительство, вы должны сделать что-то вроде этого:

ilmerge /target:winexe /out:SelfContainedProgram.exe 
    Program.exe ClassLibrary1.dll ClassLibrary2.dll 

Существует только один файл, который нужно отправить вместе.

+1

Похоже, что у него проблемы с расположением своего каталога сборки, а не слияния всех сборок. Этот ответ был бы полезным следующим шагом, но не решает его текущую проблему. Edit: Jup, это лучше;) –

+0

Спасибо @ManfredRadlwimmer –

+1

Я пробовал ILMerge раньше, но были некоторые Исключения, которые я не мог обработать. Спасибо за ответ в любом случае. –

2

Вы можете просто скопировать все свои сборки в любую нужную папку. Просто выберите «Build» из Visual Studio и скопируйте файлы с bin/debug в папку назначения.

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