Использование функций .NET 3.5 в .NET 2.0 .... и это работает? - PullRequest
1 голос
/ 18 июля 2011

Мое приложение .NET работает как плагин к настольному приложению C ++ MFC, которое предоставляет .NET SDK. Основное приложение отвечает за загрузку .NET, прежде чем оно загружает какие-либо плагины. Я компилирую свой проект под .NET 3.5, и следующий тестовый код работает просто отлично:

    MainApp.WriteLine("MyPlugin running on .NET {0}.{1}", _
                       System.Environment.Version.Major, _
                       System.Environment.Version.Minor)

    Dim data As Int32() = New Int32() {1, 1, 1, 1, 4, 4, 4, 4, 12, 12, 12, 12}
    For Each distinctValue As Int32 In data.Distinct()
      MainApp.Write(distinctValue.ToString() & ", ")
    Next

Это код Linq, который должен работать только на .NET 3.5, верно? Однако, когда он печатает сообщение о версии, он утверждает, что «MyPlugin работает на .NET 2.0»

Почему / Как это работает, и можно ли рассчитывать на его постоянную работу, если установлен .NET 3.5?

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

По-видимому, он сообщает о базовой версии .NET, которая является 2.0.Это не было обновлено до версии 4.0, потому что основной код тот же.

1 голос
/ 18 июля 2011

Некоторые функции в .net 3.5 являются только синтаксическим сахаром, и компилятор компилирует их в MSIL, который может быть выполнен во время выполнения 2.0.
Таким образом, вам нужна только VS 2008 и .net 3.5 на вашей машине для разработки, но машинам, на которых будет работать скомпилированное приложение, требуется только среда выполнения 2.0.

См. Этот вопрос здесь на SO:
Какие функции .NET 3.5 можно использовать в приложении .NET 2.0?

...