2009-10-05 2 views
9

Как далеко сработало программное обеспечение, скомпилированное для .NET 3.5, перед сбоем в системе, на которой установлен .NET 2.0?Запуск программного обеспечения, созданного для .NET 3.5, в системе с установленным только .NET 2.0

Приложение, которое я разрабатываю, использует WPF и требует .NET 3.5, но я хотел бы показать удобное для пользователя диалоговое окно (а не сбой), если пользователь не установил его.

Существуют ли стандартные способы для этого или официальная документация Microsoft на нем?


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

+0

Возможно, это зависит от того, зависит ли ваша программа от любых 3.5 сборок (например, LINQ). Я очень любопытна, хотя сама. –

ответ

6

Это (возможно) не сбой, пока он не попытается использовать dll, которому требуется 3.5. Если исполняемое приложение может проверить версию перед использованием каких-либо 3.5 конкретных DLL, вы можете отобразить диалог winform, и вы должны быть в порядке. Ваша самая безопасная ставка будет заключаться в том, чтобы exe стать сборкой 2.0 и сделать все ваши данные 3.5 в отдельной dll, которая скомпилирована против 3.5. Вы можете сделать свой чек в dll 2.0, прежде чем он загрузит любую из ваших 3.5 сборок.

3

.NET 3.5 использует среду выполнения .NET 2.0, поэтому приложение начнет совершенно нормально (однако будет сбой при попытке загрузить 3.5 сборки). Вы можете проверить Environment.Version, чтобы узнать, работает ли он на .NET 3.5, и если у вас нет стандартного MessageBox.Show.

+1

Environment.Version указывает только версию CLR, а не сборку .NET. Официальный способ проверить версию через реестр: http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-packs-are-installed –

3

Считаете ли вы использование развертывания ClickOnce? Агент проверяет и устанавливает любые требуемые элементы, которые вы указываете, включая .Net. Это также делает нажатие обновлений вашего приложения довольно безболезненным.

+0

Вы можете Не полагайтесь на это - особенно в корпоративных средах, где пользователи не будут иметь доступ администратора к машине. – ChrisF

+0

Если у них нет необходимых прав на установку, то любой способ установки завершится с ошибкой. –

+0

В моей конкретной ситуации приложение будет развернуто в системах, которые не имеют доступа к сети. Я раньше не использовал ClickOnce, но для большинства ситуаций это похоже на приятное решение. –