Как настроить таргетинг на старые версии фреймворка с использованием VS2005? - PullRequest
1 голос
/ 21 января 2010

На моем компьютере установлены VS2005 и VS2008.

У меня есть .NET Framework 2.0 SP2, 3.0, 3.0 SP2 и 3.5 SP1

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

То, что я пытаюсь сделать, это использовать VS2005, но только с использованием доступных сборок от 2.0. Но в то же время используйте VS2008 и любой другой фреймворк.

Я пытался найти ответ уже на SO, поэтому, если это дуплекс, просто укажите мне ссылку. Спасибо

РЕДАКТИРОВАТЬ: Хорошо, основываясь на том, что другие люди упоминают, и я копаю немного глубже, похоже, что это может быть конкретная версия фреймворка 2.0. Я смотрю на функцию WaitHandle WaitOne, и она вызывает сбой нашего приложения на клиентских ПК, которые утверждают, что у них установлено 2.0. Мы вызываем handle.WaitOne (0), который, если вы посмотрите на спецификацию 2.0 , не показывает, что функция WaitOne с одним параметром типа int. Однако, если я перейду к определению, оно будет отображаться как v2.0.50727 и прекрасно скомпилируется. Поэтому я думаю, что мне нужно нацелиться на конкретную платформу (или убедиться, что у клиента установлена ​​более новая .NET Framework)?

Кроме того, они обновили где-нибудь в Интернете документы MSDN для новых версий?

Ответы [ 5 ]

4 голосов
/ 21 января 2010

В последних выпусках Visual Studio каждый выпуск Visual Studio поддерживал только определенную версию .NET Framework. Например, VS 2002 работал только с .NET 1.0, VS 2003 работал только с .NET 1.1, а VS 2005 работал только с .NET 2.0.

здесь )

Так что я думаю, Visual Studio 2005 будет только делать то, что вы хотите. Начиная с 2008 года, вы можете выбрать, какую платформу нужно настроить:

Unfortunately the VS 2008 multi-targeting support only 
works with .NET 2.0, .NET 3.0 and .NET 3.5    

(из той же статьи)

И наконец:

VS 2008 действительно работает бок о бок, хотя, с VS 2005, VS 2003 и VS 2002. Так что это определенно возможно продолжать ориентироваться на проекты .NET 1.1 используя VS 2003 на той же машине, что и VS 2008.

(из той же статьи)

Обновление:

WaitHandle .. ::. Метод WaitOne (Int32) говорит:

Информация о версии .NET Framework Поддерживается в: 3.5 SP1, 3.0 SP2, 2.0 SP2

Так у вас обоих одинаковый уровень пакета обновлений?

2 голосов
/ 21 января 2010

Microsoft совершила довольно серьезный грех, выпустив .NET 3.5, они изменили открытый интерфейс класса WaitHandle, но не изменили [AssemblyVersion] файла mscorlib.dll, он остался в версии 2.0.0.0. Добавленный метод WaitHandle, безусловно, был важен, мало кто из программистов угадывал правильное значение для аргумента exitContext (false). Но то, что вы не изменили версию, вызвало у вас головную боль.

Нет хорошего обходного пути, кроме как избежать использования новой перегрузки. Или настоятельно рекомендуем вашему клиенту повторно включить Центр обновления Windows. Ориентация на конкретную версию платформы .NET не может работать, поскольку все они получили одну и ту же версию mscorlib.dll.

1 голос
/ 21 января 2010

Я не думаю, что VS2005 позволит вам использовать что-нибудь , но FX2.

И не нужно ничего удалять.

Отредактируйте:

В этом конкретном случае вы можете использовать версию WaitOne(int, bool)false для 2-го).

Можно получить из документов, см. на этой странице MSDN и обратите внимание на верхний правый угол.

Но этот метод был добавлен в Fx2 с помощью Fx3.5 , поэтому он действительно подтверждает ваш вопрос и ответ BinkDev. Вам необходимо выяснить конкретную (минимальную) версию у ваших клиентов и убедиться, что вы хотя бы запускаете / тестируете ее.

Но в качестве лучшей практики, сделайте так, чтобы ваши Клиенты обновили до Fx2SP2 как минимум. Я не уверен, что это решит эту проблему.

1 голос
/ 21 января 2010
0 голосов
/ 08 сентября 2010

VS2005, вы можете изменить файл проекта и включить следующее в раздел.

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