2010-07-22 3 views
0

Эй, ребята, я просто написал приложение с помощью C# и готов его развернуть. Никогда ранее не развертывалось приложение C#.Развертывание приложения C# - пользователю необходимо установить .NET-инфраструктуру?

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

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

+3

Java похож на .NET на то, что пользователю нужно будет загрузить JRE для запуска вашего Java-приложения. Любой вариант будет работать нормально. Посмотрите Моно для запуска .NET на OSX и Linux. – drharris

+0

Спасибо, ребята, за помощь. Многому научился. Мой вопрос в том, как я могу распространять свое приложение со старой версией фреймворка, чтобы больше пользователям не нужно было устанавливать новую .net-версию? Я использую VC# 2010 –

+2

Изменение целевой структуры http://msdn.microsoft.com/en-us/library/bb398202.aspx –

ответ

8

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

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

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

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

+0

Есть ли причина, почему пользователь с окнами 7 не имеет установленной рамки? Как узнать, какую версию я использую? Могу ли я изменить структуру .net на более старую версию для большей совместимости? –

+0

@whydna вы можете найти эту информацию здесь: http://en.wikipedia.org/wiki/.NET_Framework - в Windows 7 .NET 3.5 по умолчанию. – Jesper

+0

Лучше всего распространять платформу .NET с вашим приложением. http://support.microsoft.com/kb/324733 – MCain

3

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

+0

Каковы мои возможности для совместимости с кросс-платформой теперь, когда я написал приложение в C#? –

+0

Ваш лучший выбор для кросс-платформенного C# - использовать Mono (как я и некоторые другие говорят в их ответах). – Justin

2

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

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

1

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

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

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

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

1

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

Посмотрите на проект Mono, насколько это работает на Linux и Mac:

http://mono-project.com/Main_Page

Одна вещь, вы можете рассмотреть использует старую версию платформы .NET, чтобы гарантировать, что наибольший количество людей установлено. Я бы использовал .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) GUI на данном этапе. Вам придется либо использовать Windows Forms, либо создавать разные интерфейсы для разных платформ.

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

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

Для родной GUI Mac вы можете проверить MonoMac:

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

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

http://monodevelop.com/

+0

Спасибо Джастину за ссылки, вы рок! –

+0

Спасибо, whydna, я рад, что смогу помочь. Пожалуйста, подумайте о том, чтобы принять чей-то ответ, если мы сможем вам помочь. – Justin

0

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

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

0

Другие люди дали вам сложные ответы. Ну вот мой простой ответ. .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

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

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