Comments 42
Майкрософт публикует все больше исходников…
Я этому рад. Не хочется смерти майкрософт))) Но приятно что конкуренция со стороны оперсорс заставиляет майкрософт быть более расторопнее.
Исходники опубликованы под лицензией «readOnly». Интерсно как повлияет это и то, что опубликованы исходники второго фраймворка, на разработку Mono?)
Я этому рад. Не хочется смерти майкрософт))) Но приятно что конкуренция со стороны оперсорс заставиляет майкрософт быть более расторопнее.
Исходники опубликованы под лицензией «readOnly». Интерсно как повлияет это и то, что опубликованы исходники второго фраймворка, на разработку Mono?)
Да они и так были доступны через рефлектор
Честно, никогда не смотрел на сложные сборки через рефлектор))
Но смотрел на дизассемблированный код С++(довольно простой, так что дизассемблировался хорошо) и знаю, по наслышке, что это код даже из классных рефлекторов примерно тоже самое: всех финтов языка (перегрузки, перечисление и т.д.) там вы не увидете.
А даже если рефлектор будет продвинутый и выдаст вам чудо-код, то он будет оформлен не по-человечески)
Да тут свой код через месяц без комментариев, когда видишь, думаешь «неужеле я писал это всего месяц назад?», ничего не помнишь)))
А тут, прям, исходнички… скомпиль и все…
Но смотрел на дизассемблированный код С++(довольно простой, так что дизассемблировался хорошо) и знаю, по наслышке, что это код даже из классных рефлекторов примерно тоже самое: всех финтов языка (перегрузки, перечисление и т.д.) там вы не увидете.
А даже если рефлектор будет продвинутый и выдаст вам чудо-код, то он будет оформлен не по-человечески)
Да тут свой код через месяц без комментариев, когда видишь, думаешь «неужеле я писал это всего месяц назад?», ничего не помнишь)))
А тут, прям, исходнички… скомпиль и все…
Я случайно высказал похожую мысль. Не списывал. Честно! :)
В .Net есть метаданные, так что рефлектор дает вполне читаемый и понятный код, ибо все имена, кроме локальных, сохраняются, все «перечисления, перегрузки» тем более. И даже лямбды и анонимные методы будут представлены в первозданном (почти) виде.
Так что рефлектор — это хорошо. К тому же в исходники от microsoft попадают не все классы.
Так что рефлектор — это хорошо. К тому же в исходники от microsoft попадают не все классы.
Я насчет «перечислениий и перегрузок» ошибся(
Но, в целом, я имел ввиду то, что написал Yustos: habrahabr.ru/blogs/net/38583/#comment_917859
Но, в целом, я имел ввиду то, что написал Yustos: habrahabr.ru/blogs/net/38583/#comment_917859
Если код хорошо структурирован и комментирован, то рефлектор уходит далеко на задний план.
Одно дело посмотреть как IsNullOrEmpty работает. Но, например, мне было очень сложно разобрать способ работы Select у DataTable через рефлектор :(
Даже не представляю себе объем работы, если понадобится отладить сложный кусок по результатам рефлектора.
Надо еще посмотреть. Исходники должны быть во сто крат полезнее рефлектора.
Одно дело посмотреть как IsNullOrEmpty работает. Но, например, мне было очень сложно разобрать способ работы Select у DataTable через рефлектор :(
Даже не представляю себе объем работы, если понадобится отладить сложный кусок по результатам рефлектора.
Надо еще посмотреть. Исходники должны быть во сто крат полезнее рефлектора.
Я не параноик, но есть версия, что открытие исходных кодов под той лицензией, что у них, вставляет палки в колеса таким проектам как mono. Если обнаружат совпадения, то это можно будет использовать в суде.
Я не параноик и очень рад, так как отлаживать код сейчас проще.
Я не параноик и очень рад, так как отлаживать код сейчас проще.
Исходники .NET Framework из-за особой архитектуры .NEТ были доступны изначально. Их можно было дизассемблировать в читаемый вид даже с помощью кустарной проги, написанной «за 10 минут» на самом .NET :) (хотя тут Reflector перешагнул всех)
Чуть позже MS опубликовала Rotor — это спец. проект, в котором была открыта большая часть исходников .NET Framework (с комментариями), и даже исходники некоторых частей CLR. Именно этот релиз очень сильно двинул вперед разработку Mono.
А последнее действие MS — это открытие доступа к некоторым исходникам последней версии .NET Framework с возможностью их дебага (но без возможности изменять что-либо). Естественно при условии, что вы используете Visual Studio. На разработку Mono это скорее всего никак не повлияет.
Чуть позже MS опубликовала Rotor — это спец. проект, в котором была открыта большая часть исходников .NET Framework (с комментариями), и даже исходники некоторых частей CLR. Именно этот релиз очень сильно двинул вперед разработку Mono.
А последнее действие MS — это открытие доступа к некоторым исходникам последней версии .NET Framework с возможностью их дебага (но без возможности изменять что-либо). Естественно при условии, что вы используете Visual Studio. На разработку Mono это скорее всего никак не повлияет.
Как то все у Microsoft сделано через одно место. Как то несколько часов убил пытаясь прикрутить исходники к студии. Не заработало, потому что была неправильная версия .NET фрэймворка, вроде beta. И как это обычно бывает у Microsoft, диагностика просто отвратительная, точнее ее вообще нет, ни сообщений об ошибках, на записей в лог файлах, ничего. Нет чтобы использовать обычные файлы архивов с исходниками, они придумали какой то специальный сервер. Что за маразм?
Некоторые как всегда начинают искать виновного в своей криворукости за пределами своего рабочего стола.
Если Вы не читаете рекомендации по установке ПО на сайте Microsoft, и вдруг у вас во время установки что-то не получается, то это не значит, что Вы-то сделали всё правильно, а в Microsoft как всегда облажались.
Если Вы не знаете, как смотреть логи, то это не значит, что их нет.
Если Вы не знаете, зачем «они придумали какой то специальный сервер», то это не значит, что их решение заведомо неправильное.
В любом случае, умные люди всё установили и радуются, а Вы продолжаете сидеть в луже своей некомпетентности и возмущаться.
Если Вы не читаете рекомендации по установке ПО на сайте Microsoft, и вдруг у вас во время установки что-то не получается, то это не значит, что Вы-то сделали всё правильно, а в Microsoft как всегда облажались.
Если Вы не знаете, как смотреть логи, то это не значит, что их нет.
Если Вы не знаете, зачем «они придумали какой то специальный сервер», то это не значит, что их решение заведомо неправильное.
В любом случае, умные люди всё установили и радуются, а Вы продолжаете сидеть в луже своей некомпетентности и возмущаться.
Господа, объясните мне пожалуйста как блондинке. Раз и навсегда.
На свежеустановленную систему какой .NET Framework нужно ставить?
Microsoft Update предлагает 1.1 и 2.
Интересно, почему и то и другое? Почему не только последнее?
Они не совсем обратно совместимы?
Почему не предлагает ставить 3.5?
Или же закрыть на все глаза и ставить 3.5?
Ну не совсем я понимаю.
Объясните.
На свежеустановленную систему какой .NET Framework нужно ставить?
Microsoft Update предлагает 1.1 и 2.
Интересно, почему и то и другое? Почему не только последнее?
Они не совсем обратно совместимы?
Почему не предлагает ставить 3.5?
Или же закрыть на все глаза и ставить 3.5?
Ну не совсем я понимаю.
Объясните.
Ставь всегда последний Framework (сейчас это .NET Framework 3.5 SP1)
Все фреймворки обратно совместимы
Все фреймворки обратно совместимы
Спасибо.
Потолстел он однако.
Имеется в виду размер дистрибутива.
Потолстел он однако.
Имеется в виду размер дистрибутива.
Потолстел он за счет того, что и сам фреймворк вырос и в инсталлятор включили все возможные версии (x86, x64, ia64).
Интересно об этом написал в своем блоге Scott Hanselman.
А так же сделал сайт SmallestDotNet, что может сэкономить трафик, кому актуально.
Интересно об этом написал в своем блоге Scott Hanselman.
А так же сделал сайт SmallestDotNet, что может сэкономить трафик, кому актуально.
Крипто прав, но это теория.
На практике многие проги требуют именно 2.0
Из личного опыта: ставь сначала второй а поверх 3.5 (sp1)
На практике многие проги требуют именно 2.0
Из личного опыта: ставь сначала второй а поверх 3.5 (sp1)
Вот то, что 1.1 нужно иногда ставить для старых прог — слышал и видел, а насчет 2.0 странно. 3.5 изначально же базируется на 2.0, просто содержит кучу расширений.
Мы с приятелем устанавливали венду ему, и когда дело дошло до драйверов то атишная утилиа (Catalyst Control Panel кажись) потребовала именно второй версии( А у меня ее инсталятора уже даже не было))
Ниже (http://habrahabr.ru/blogs/net/38583/#comment_918900) self описал подробнее
Ниже (http://habrahabr.ru/blogs/net/38583/#comment_918900) self описал подробнее
3.0 полностью включает 2.0 (инсталлятор)
3.5 полностью включает 3.0 и 2.0 (инсталлятор)
Так что ставить 2.0 отдельно нету никакого смысла. Это «матрёшка»
3.5 полностью включает 3.0 и 2.0 (инсталлятор)
Так что ставить 2.0 отдельно нету никакого смысла. Это «матрёшка»
не успел ссылку докинуть: msdn.microsoft.com/en-us/library/47a587hk.aspx
Специально можно ничего не ставить. Если понадобится — он сам скажет какой нужен и предложит скачать.
Я, относительно недавно, обнаружил, что в Висте не стоит фреймвёрк 1.1, и не узнал бы, еслиб старая прога не понадобилась.
Я, относительно недавно, обнаружил, что в Висте не стоит фреймвёрк 1.1, и не узнал бы, еслиб старая прога не понадобилась.
Т.е. если драйвера, а точнее Catalyst Control Panel (от ATI) требуют .Net Framework версии не менее 2 (а драйвера уж хочешь не хочешь а ставить нужно), то ставить именно версии 2?
Или же все же 3.5?
Каким образом можно узнать установлен ли .Net Framework в системе или нет и его версию?
Через «Установка и удаление программ» не предлагать.
Здесь ведь вот в чем вопрос…
на примере эволюции ОС видно, что от версии к версии пользователь получает больше возможностей и всевозможных улучшений (Не будем разводить полемику о частностях. Имеется в виду общий тренд.).т С .Net Framework для конечного пользователя (Петя, который любит ставить разный софт и играть в игрушки) эта закономерность как то стирается.
Особенно это видно при обновлении с Windows Update, Microsoft Update или же с локального WSUS.
Смущает еще одно:
WSUS предлагает обновления как первой линейки .Net Framework так и второй.
Почему одновременно? Разве второй не перекрывает первый?
Очень хотелось бы прочесть развернутую статью на эту тему.
Или же все же 3.5?
Каким образом можно узнать установлен ли .Net Framework в системе или нет и его версию?
Через «Установка и удаление программ» не предлагать.
Здесь ведь вот в чем вопрос…
на примере эволюции ОС видно, что от версии к версии пользователь получает больше возможностей и всевозможных улучшений (Не будем разводить полемику о частностях. Имеется в виду общий тренд.).т С .Net Framework для конечного пользователя (Петя, который любит ставить разный софт и играть в игрушки) эта закономерность как то стирается.
Особенно это видно при обновлении с Windows Update, Microsoft Update или же с локального WSUS.
Смущает еще одно:
WSUS предлагает обновления как первой линейки .Net Framework так и второй.
Почему одновременно? Разве второй не перекрывает первый?
Очень хотелось бы прочесть развернутую статью на эту тему.
Развернуто — долго ждать.
А если кратко, то:
если нужно РАЗРАБАТЫВАТЬ к примеру под .NET 2.0, то должен быть установлен .NET 2.0. Старая добрая Студия 2005 требует именно .NET 2.0. И при её установке он тоже установится, независимо от того, какой фреймфорк уже стоит. Всё потому, что Студия 2005 не знает ничего про фреймфорк 3.0 или 3.5.
С другой стороны, если на компе УЖЕ установлен к примеру .NET 1.1, то винда естественным образом предложит обновить его как независимый продукт. А на компе фреймфорки разных версий замечательно стоят рядом и не жужжат.
С «третьей» стороны, в ту же Висту установлен .NET 3.0, и это означает, что в ней по-умолчанию пойдут ВСЕ приложения, которые написаны на 1.1, 2.0 или 3.0. Более того, если 3.0 устанавливается на чистую машину, то сразу установится и .NET 2.0, т.е. .NET 2.0 как бы входит в дистрибутив 3.0 (потому что 3.0 — это всего лишь набор классов, дополняющий, но не изменяющий 2.0), а если .NET 2.0 уже установлен, то 3.0 просто доустановит все эти WCF, WWF и пр.
Если обобщить, то можно сказать, что дистрибутив каждого следующего фреймворка содержит все необходимое для запуска программ, написанных под предыдущие, но предназначен для разработки только под текущую версию .NET.
А если кратко, то:
если нужно РАЗРАБАТЫВАТЬ к примеру под .NET 2.0, то должен быть установлен .NET 2.0. Старая добрая Студия 2005 требует именно .NET 2.0. И при её установке он тоже установится, независимо от того, какой фреймфорк уже стоит. Всё потому, что Студия 2005 не знает ничего про фреймфорк 3.0 или 3.5.
С другой стороны, если на компе УЖЕ установлен к примеру .NET 1.1, то винда естественным образом предложит обновить его как независимый продукт. А на компе фреймфорки разных версий замечательно стоят рядом и не жужжат.
С «третьей» стороны, в ту же Висту установлен .NET 3.0, и это означает, что в ней по-умолчанию пойдут ВСЕ приложения, которые написаны на 1.1, 2.0 или 3.0. Более того, если 3.0 устанавливается на чистую машину, то сразу установится и .NET 2.0, т.е. .NET 2.0 как бы входит в дистрибутив 3.0 (потому что 3.0 — это всего лишь набор классов, дополняющий, но не изменяющий 2.0), а если .NET 2.0 уже установлен, то 3.0 просто доустановит все эти WCF, WWF и пр.
Если обобщить, то можно сказать, что дистрибутив каждого следующего фреймворка содержит все необходимое для запуска программ, написанных под предыдущие, но предназначен для разработки только под текущую версию .NET.
Еще уточнение:
Есть два вида «инсталляторов» .NET Framework. Первый — это т.н. Microsoft .NET Framework X.X Redistributable Package. Он предназначен для выполнения .NET-приложений текущей версии и более ранних.
А чтобы разрабатывать приложения под конкретный .NET X.X, нужно установить Microsoft .NET Framework X.X Software Development Kit (SDK). Именно он идет с конкретной версией студии (1.1 с 2003-й, 2.0 с 2005-й, 2.0, 3.0 и 3.5 с 2008-й).
Есть два вида «инсталляторов» .NET Framework. Первый — это т.н. Microsoft .NET Framework X.X Redistributable Package. Он предназначен для выполнения .NET-приложений текущей версии и более ранних.
А чтобы разрабатывать приложения под конкретный .NET X.X, нужно установить Microsoft .NET Framework X.X Software Development Kit (SDK). Именно он идет с конкретной версией студии (1.1 с 2003-й, 2.0 с 2005-й, 2.0, 3.0 и 3.5 с 2008-й).
Ставьте 3.5, меньше потом вопросов будет (от ПО).
.NET Framework удивителен тем, что его установка заключается лишь в копировании файлов.
Файлы лежат тут: WINDOWS\Microsoft.NET\Framework\…
Второй не перекрывает первый, а дополняет его. Загляните в папку, указанную выше, вы там увидете следующие папки:
v1.0.3705
v1.1.4322
v2.0.50727
v3.0
v3.5
(так у меня, у Вас может быть больше, может быть меньше).
Как Вы наверное уже догадались, в каждой папке лежат файлы соответсвующего фреймвёрка. Здесь что еще нужно отметить, что в разных папках могут лежать одни и теже файлы, но разных версий. Таким образом сохраняется обратная совместимость.
Если например, кто-то написал программу для .Net 1.0 использующую System.Data, эта программа только 1.0 версию и сможет использовать и она будет её хотеть, несмотря на то, что во всех других папках есть свой System.Data.
Вот так вот, если кратко :)
.NET Framework удивителен тем, что его установка заключается лишь в копировании файлов.
Файлы лежат тут: WINDOWS\Microsoft.NET\Framework\…
Второй не перекрывает первый, а дополняет его. Загляните в папку, указанную выше, вы там увидете следующие папки:
v1.0.3705
v1.1.4322
v2.0.50727
v3.0
v3.5
(так у меня, у Вас может быть больше, может быть меньше).
Как Вы наверное уже догадались, в каждой папке лежат файлы соответсвующего фреймвёрка. Здесь что еще нужно отметить, что в разных папках могут лежать одни и теже файлы, но разных версий. Таким образом сохраняется обратная совместимость.
Если например, кто-то написал программу для .Net 1.0 использующую System.Data, эта программа только 1.0 версию и сможет использовать и она будет её хотеть, несмотря на то, что во всех других папках есть свой System.Data.
Вот так вот, если кратко :)
>.NET Framework удивителен тем, что его установка заключается лишь в копировании файлов
Это очень неправильное утверждение. Установка .Net Framework внутри очень сложна.
Это очень неправильное утверждение. Установка .Net Framework внутри очень сложна.
А вы-то сами заглядывали в эти папки? :) И какие фреймворки ставили на какую систему?
У меня в Vista установлен был 3.5, 3.5SP1 + 3.0 был установлен изначально. Вышеуказанные папки (v1.0, v1.1) есть, но в них только пару конфигов лежит, и ни какого первого фреймворка нету.
Насчет дополнений во фреймворках.
v1.0 была первой версией
v1.1 — исправляла много багов. (v1.0 не включена, просто имеют общую CTL)
v2.0 — опять же, пофиксили баги + добавили много всего нового. (тоже самое, что и v1.1 предыдущие фреймворки включены просто в CTL, но физически они никак не присутствуют после инсталляции)
v3.0 — v2.0 + WPF, WF, WCF, Windows Card Space
v3.5 — v3.0 + AJAX, LINQ, Peer2Peer Networking, WCF and WF Integration
v3.5sp1 — v3.5 + багфиксы, работа с SQL 2008, ADO.NET Data Services Framework, Entity Framework, ASP.NET Dynamic Data ну и ещё по мелочам.
Поэтому, вывод — «дополняют» на сегодняшний день все версии больше 2.0, а предыдущие перекрывают друг друга.
У меня в Vista установлен был 3.5, 3.5SP1 + 3.0 был установлен изначально. Вышеуказанные папки (v1.0, v1.1) есть, но в них только пару конфигов лежит, и ни какого первого фреймворка нету.
Насчет дополнений во фреймворках.
v1.0 была первой версией
v1.1 — исправляла много багов. (v1.0 не включена, просто имеют общую CTL)
v2.0 — опять же, пофиксили баги + добавили много всего нового. (тоже самое, что и v1.1 предыдущие фреймворки включены просто в CTL, но физически они никак не присутствуют после инсталляции)
v3.0 — v2.0 + WPF, WF, WCF, Windows Card Space
v3.5 — v3.0 + AJAX, LINQ, Peer2Peer Networking, WCF and WF Integration
v3.5sp1 — v3.5 + багфиксы, работа с SQL 2008, ADO.NET Data Services Framework, Entity Framework, ASP.NET Dynamic Data ну и ещё по мелочам.
Поэтому, вывод — «дополняют» на сегодняшний день все версии больше 2.0, а предыдущие перекрывают друг друга.
«Перекрывает» тут неуместное слово. Global Assembly Cache в .NET устроен так, что обеспечивает мирное сосуществование разных версий одних и тех же сборок, поэтому установка новой версии .NET Runtime никогда не затирает предыдущих версий. Тем самым гарантируется, что программы, разработанные для более ранних версий, будут и дальше нормально работать, т.к. для них ничего не изменилось. Отсюда и обновления для каждой выпущенной версии отдельно.
Другое дело, что .NET 2.0 Runtime, устанавливаемый вместе с .NET 3.5, немного отличается от оригинального .NET 2.0 в плане функциональности (а не только багфиксами), что теоритически способно нарушить совместимость. Отличия между ними описаны здесь и здесь. На практике же шансы случайно что-то зацепить из SP1 довольно малы, и совсем этого избежать поможет вот этот пост.
Другое дело, что .NET 2.0 Runtime, устанавливаемый вместе с .NET 3.5, немного отличается от оригинального .NET 2.0 в плане функциональности (а не только багфиксами), что теоритически способно нарушить совместимость. Отличия между ними описаны здесь и здесь. На практике же шансы случайно что-то зацепить из SP1 довольно малы, и совсем этого избежать поможет вот этот пост.
Хорошая новость. Пару раз исходников очень не хватало.
Кто-нибудь может их выложить чтобы скачать?
p.s. У меня нету windows, а посмотреть интересно.
p.s. У меня нету windows, а посмотреть интересно.
Тот Самый SSCLI «Rotor» 2.0.
Думаю, для начала этого будет достаточно:
www.microsoft.com/downloads/details.aspx? FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&displaylang=en
Думаю, для начала этого будет достаточно:
www.microsoft.com/downloads/details.aspx? FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&displaylang=en
Sign up to leave a comment.
Исходные коды .net 3.5 sp1 для отладки в Visual Studio