Развертывание приложения c # - пользователю нужно установить .net framework? - PullRequest
0 голосов
/ 22 июля 2010

Привет, ребята. Я только что написал приложение, используя c #, и готов к его развертыванию. Никогда ранее не развертывал приложение c #.

Я развернул его, и VC # вывел файл приложения, папку приложения и установщик. Один из моих пользователей запустил установщик (Windows 7) и получил приглашение загрузить / установить .net framework - это заняло более 10 минут. Это неприемлемо из-за того, насколько просто мое приложение.

Кроме того, мне нужно, чтобы это приложение могло работать на Mac OSX и Linux, если это возможно. Если бы я написал это на Java вместо этого (плохое планирование с моей стороны). Какие у меня варианты?

Ответы [ 8 ]

8 голосов
/ 22 июля 2010

C # компилируется в байт-код, который запускается на CLR , виртуальной машине, которая является ядром .NET Framework. Так что да, вам нужен .NET Framework для этого.

Большинство текущих версий Windows (XP, Vista, 7 и т. Д.) Поставляются с предварительно установленной версией .NET Framework, поэтому пользователям не нужно загружать и устанавливать ее. Однако вы, возможно, использовали версию, которая еще не установлена ​​на компьютерах (некоторых из) ваших пользователей.

Для Linux и Mac OS X существует Mono , представляющая собой реализацию с открытым исходным кодом .NET, но она не содержит всего, что есть в Microsoft .NET, поэтому ваша программа может работать не полностью на Mono .

Использование Java не является реальным решением в том смысле, что вашим пользователям потребуется загрузить и установить JRE (Java Runtime Environment) для запуска Java-программ, очень похожих на .NET Framework. Преимущество, если бы вы использовали Java, заключается в том, что Java гораздо более кросс-платформенно совместима, чем .NET (Microsoft не заинтересована в том, чтобы запускать .NET на чем-то еще, кроме Windows).

3 голосов
/ 22 июля 2010

.NET приложения требуют .NET Framework.Приложения Java требуют JRE.Ваше приложение простое, потому что .NET проделал большую работу за вас.Многие компании пишут настольные приложения на C ++, но вам придется помнить о кроссплатформенных проблемах.

2 голосов
/ 22 июля 2010

Да, для любого языка, который компилируется для запуска в управляемой среде выполнения (.NET или Mono CLR, Java JVM), вам необходимо установить эту среду выполнения.Приложение AC # может компилироваться для запуска в Windows на .NET CLR или на всех платформах, о которых вы упомянули, для запуска в среде исполнения Mono.В качестве альтернативы, Java-приложение может быть скомпилировано для запуска на Java JRE, которое также совместимо со всеми упомянутыми вами платформами.

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

1 голос
/ 22 июля 2010

Приложение AC # будет нуждаться в реализации CLR (.NET), работающей на локальном компьютере для запуска.Java-приложению понадобится реализация JVM, так что на самом деле он ничем не отличается.В Windows я бы ожидал, что большинство людей установят .NET.

Взгляните на проект Mono, насколько он работает на Linux и Mac:

http://mono-project.com/Main_Page

Одна вещь, которую вы можете рассмотреть, - это использовать старую версию .NET Framework, чтобы гарантировать, что ее установит наибольшее количество людей.Я бы использовал .NET 3.5 или даже 2.0, если вам не нужны новые интересные функции.Например, он уже был установлен в Windows 7.

Поскольку пользователю Windows 7 нужно было загрузить платформу, я предполагаю, что вы в настоящее время ориентируетесь на .NET 4, что означает, что вы должны использовать Visual Studio 2010 (или экспрессверсия).Вот ссылка, которая говорит вам, как настроить таргетинг на другую версию фреймворка:

http://msdn.microsoft.com/en-us/library/bb398202.aspx

Небольшое замечание о Mono, это отличный кроссплатформенный вариант, но он нена этом этапе поддержите структуру графического интерфейса Windows Presentation Foundation (WPF).Вам придется либо использовать Windows Forms, либо создавать разные внешние интерфейсы для разных платформ.

Если вы хотите создать графический интерфейс Linux (также доступный в Windows и Mac), вы можете попробовать GTK #:

http://www.mono -project.com / GtkSharp

Для родного графического интерфейса Mac вы можете проверить MonoMac:

http://mjhutchinson.com/journal/2010/06/09/monomac_in_monodevelop

AnОтличная IDE для кроссплатформенной разработки .NET - MonoDevelop (он будет читать ваши файлы проекта VC #):

http://monodevelop.com/

1 голос
/ 22 июля 2010

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

Что касается кроссплатформенности - в зависимости от того, как написано ваше приложение, это может быть просто или сложно.

Возможно, вы захотите взглянуть на Silverlight. Это напрямую поддерживается в OS X и работает в Linux через Moonlight.

Другой альтернативой является использование Mono для запуска приложения .NET на других платформах.

0 голосов
/ 22 июля 2010

Вы можете изменить целевой каркас на вкладке свойств. Если вы запускаете проект в VS2008, по умолчанию используется .net 3.5, а для VS2010 - .net 4.0. Если вам не нужны расширенные функции, вы можете изменить цель на 2.0, которая к настоящему времени должна быть доступна на большинстве компьютеров (я думаю, более 90%). Обязательно удалите зависимости, которые недоступны в 2.0 (например, System.Linq, System.DataSet.Extensions) и связанный импорт (но компилятор скажет вам, что делать).

0 голосов
/ 22 июля 2010

Другие люди дали вам сложные ответы. Ну вот мой простой ответ. .NET Framework необходим для запуска приложений .NET, так же как Java нуждается в JVM (как сказал MCain). Начиная с Windows Vista, Microsoft включает .NET Framework, встроенный в Windows. Кроме того, в .NET есть версии от 1.0 до 4.0. В Vista и Windows 7 .NET 3.5 устанавливается по умолчанию. Я думаю, ваше приложение предназначено для .NET 4.0, поэтому пользователю Windows 7 нужно было установить .NET Framework . Для меня , если мне придется написать простую программу, я буду использовать .NET 2.0 (более поздняя версия = библиотеки большего размера и т. Д.), Чтобы мои пользователи (если это Vista или Windows 7) не Мне нужно снова установить .NET для запуска моего программного обеспечения. Вы можете выбрать, какую версию .NET вы будете использовать в окне «Новый проект» в Visual Studio.

0 голосов
/ 22 июля 2010

Как и Java, для языков .Net требуется установленная среда выполнения. Полная платформа .Net иногда слишком велика для небольших приложений, поэтому существует ее меньшая версия, называемая компактной структурой с меньшими размерами, которая будет устанавливать и загружать быстрее. Вы можете прочитать об этом по адресу http://msdn.microsoft.com/en-us/netframework/aa497273.aspx. Как отмечается в других ответах, большинство текущих версий Windows поставляются с различными версиями .Net framework, поэтому эта установка может не понадобиться для каждого пользователя.

Что касается кроссплатформенности, Mono позволяет запускать приложения .Net в Linux, я не уверен, что они будут запущены в OSX. Мое предположение, что вы не можете. К сожалению, ваши кроссплатформенные требования сделали .Net плохим выбором, и вам следовало бы пойти с Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...