Информация об изменениях

Сообщение Re[23]: 32/64/AnyCPU - что за @$^%$? от 11.10.2016 23:47

Изменено 11.10.2016 23:54 alexzzzz

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

·>Ну наверное Микрософту делать нечего было, ну и запилили на выходных эту тулзу ради прикола.


Сами решают свои проблемы сами, не сваливая на пользователя.

A>>У меня дома долго висела Java 8 Update 73 (64-bit), которая ни работать не хотела, ни удаляться. Сейчас про неё вспомнил, пришлось грохать папку и чистить следы вручную. Java Repair Tool не нашёл.

·>А какие там следы-то?

В реестре. Из-за которых Java всё ещё висела в списке установленных программ, и из-за которых java-программа, которую я скачал для проверки, при запуске писала что-то типа «Ява вроде есть, а вроде и нет, запускаться не буду».

A>>Тут раз двадцать уже написали, что флажок нужен/полезен только для тех случаев, когда у программы имеется жёсткая зависимость от какого-либо компонента, существующего только под одну конкретную платформу. Ну не работает твоя программа в режиме x64. Ей не нужно делать специальных ярлычков. Ставишь platform:x86 ― и теперь она знает сама как ей правильно запускаться на 64.

·>В данном случае нет "правильного". Правильность зависит от того, как пользователь хочет её использовать.

В двадцать первый раз написать? Программа на работает в режиме x64. Не потому что программист ― сволочь, а потому что объективно не работает. С таким же успехом пользователь может хотеть две тонны золота в слитках.

A>>·>Решение о таргет-платформе должно приниматься во время деплоймента, а не во время компиляции.

A>>Он НЕ требуется на этапе компиляции проекта. Можешь выставить потом, когда захочешь, если надо.
·>Т.е. "/platform (C# Compiler Options)" это не опция компилятора, т.е. тулзы, которая компилирует?

Кто тебя требует её указывать во время компиляции? Никто. Хочешь принять решение позже? Принимай. Хочешь изменить уже принятое решение? Изменяй.
/out:<file>                   Specify output file name (default: base name of
                              file with main class or first file)

К опции out есть аналогичные претензии?

А что, к IL отношения не имеет, но тем не менее зачем-то является опцией компилятора. Можно не указывать, но значение по умолчанию будет всё равно. Какой идиот придумал указывать имя файла на стадии компиляции? Можно ведь задавать правильное имя файлу во время деплоимента. Собрать специальный инсталлятор, чтобы он выставлял правильное имя файла прямо на машине пользователя. А также делал два ярлычка на рабочем столе.

A>>Конкретно такой комбинации не бывает, чтобы «x86+x64, но не ARM и Itanium». Там либо конкретная платформа, на которую программа заточена, либо AnyCPU.

·>Комбинация, очевидно, бывает. Заточить программу можно под некое подмножество платформ. Просто компилятор так не умеет.

А зачем? У тебя есть волшебная нативная dll, код которой можно загрузить и в x86-процесс, и в x64-процесс и он везде будет работать?
Re[23]: 32/64/AnyCPU - что за @$^%$?
Здравствуйте, ·, Вы писали:

·>Ну наверное Микрософту делать нечего было, ну и запилили на выходных эту тулзу ради прикола.


Сами решают свои проблемы сами, не сваливая на пользователя.

A>>У меня дома долго висела Java 8 Update 73 (64-bit), которая ни работать не хотела, ни удаляться. Сейчас про неё вспомнил, пришлось грохать папку и чистить следы вручную. Java Repair Tool не нашёл.

·>А какие там следы-то?

В реестре. Из-за которых Java всё ещё висела в списке установленных программ, и из-за которых java-программа, которую я скачал для проверки, при запуске писала что-то типа «Ява вроде есть, а вроде и нет, запускаться не буду».

A>>Тут раз двадцать уже написали, что флажок нужен/полезен только для тех случаев, когда у программы имеется жёсткая зависимость от какого-либо компонента, существующего только под одну конкретную платформу. Ну не работает твоя программа в режиме x64. Ей не нужно делать специальных ярлычков. Ставишь platform:x86 ― и теперь она знает сама как ей правильно запускаться на 64.

·>В данном случае нет "правильного". Правильность зависит от того, как пользователь хочет её использовать.

В двадцать первый раз написать? Программа не работает в режиме x64. Не потому что программист ― сволочь, а потому что объективно не работает. С таким же успехом пользователь может хотеть две тонны золота в слитках.

A>>·>Решение о таргет-платформе должно приниматься во время деплоймента, а не во время компиляции.

A>>Он НЕ требуется на этапе компиляции проекта. Можешь выставить потом, когда захочешь, если надо.
·>Т.е. "/platform (C# Compiler Options)" это не опция компилятора, т.е. тулзы, которая компилирует?

Кто тебя требует её указывать во время компиляции? Никто. Хочешь принять решение позже? Принимай. Хочешь изменить уже принятое решение? Изменяй.
/out:<file>                   Specify output file name (default: base name of
                              file with main class or first file)

К опции out есть аналогичные претензии?

А что, к IL отношения не имеет, но тем не менее зачем-то является опцией компилятора. Можно не указывать, но значение по умолчанию будет всё равно. Какой идиот придумал указывать имя файла на стадии компиляции? Можно ведь задавать правильное имя файлу во время деплоимента. Собрать специальный инсталлятор, чтобы он выставлял правильное имя файла прямо на машине пользователя. А также делал два ярлычка на рабочем столе.

A>>Конкретно такой комбинации не бывает, чтобы «x86+x64, но не ARM и Itanium». Там либо конкретная платформа, на которую программа заточена, либо AnyCPU.

·>Комбинация, очевидно, бывает. Заточить программу можно под некое подмножество платформ. Просто компилятор так не умеет.

А зачем? У тебя есть волшебная нативная dll, код которой можно загрузить и в x86-процесс, и в x64-процесс и он везде будет работать?