2014-01-24 2 views
0

Я кодирую простое приложение, которое нужно переносить (пользователь может просто запустить его, нажав на .exe без необходимости запуска установщика).Как сделать программное обеспечение портативным с C#?

Все остальные вопросы по этой теме, которые я нашел в StackOverflow, хотят сделать .NET Framework «доступным» с помощью программного обеспечения, но мне это не нужно.

Обходной путь, который я нашел, собирается/bin/Debug в папке проекта и использует там .exe, но это кажется «неправильным». Есть ли другой способ сделать программное обеспечение, написанное на C# portable?

Спасибо!

EDIT: Хорошо, я действительно тупой и задал все неправильные вопросы. Однако ваши ответы указали мне в правильном направлении. Я хотел знать, как генерировать .exe для отправки друзьям. Мне нужно было изменить это на «Release» и нажать F6. Я добавил это так, если бы кто-то с теми же «сомнениями», что у меня был, мог легко найти ответ. Благодаря!

+0

Все наоборот: любое приложение переносится по умолчанию. Просто не делайте это, полагаясь на установщика, и все в порядке. – zerkms

ответ

5

Переход к bin/Debug и использование DLL там is не так.

Вместо этого создайте и скопируйте файл из bin/Release.

Если в папке есть что-то еще (кроме * .pdb), тогда остерегайтесь. Вашему приложению могут потребоваться эти дополнительные файлы. Например, app.config.

+0

Хотя это совершенно правильно - это не имеет никакого отношения к вопросу (вопрос касался мобильности) – zerkms

+0

@zerkms: А? В этом вопросе говорится: «Обходной путь, который я нашел, - это/bin/Debug в папке проекта и использовать там .exe, но это кажется« неправильным ». Вопрос в том, подходит ли это, и ответ «Да, за исключением одной детали». –

+0

Должно быть, мне что-то не хватает: -S – zerkms

1

Пока машину вы хотите, чтобы запустить его на .NET имеет структуру, вы можете сделать любое приложение .NET переносимым. Если приложение, которое вы создаете, не имеет зависимостей, отличных от .NET, то оно уже полностью переносится. Даже если у него есть зависимости, просто включайте те, у которых есть исполняемый файл.

0

Если вы используете элементы управления по умолчанию, это должно быть хорошо, если на вашем компьютере установлена ​​версия фреймворка вашего программного обеспечения. Если вы используете сторонние элементы управления, вы можете отправить dll в файл .exe при компиляции. Обратите внимание, что чем больше dll вы вставляете, тем больше будет файл .exe.

+2

«чем больше dll вы вставляете, тем больше будет файл .exe» --- НЕТ СПОСОБА !!! – zerkms

+0

@zerkms Я сказал что-то не так? –

+2

Встраивать библиотеки DLL не существует. Вы можете использовать инструмент, например, «ILMerge» позже, но он имеет значительные ограничения. –

1

Чтобы развернуть на комментарии Zerkms'S:

Каждого программного обеспечения переносят по умолчанию. Установщики - это способ сообщить программе поиск ресурсов в определенном месте, что означает, что если места там нет, например: C: \ Windows, то программа не сможет работать.

До тех пор, пока у вас есть приложение, есть ресурсы, уже находящиеся в exe или в корневом каталоге (например, где программа, а не где она должна быть), тогда все будет в порядке.

2

Все приложения .NET являются «переносимыми», если на компьютере, на котором вы его запускаете, есть версия .NET, на которую вы нацеливаетесь (или совместимую версию). Ключевым моментом здесь является обеспечение того, чтобы ваше приложение не зависело от того, что установщик позаботится о том, чтобы вы работали над вашим приложением. Примеры включают: зарегистрированные DLL (например, сборки Interop), ключи реестра или компоненты, которые должны быть найдены в определенных местах (например, что-то хранится в папке AppData пользователя).

Смежные вопросы