Вопрос

Предположим, у меня есть какой-то код, который теоретически мог бы скомпилироваться против Любой версия .net Framework.Подумайте "Привет, мир", если хотите.

Однако, если я действительно скомпилирую код, я получу исполняемый файл, который выполняется против одного конкретный версия.

Есть ли какой-нибудь способ организовать все так, чтобы скомпилированный exe-файл просто запускался с любой версией, которую он найдет?Я сильно подозреваю, что ответ будет отрицательным, но я был бы рад, если бы мне доказали обратное...


Редактировать:Что ж, я пойду к подножию нашей лестницы.Я понятия не имел, что более поздние фреймворки будут с радостью запускать exe-файлы, скомпилированные в более ранних версиях.Спасибо за все ответы!

Это было полезно?

Решение

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

Другие советы

Прочитайте сообщение ScuttGu о Поддержка нескольких таргетингов по сравнению с 2008 годом

Одно из больших изменений, которые мы вносим начиная с версии VS 2008, заключается в поддержке того, что мы называем "Мульти-таргетинг", что означает, что Visual Studio теперь будет поддерживать таргетинг на несколько версий .NET Framework, и разработчики смогут начать пользоваться преимуществами новых функций, предоставляемых Visual Studio , без необходимости постоянно обновлять свои существующие проекты и развернутые приложения для использования новой версии библиотеки .NET Framework.

Теперь, когда вы открываете существующий проект или создаете новый с помощью VS 2008, вы можете выбрать, какая версия .NET Платформа для работы с - и IDE обновят свои компиляторы и набор функций, чтобы соответствовать этому.Среди прочего, это означает, что функции, элементы управления, проекты, шаблоны элементов и сборки ссылки, которые не работают с этой версией фреймворка, будут скрыты, и при создании вашего приложение вы сможете взять скомпилированный результат и скопировать его на компьютер, на котором установлена только более старая версия .NET Framework, и вы будете знать, что приложение будет работать.

Таким образом, вы можете использовать VS2008 для разработки проектов .NET 2.0, которые будут работать как на .NET 2.0, 3.0, так и на 3.5

Помимо мультиаргетинга, фреймворки обратно совместимы, поэтому что-то, скомпилированное до 1.0, будет работать на 1.1 и 2.Что - то , скомпилированное на 1.1 , будет запущено на 2 ...и т.д.

Я знаю @Джон Бокер является правильным, когда дело доходит до .Библиотеки сетевых классов.Вы можете скомпилировать библиотеку классов для .Net 1.1, а затем использовать ее в проекте .Net 2.0 или выше.

Я подозреваю, что то же самое верно и для исполняемых файлов.

с 2005 и 2008 годов - да (на CLR 2.0)

С 2003 года - нет..потому что он компилируется до CLR 1.1

Теоретически вы могли бы написать некоторый код, используя #if (DOTNET35) и тому подобное, чтобы не использовать функции, не известные компиляторам, а затем запустить нужный компилятор в приложении...Однако я сомневаюсь в полезности этого.

Ну, AFAIK, все .СЕТЕВЫЕ версии (кроме версии 1.x) компилируются в один и тот же байт-код.В случае C # все новые функции являются просто синтаксическим сахаром, который преобразуется в конструкции C # 2.0 при компиляции.Ключевой момент, когда что-то может пойти не так, - это когда вы используете конкретные библиотеки DLL на C # 3.0 или 3.5.Они плохо работают с платформой .NET 2.0, поэтому вы не можете их использовать.

Я действительно не могу придумать обходной путь для этого, извините :(

По теме which .NET Framework, которую установил пользователь, также есть новая опция с профилем клиента, доступная с .NET 3.5 SP1.По сути, это позволяет вам поставлять небольшую (277 КБ) загрузочную программу, которая загружает и устанавливает необходимые файлы (подмножество полной версии .NET framework).

Для получения дополнительной информации и общих советов по созданию небольшой .СЕТЕВОЙ установки смотрите Это замечательное запись в блоге Скотта Хансельмана.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top