Конфигурация .Net 'Any Framework' - PullRequest
       20

Конфигурация .Net 'Any Framework'

4 голосов
/ 11 января 2011

Я создал программу на C # .NET 2.0, которая отлично работает также в рамках 3.0 и 3.5.

Но если .NET Framework 4.0 является единственной установленной платформой, она не работает, она требует от пользователяустановить 2.0.

Я нашел следующую конфигурацию в Google:

<startup>
    <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
</startup>

После добавления этого в app.config моя программа работает на .NET Framework 4.0 без проблем!

Я ищу конфигурацию .NET 'Any Framework', в которой моя программа запускается под .NET 2.0, если он установлен, или в .NET 4.0.

Как это сделать?

Ответы [ 4 ]

3 голосов
/ 11 января 2011

Это не работает без конфигурации по проекту . .NET 4 использует другое время выполнения, и при загрузке сборки .NET 2 по умолчанию загружается в версии 2 CLR. Вы можете перенастроить его, чтобы предотвратить такое поведение, и загрузить его в v4 CLR, но это не всегда хорошая идея. Это приводит к тому, что код, который вы пишете, выполняется на платформе, отличной от той, на которой он был спроектирован и протестирован, что может быть проблематичным.

Как правило, проще и лучше просто установить соответствующие требования в системе. Установка .NET 2 очень проста (и поставляется по умолчанию в Vista +). Преимущество в том, что ваша программа запускается на платформе, для которой она была разработана.

2 голосов
/ 14 января 2011

Нашли!

Вот конфигурация для всех, кому это нужно:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
  </startup>
</configuration>
1 голос
/ 11 января 2011

очень трудно найти машину, на которой установлена ​​только 4.0.Совместимые версии .NET 2.0 предварительно установлены на компьютерах с Vista и Win7, они будут запускать вашу программу без проблем.Вы должны иметь девственную машину XP, на которой никогда не было установлено .NET.Может быть, ядро ​​сервера.В этом случае кто-то совершил небольшую ошибку, установив неправильную версию .NET.

Не уверен, как это произошло, пахнет проблемой связиМожет быть, вы не должны оставлять это кому-то другому, чтобы ошибиться.Если системные требования для вашего приложения включают поддержку XP, вам лучше убедиться, что она доступна.Довольно просто с проектом установки.

В противном случае ваш app.config неверен, <requiredRuntime> устарел с .NET 1.0.Надлежащее заклинание <requestedRuntime> и попросите 2.0.50727 и 4.0

0 голосов
/ 11 января 2011

то, что вам нужно, чтобы изменить минимальное требование для приложения.

перейти к настройке проекта, изменить целевую платформу на 2.0, и я думаю, что она будет играть так же, даже если у пользователя есть 2.0 или 4.0 сетевая платформа в их системе

...