UWP и С#
От: vvv848165@ya.ru  
Дата: 08.04.19 07:23
Оценка:
почему когда пишем на C# UWP приложения сборки под ARM, ARM64, x86 и EM64T разные?
Ведь код под NET обрабатывается интерпретатором — байт код не должен зависеть от инструкций процессора.
Да и WinForms под WinArm вроде не работают...
Что мешало сделать платформу независимой?
Re: UWP и С#
От: takTak  
Дата: 08.04.19 07:34
Оценка:
считается, что UWP быстрее, чем WPF ...
Re[2]: UWP и С#
От: vvv848165@ya.ru  
Дата: 08.04.19 08:21
Оценка:
Здравствуйте, takTak, Вы писали:

T>считается, что UWP быстрее, чем WPF ...


не смеши мои тапочки ...
Re[3]: UWP и С#
От: takTak  
Дата: 08.04.19 08:59
Оценка:
T>>считается, что UWP быстрее, чем WPF ...

VYR>не смеши мои тапочки ...


ну так binding-то компилируется
Re: UWP и С#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.04.19 09:13
Оценка: +1
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>почему когда пишем на C# UWP приложения сборки под ARM, ARM64, x86 и EM64T разные?

VYR>Ведь код под NET обрабатывается интерпретатором — байт код не должен зависеть от инструкций процессора.
VYR>Да и WinForms под WinArm вроде не работают...
VYR>Что мешало сделать платформу независимой?

https://docs.microsoft.com/ru-ru/dotnet/framework/net-native/net-native-and-compilation

.Net Native для каждой оси свой
и солнце б утром не вставало, когда бы не было меня
Отредактировано 08.04.2019 9:14 Serginio1 . Предыдущая версия .
Re: UWP и С#
От: alexzzzz  
Дата: 08.04.19 10:48
Оценка:
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>Ведь код под NET обрабатывается интерпретатором — байт код не должен зависеть от инструкций процессора.

VYR>Что мешало сделать платформу независимой?

Код в NET бинарно платформонезависим, если используются JIT-компиляторы. С AOT-компиляторами приходится заранее компилировать под целевую платформу, как в каком-нибудь C++.

Интерпретаторы в NET — это пока экзотика, которой раньше вообще не было, только сейчас появляется для разных целей. В Моно точно делают, в Core вроде тоже.
Re: UWP и С#
От: okon  
Дата: 08.04.19 10:55
Оценка:
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>почему когда пишем на C# UWP приложения сборки под ARM, ARM64, x86 и EM64T разные?

VYR>Ведь код под NET обрабатывается интерпретатором — байт код не должен зависеть от инструкций процессора.

Байт код да, но чтобы запустить байт код сначала нужно запустить его компилятор, для этого нужны инструкции процессора которые это делают.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re: UWP и С#
От: Kolesiki  
Дата: 09.04.19 22:45
Оценка: -1
Здравствуйте, vvv848165@ya.ru, Вы писали:

VYR>почему когда пишем на C# UWP приложения сборки под ARM, ARM64, x86 и EM64T разные?


Клоун, который принимает технические решения в M$, решил, что нафик нам "ещё один формат" и запаковал обычный дот-нет код в экзешник. Думаю, остальное потянулось оттуда.
Мелкомягким нужно было сразу делать отдельный исполняемый .NET формат — тогда бы да, мы никогда бы не увидели этих обескураживающих настроек в VS "x86 / x64". Маразм...
Re[2]: UWP и С#
От: alexzzzz  
Дата: 09.04.19 23:08
Оценка: +2
Здравствуйте, Kolesiki, Вы писали:

K>Клоун, который принимает технические решения в M$, решил, что нафик нам "ещё один формат" и запаковал обычный дот-нет код в экзешник. Думаю, остальное потянулось оттуда.

K>Мелкомягким нужно было сразу делать отдельный исполняемый .NET формат — тогда бы да, мы никогда бы не увидели этих обескураживающих настроек в VS "x86 / x64". Маразм…

1. По умолчанию там AnyCPU.
2. Что делает и зачем нужна в Студии/компиляторе эта настройка, ты не знаешь.
Re[3]: UWP и С#
От: Kolesiki  
Дата: 11.04.19 18:50
Оценка:
Здравствуйте, alexzzzz, Вы писали:

A>Здравствуйте, Kolesiki, Вы писали:


K>>Клоун, который принимает технические решения в M$, решил, что нафик нам "ещё один формат" и запаковал обычный дот-нет код в экзешник. Думаю, остальное потянулось оттуда.

K>>Мелкомягким нужно было сразу делать отдельный исполняемый .NET формат — тогда бы да, мы никогда бы не увидели этих обескураживающих настроек в VS "x86 / x64". Маразм…

A>1. По умолчанию там AnyCPU.


И что дальше? Это как-то меняет факт, что сборку можно сделать x64 only?

A>2. Что делает и зачем нужна в Студии/компиляторе эта настройка, ты не знаешь.


Вот молодец, экстрасенсорный вы наш! Я так понимаю, сие сокровенное знание имеет лишь БГ и ты, да? Пожалуйста, не лопни от гордости за свои узколобые познания и ещё раз перечитай коммент, на который ты отвечал — походу, из-за своих "сакральных знаний" ты напрочь лишился понимания, что люди говорят. Перечитай и подумай, зачем я это написал и каким боком ВИРТУАЛЬНЫЙ код вдруг стал Windows only.
Господи, вы правда программируете? ЭТО — поколение, которое придёт за нами? Серьёзно? А я-то думал, индусы — низшая ступень программазма.
Re[4]: UWP и С#
От: alexzzzz  
Дата: 22.04.19 13:23
Оценка:
Здравствуйте, Kolesiki, Вы писали:

A>>1. По умолчанию там AnyCPU.

K>И что дальше? Это как-то меняет факт, что сборку можно сделать x64 only?

1. Если тебе это надо, можно сделать. Если не надо, можно не делать. Это дополнительная возможность.
2. Сборка x64 only — это такая же сборка, как AnyCPU, только у неё имеется флажок, который предупреждает: "Не стоит меня запускать не под x64".

Зачем это надо?

NET и C# с рождения любят и умеют интероп с нативными библиотеками. Твоя программа/библиотека может иметь в зависимостях нативную x64-only-библиотеку (это твой выбор как автора; ты решил, что так будет нормально). Как результат, твою сборку не имеет смысла использовать не из x64-окружения — она там не будет правильно работать, потому что нативная библиотека, которая у тебя в зависимостях, не будет работать. Поэтому ты как автор ставишь флажок x64-only, чтобы заблокировать использование твоей сборки в окружении, работать в котором она заведомо не рассчитана. При желании этот флажок можно установить/снять у готовой сборки постфактум, есть утилита.

Если посмотреть, какие ещё есть варианты платформ, кроме AnyCPU и x64, найдутся ARM, ARM64 и Itanium, и нельзя выбрать несколько одновременно.

Почему?

Потому что в Microsoft работают криворукие индусы-мудаки. Потому что нет смысла. Ты всё равно не можешь поставить своей сборке в статические зависимости нативную библиотеку, которая одновременно и для Itanium, и для x64 (например). Так не бывает. Значит надо либо сделать два варианта сборки, одну с зависимостью для для Itanium, вторую — для x64 (код внутри сборок останется идентичным); либо сборку делать AnyCPU, а зависимости разрешать и подгружать как-нибудь динамически и в случае проблем выдавать ошибку в рантайме. Как именно делать, решать тебе как автору.

TL;DR
Ограничение по платформе не влияет на код в сборке, вообще никак, вот прям совсем. Это флажок-предупреждение на случай существования у сборки статических нативных зависимостей, чтобы пользователи не пытались использовать сборку в окружении, в котором эти зависимости не будут работать.

A>>2. Что делает и зачем нужна в Студии/компиляторе эта настройка, ты не знаешь.

K>Вот молодец, экстрасенсорный вы наш! Я так понимаю, сие сокровенное знание имеет лишь БГ и ты, да? Пожалуйста, не лопни от гордости за свои узколобые познания и ещё раз перечитай коммент, на который ты отвечал — походу, из-за своих "сакральных знаний" ты напрочь лишился понимания, что люди говорят. Перечитай и подумай, зачем я это написал и каким боком ВИРТУАЛЬНЫЙ код вдруг стал Windows only.

А он не стал. Ты продолжаешь воевать с домыслами, которые развенчивались год назад здесь же и в твоём присутствии.

Касательно формата PE — как-то он не мешает дотнетным консольным утилитам и библиотекам работать и в Windows, и в macOS одновременно без перекомпиляции, пересборки и вообще без каких-либо изменений.
Отредактировано 22.04.2019 13:33 alexzzzz . Предыдущая версия .
Re[5]: UWP и С#
От: Ночной Смотрящий Россия  
Дата: 23.04.19 08:15
Оценка:
Здравствуйте, alexzzzz, Вы писали:

A>1. Если тебе это надо, можно сделать. Если не надо, можно не делать. Это дополнительная возможность.

A>2. Сборка x64 only — это такая же сборка, как AnyCPU, только у неё имеется флажок, который предупреждает: "Не стоит меня запускать не под x64".
A>Зачем это надо?

Не трать силы, ему это уже объясняли.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.