Чистота важна в том смысле, что если я попробую на своей (разработческой) машине, то я не могу быть уверен, что записи, которые я там увижу, не от тех паков, которые я сам ставил после.
Версия v4 это точно не Core, внутренних версий старше 4й внутри Windows я пока не встречал, так что видимо оно называется Net Framework.
Тогда утверждение "Рантайм для приложения на .NET это просто библиотека, либо поставляемая вместе с приложением либо взятая из системы." - неверно. Рантайм для .NET framework приложения - это .NET Framework, и он существенно больше, чем "просто библиотека".
Так в чем вопрос?
В том, с чего вы решили, что с Windows поставляется SDK, а не рантайм.
Что и событийную обработку? И асинхронщину с многопоточностью? Неужели до работы с отладчиком так и не дошли за годы практики?
А откуда это внезапно взялось? Речь шла про то, что можно написать код на C# в блокноте на машине, где нет ничего другого, и вам сказали, что можно с равным успехом это сделать в PowerShell.
Ну там ввод-вывод, передача данных. Через внешние файлы будете реализовывать?
Если понадобится - то да. Или можно HTTP-сервер внутри поднять. Если кому-то хочется развлекаться, то там всё есть.
Я же написал уже что неграмотный, так что поделитесь откровением.
Ключевое - вот: "PowerShell accepts and returns .NET objects". Поэтому взаимодействие с .NET - неотъемлемая часть работы в PowerShell (а командлеты просто это прячут под удобный синтаксис).
Лично мне как разработчику - большое: я знаю, что можно сделать из PS, если припрет. Лично мне как админу (если бы я был админом) - тоже больше: я знаю, что PS надо опасаться не меньше, чем любого приложения на .NET.
Так же, как и код на C#, написанный в блокноте - с помощью вывода в консоль и такой-то матери. И это я в свое время как раз делал, так что не понимаю, в чем тут вопрос.
Как взаимодействовать с ним после запуска?
А зачем мне с ним взаимодействовать?
Люди пишут дословно «полная замена компилятору» и «вызов любых функций и методов», чем вводят в заблуждение, поскольку вызывается на самом деле динамически скомпилированная программа, не имеющая никакого отношения к самому скрипту на PowerShell.
Я вас еще раз спрашиваю: вы понимаете, что такое powershell, когда говорите, что вызов кода на .net не имеет к нему никакого отношения?
Я выше по треду уже ответил что на самом деле это не PowerShell такой умный, это код на C# с динамической компиляцией внутри
...и что? Речь как раз о том, что из PS можно вызвать любой код на .NET, в том числе динамически скомилированный. Поэтому, как вам и пишут, из PS можно получить (и люди регулярно получают) доступ к WinAPI.
Запускабельные бинарники вроде csc.exe точно есть только в SDK Присутствует (не установлен как компонент и не удаляем стандартными средствами) и .NET SDK и рантайм
Как формально вы разделяете SDK и рантайм? На основании чего вы говорите, что csc есть только в SDK, хотя он лежит в C:\Windows\Microsoft.NET\Framework64 (это, насколько я помню, папка именно рантайма)?
Да, у нас иначе. Нет никакого смысла делить работу на дискавери и деливери, если больше половины времени эти процессы (анализа и разработки) идут параллельно.
Все, кто работает в IT, знают, что в разработке новых фич продукта и поддержке старых выделяются два последовательных процесса:
Discovery — это все действия до начала разработки.
Delivery — все, что касается создания кода.
Я вот работаю в IT и не знаю этого. Ну и да, вопрос, как вы это собираетесь делить в любой сколько-нибудь активной современной разработке, мне не понятно.
Чистота важна в том смысле, что если я попробую на своей (разработческой) машине, то я не могу быть уверен, что записи, которые я там увижу, не от тех паков, которые я сам ставил после.
Я это не могу проверить, у меня нет чистой лабораторной машины (ну и это для меня не важно, на самом деле).
Я уже достаточно "старше", чтобы не стесняться использовать то, что мне удобно.
Это цитата из вступительного раздела, а операции с объектами и их свойствами - третья глава в 101. Так что это где-то в районе базового уровня.
...почему вы считаете, что это SDK?
А почему должен?
Это называется .NET Framework
Есть. Идете вот сюда и смотрите, какие версии имеют зеленую галочку (поставлены по умолчанию): https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/versions-and-dependencies#version-information
(я, кстати, был неправ, и рантаймом правильно называть CLR, но это еще более третья вещь, которая у вас вообще нигде не упоминается)
Тогда утверждение "Рантайм для приложения на .NET это просто библиотека, либо поставляемая вместе с приложением либо взятая из системы." - неверно. Рантайм для .NET framework приложения - это .NET Framework, и он существенно больше, чем "просто библиотека".
В том, с чего вы решили, что с Windows поставляется SDK, а не рантайм.
А откуда это внезапно взялось? Речь шла про то, что можно написать код на C# в блокноте на машине, где нет ничего другого, и вам сказали, что можно с равным успехом это сделать в PowerShell.
Если понадобится - то да. Или можно HTTP-сервер внутри поднять. Если кому-то хочется развлекаться, то там всё есть.
Ключевое - вот: "PowerShell accepts and returns .NET objects". Поэтому взаимодействие с .NET - неотъемлемая часть работы в PowerShell (а командлеты просто это прячут под удобный синтаксис).
Лично мне как разработчику - большое: я знаю, что можно сделать из PS, если припрет. Лично мне как админу (если бы я был админом) - тоже больше: я знаю, что PS надо опасаться не меньше, чем любого приложения на .NET.
Так же, как и код на C#, написанный в блокноте - с помощью вывода в консоль и такой-то матери. И это я в свое время как раз делал, так что не понимаю, в чем тут вопрос.
А зачем мне с ним взаимодействовать?
Я вас еще раз спрашиваю: вы понимаете, что такое powershell, когда говорите, что вызов кода на .net не имеет к нему никакого отношения?
Нет, то, что внутри - это разные версии .NET framework.
Вы говорите про .NET (который современный, который раньше был .NET Core), или про .NET Framework (в котором это совершенно точно не так)?
Я спрашиваю, как вы отличаете, что есть что.
Вам говорят, что WinAPI доступен из PowerShell. Примеры кода показывают, что доступен. Не вижу противоречия.
...и что? Речь как раз о том, что из PS можно вызвать любой код на .NET, в том числе динамически скомилированный. Поэтому, как вам и пишут, из PS можно получить (и люди регулярно получают) доступ к WinAPI.
А вы понимаете, как работает PowerShell?
Как формально вы разделяете SDK и рантайм? На основании чего вы говорите, что csc есть только в SDK, хотя он лежит в
C:\Windows\Microsoft.NET\Framework64
(это, насколько я помню, папка именно рантайма)?В этот момент у меня все-таки есть два вопроса.
Компилятор есть только в SDK или в рантайме тоже?
На обычной пользовательской винде из коробки стоит только рантайм или SDK тоже?
Я просто хорошо помню, как я каждый раз при подготовке себе рабочей машины ставил туда SDK.
Вы "не один год" собирали материал о том, что в любой современной инсталляции винды есть
csc
?Мы вроде на техническом сайте, так что лично меня интересуют технические аспекты, а не то, как люди реагируют на издевательства.
А что представлять-то? Обычный пранк, я таких много помню. Не понимаю, что тут уникально интересного.
...то может быть станет понятно, что ваше утверждение про "все в IT знают" избыточно обобщено?
Или, наоборот, не происходит лишней. Но это старый спор.
То есть чистый водопад? Ну... можно, конечно, так работать, и есть люди, которым такого хочется, но жизнь обычно не согласна. Ну, в моем опыте.
Да, у нас иначе. Нет никакого смысла делить работу на дискавери и деливери, если больше половины времени эти процессы (анализа и разработки) идут параллельно.
Я вот работаю в IT и не знаю этого. Ну и да, вопрос, как вы это собираетесь делить в любой сколько-нибудь активной современной разработке, мне не понятно.