it-swarm.com.ru

Компилировать в автономный исполняемый файл (.exe) в Visual Studio

как я могу сделать автономный EXE в Visual Studio. Это просто простое консольное приложение, которое, я думаю, пользователи не хотели бы устанавливать крошечное консольное приложение. Я скомпилировал простой файл cpp, используя команду Prompt для Visual Studio. Будет ли работать exe, даже если .NET Framework не установлен? Я использовал собственный код C++.

35
Mohit Deshpande

Для всего, что использует управляемую среду (которая включает в себя все, что написано на C # и VB.NET), требуется .NET Framework. Вы можете просто распространять ваш .EXE в этом сценарии, но им нужно будет установить соответствующий фреймворк, если у него его еще нет.

19
Joe

Внутри вашей папки проекта находится папка bin. Внутри вашей папки bin есть 2 папки: Release и Debug. Для вашего отшлифованного .exe, вы хотите перейти в папку Release.

Я не совсем уверен, если это то, что вы спрашиваете

55
Marlon

Если я вас правильно понимаю, да, вы можете, но не в Visual Studio (из того, что я знаю) . Чтобы заставить компилятор генерировать настоящий, автономный исполняемый файл (что означает, что вы используете C #, как и любой другой язык), вы используете программа mkbundle (поставляется с Mono). Это скомпилирует ваше приложение на C # в настоящий исполняемый файл без зависимостей.

Есть много заблуждений об этом в Интернете. Это не противоречит цели .net Framework, как утверждают некоторые люди, потому что как вы можете потерять будущие возможности .net Framework, если вы не использовали эти функции с самого начала? И когда вы отправляете обновления для вашего приложения, не сложно выполнить его через процессор mkbundle перед сборкой вашего установщика. Есть также преимущество в скорости, которое заставляет ваше приложение работать на собственной скорости (потому что теперь оно IS нативное).

В C++ или Delphi у вас та же система, но без среднего уровня MSIL. Таким образом, если вы используете пространство имен или исходный файл (называемый модулем в Delphi), то он компилируется и включается в ваш окончательный двоичный файл. Таким образом, ваш конечный двоичный файл будет больше (читай: «нормальный» размер для реального приложения). То же самое касается частей фреймворка, который вы используете в .net, они также включены в ваше приложение. Тем не менее, умные ссылки бреют значительную сумму.

Надеюсь, поможет!

19
Jon Lennart Aasenden

Я согласен с @Marlon. Когда вы компилируете свой проект C # с конфигурацией Release, вы найдете в папке «bin/Release» вашего проекта исполняемый файл вашего приложения. Это ДОЛЖНО работать для простого приложения.

Но, если ваше приложение имеет какие-либо зависимости от какой-либо внешней библиотеки DLL, я предлагаю вам создать SetupProject с VisualStudio. При этом мастер проекта найдет все зависимости вашего приложения и добавит их (библиотеки) в папку установки. Наконец, все, что вам нужно сделать, это запустить установку на компьютере пользователя и установить программное обеспечение.

3
Pierre-Luc Champigny

У меня никогда не было проблем с развертыванием небольшого консольного приложения, созданного на C # как есть. Единственная проблема, с которой вы можете столкнуться, - это зависимость от платформы .NET, но даже это не должно быть серьезной проблемой. Вы можете попробовать использовать версию 2.0 платформы, которая уже должна быть на большинстве ПК.

При использовании нативного, неуправляемого C++ у вас не должно быть никаких зависимостей от .NET Framework, поэтому вы действительно должны быть в безопасности. Просто возьмите исполняемый файл и любые сопровождающие файлы (если они есть) и разверните их как есть; нет необходимости устанавливать их, если вы не хотите.

1
alex

Вы можете встраивать все dll в основную dll. Смотрите: Встраивание DLL в скомпилированный исполняемый файл

0
Marc van Nieuwenhuijzen

Я не думаю, что возможно сделать то, что спрашивает спрашивающий, который состоит в том, чтобы избежать ада dll, объединяя все файлы проекта в один .exe.

Основным вопросом является красная сельдь. Возникающая проблема заключается в том, что когда у вас есть несколько проектов, зависящих от одной библиотеки, это PITA для синхронизации библиотек. Каждый раз, когда библиотека изменяется, все .exes, которые зависят от нее и не обновляются, ужасно умирают.

Говорить людям, чтобы они изучали С, как это сделал один ответ, высокомерно и невежественно.

0
PHB