Как собрать приложение под .NET 4.5, чтобы оно работало на машине без .NET 4.6?
От: Albeoris  
Дата: 14.09.17 19:37
Оценка:
Доброго времени суток.

Есть (или была) в компиляторе неприятная проблема, связанная с тем, что в процессе оптимизации приложение, написанное под .NET 4.5 использует метод из .NET 4.6. Если он не установлен на целевой машине, это приводит к крашу.
https://stackoverflow.com/questions/31253747/method-not-found-0-system-array-empty-asapp-bundleconfig-registerbundl

Вопрос — актуальна ли эта проблема для MSBuild 15 (VS 2017), как её можно избежать, не удаляя с билдера .NET 4.6?
Есть ли другие аналогичные проблемы? Где с ними можно ознакомиться?

Пока самым надёжным вариантом кажется переход на .NET 4.6.
"Хаос всегда побеждает порядок, поскольку лучше организован." (с) Терри Пратчетт
Re: Как собрать приложение под .NET 4.5, чтобы оно работало на машине без .NET 4
От: Sinix  
Дата: 14.09.17 19:53
Оценка:
Здравствуйте, Albeoris, Вы писали:

A>Пока самым надёжным вариантом кажется переход на .NET 4.6.

Вариант 1: для большинства народа: в свойствах проекта выставить target framework (на вкладке app), опционально — в Build-Advanced указать нужную langversion.

Вариант 2, если хочется приключений, используются сторонние библиотеки и продукт не коробочный: ждём net 4.7.1 и сразу переводим проекты на новый тулинг.
Решение радикальное и добавляет кучу новых проблем, но иначе, увы, никак.
DevDiv в последние полтора года окончательно забил на тестирование и совместимость всей экосистемы сборки и ряд гениальных решений (например, три разных версии резолва нюгет-зависимостей при сборке) дело, увы, не облегчают
Re[2]: Как собрать приложение под .NET 4.5, чтобы оно работало на машине без .NE
От: Albeoris  
Дата: 14.09.17 21:44
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Вариант 2, если хочется приключений, используются сторонние библиотеки и продукт не коробочный: ждём net 4.7.1 и сразу переводим проекты на новый тулинг.

S>Решение радикальное и добавляет кучу новых проблем, но иначе, увы, никак.
S>DevDiv в последние полтора года окончательно забил на тестирование и совместимость всей экосистемы сборки и ряд гениальных решений (например, три разных версии резолва нюгет-зависимостей при сборке) дело, увы, не облегчают

Звучит на редкость хреново.
А разработка под .NET 4.7.* на Windows 7 возможна? Или вот оно, время распрощаться с тёмным прошлым и перейти на 10ку? >_>
"Хаос всегда побеждает порядок, поскольку лучше организован." (с) Терри Пратчетт
Re[3]: Как собрать приложение под .NET 4.5, чтобы оно работало на машине без .NE
От: Sinix  
Дата: 14.09.17 21:53
Оценка: 10 (2)
Здравствуйте, Albeoris, Вы писали:

A>Звучит на редкость хреново.

A>А разработка под .NET 4.7.* на Windows 7 возможна? Или вот оно, время распрощаться с тёмным прошлым и перейти на 10ку? >_>

Ну, на самом деле не всё так страшно.
Критерий простой: завязываемся на библиотеки, которые умеют только netstandard или нет.

Если завязываемся — велкам в наш ад, вон топор, дрова в том лесу, котлы на неделе обещают подвезти.
Если нет — используем старый тулинг и не дёргаемся.

P.S. VS 2017 на семёрку ставится, но не все features доступны для установки, часть (мобильная разработка, как минимум) емнип десятку требует.
Re[4]: Как собрать приложение под .NET 4.5, чтобы оно работало на машине без .NE
От: _Raz_  
Дата: 14.09.17 23:06
Оценка: 21 (1)
Здравствуйте, Sinix, Вы писали:

S>P.S. ... часть (мобильная разработка, как минимум) емнип десятку требует.


Не вся. Для андроида и маков можно и на семерке писать и отлаживать. Десятку требуют только UWP.
... << RSDN@Home 1.3.108 alpha 5 rev. 56>>
Re[3]: Как собрать приложение под .NET 4.5, чтобы оно работало на машине без .NE
От: _Raz_  
Дата: 14.09.17 23:12
Оценка: +1
Здравствуйте, Albeoris, Вы писали:

A>А разработка под .NET 4.7.* на Windows 7 возможна?


4.7.0 под vs2017 — полет нормальный, но для тулинга нужно >= 4.7.1

Вот тут говорят, что

Applicable Operating System Platforms
Windows 7 SP1

... << RSDN@Home 1.3.108 alpha 5 rev. 56>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.