VS 2017
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.11.16 11:51
Оценка:
Как известно, на коннекте был выпущен RC новой студии. По прежнему имеется абсолютно бесплатная Community Edition, под лицензию которой наш проект подходит на 100%.
Загрузка — https://www.visualstudio.com/downloads/#visual-studio-community-2017-rc
Вопрос: переходим ли мы на C# 7 прямо сейчас?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re: VS 2017
От: rameel https://github.com/rsdn/CodeJam
Дата: 17.11.16 14:03
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Вопрос: переходим ли мы на C# 7 прямо сейчас?


Не против
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: VS 2017
От: Sinix  
Дата: 17.11.16 14:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Вопрос: переходим ли мы на C# 7 прямо сейчас?


В виртуалке VS "15" крутится давно, вроде работает. Visual Studio 2017 RC has a go-live license, так что известных крупных проблем быть не должно. С решарпером — хз как, если завёлся — давайте.
Re[2]: VS 2017
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.11.16 15:06
Оценка:
Здравствуйте, Sinix, Вы писали:

S>С решарпером — хз как, если завёлся — давайте.


Решарпер есть, но фичи C# 7 не поддерживает (или я не знаю где что надо включить).
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: VS 2017
От: _Raz_  
Дата: 17.11.16 15:22
Оценка:
Здравствуйте, Sinix, Вы писали:

S> С решарпером — хз как, если завёлся — давайте.


ReSharper Ultimate build for Visual Studio 2017 RC
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: VS 2017
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.11.16 20:52
Оценка:
AVK>Решарпер есть, но фичи C# 7 не поддерживает (или я не знаю где что надо включить).

Поправочка — поддерживаются, но не все. В частности:
1) out vars — в полном объеме (вайлдкарды не поддерживаются и компилятором)
2) ПМ. is expression — в полном объеме, type switch — ругается на отсутствие integral type в параметре оператора.
3) Туплы. Требует указания всех имен, хотя компилятор довольствуется любым количеством. Некорректно работает комплит при наличии имен. Деконструкция — само выражение нормально, а вот переменные оттуда в коде не видны. Вайлдкарды не поддержтиваются и компилятором.
4) Локальные функции — в полном объеме
5) Разделители литералов — в полном объеме
6) ref returns and locals — не поддерживаются
7) Generalized async return types пока не поддерживаются и компилятором
8) expression bodied ctors/dtors/prop accessors — не подерживаются
9) throw expression — не поддерживается.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[4]: VS 2017
От: Sinix  
Дата: 18.11.16 05:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>>Решарпер есть, но фичи C# 7 не поддерживает (или я не знаю где что надо включить).


А кстати, что нам из седьмого шарпа принципиально нужно?

* Тюплы в публичном API — я резко против. Это костыль на один релиз, до появления records в c#8.
В качестве временного решения лучше руками набросать, дел на одну минуту вместе с Deconctruct().

* out vars — по ним непрекращающаяся война идёт из-за слишком широкой области видимости. Народу не нравится
if (dict.TryGet(key, out var value))
{
  ...
} 
// value accessible here.

Т.е. не факт, что текущее поведение сохранится.

* Локальные функции — ок, если следить за отсутствием замыканий. ref returns / locals в public API тож выставлять не стоит. ValueTasks не будут работать в младших студиях и тож не попадают в public API.

* throw expression — нафиг. Как и обсуждалось кучу лет назад, statement as expression неизбежно приводит к говнокоду в духе
var x = TryGetSomething()?.Value ?? throw new InvalidOperationException("...");

это из демки на Connect(), советует ли такое VS2017 RC — не проверял.

Как-то так. Чего пропустил?
Re[5]: VS 2017
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.11.16 12:10
Оценка: 38 (1) +1
Здравствуйте, Sinix, Вы писали:

AVK>>>Решарпер есть, но фичи C# 7 не поддерживает (или я не знаю где что надо включить).

S>А кстати, что нам из седьмого шарпа принципиально нужно?

Принципиально только одно — ПМ. Сейчас есть одно больное место для него — меппер.
Второе место — потенциально простенький генератор парсеров, но я уже не уверен что его нужно добавлять — народ пользуется Sprache, и вроде бы он вменяемого качества, так что смысла делать свой нет.

S>* Тюплы в публичном API — я резко против. Это костыль на один релиз, до появления records в c#8.


Спорно, у туплов свое применение, особенно с учетом того что можно указывать имена. Но да, рекорды в публичном АПИ предпочтительнее. С другой стороны, у туплов есть суперфича, о которой я давно мечтал — инлайн декларация типа в сигнатуре метода. В некоторых сценариях просто пипец неа сколько упрощает жизнь.
Опять же, остается внутреннее использование — у нас ValueTuple уже используется.

S>В качестве временного решения лучше руками набросать, дел на одну минуту вместе с Deconctruct().


Ну вот, deconstruct таки нужен

S>* out vars — по ним непрекращающаяся война идёт из-за слишком широкой области видимости.


С наличием у нас GetValueOrDefault для словарей оно уже не особо важно. Остается только ситуация с несколькими аут параметрами, но это суперредкость.

S> ref returns / locals в public API тож выставлять не стоит.


Это очень специфичная штука.

S> ValueTasks не будут работать в младших студиях и тож не попадают в public API.


Оно по факту сейчас и в старшей не работает, орет что Task<T> обязательно.

S>* throw expression — нафиг.


Это в основном для оператора match сделано, которого пока нет. А без оного практически бесполезно.

S>это из демки на Connect(), советует ли такое VS2017 RC — не проверял.


Советовать оно пока ничего не советует, но вполне работает.

S>Как-то так. Чего пропустил?


Разделители литералов, но это вообще баловство. Ну и самое главное — ПМ.
AVK Blog
Re[6]: VS 2017
От: Sinix  
Дата: 18.11.16 12:22
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>>* Тюплы в публичном API — я резко против.

AVK>Спорно, у туплов свое применение, особенно с учетом того что можно указывать имена. Но да, рекорды в публичном АПИ предпочтительнее.
Ну да, я только про публичное API библиотеки. В кишках — почему нет?

С остальным согласен целиком и полностью
Re[6]: VS 2017
От: Sinix  
Дата: 23.11.16 18:53
Оценка:
Здравствуйте, AndrewVK, Вы писали:
...

Тут товарищи из Appveyor предлагают пробный доступ к образу с VS 2017:
https://github.com/appveyor/ci/issues/1179#issuecomment-262600634

поскольку сборка на тебя настроена — отпишись там, ок?

UPD: о, уже Спасиб!

И тогда можно переходить будет.
Отредактировано 23.11.2016 18:54 Sinix . Предыдущая версия .
Re: VS 2017
От: IT Россия linq2db.com
Дата: 23.11.16 21:36
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Вопрос: переходим ли мы на C# 7 прямо сейчас?


Попробовал. Не понравилось. ПМ там совсем голимый. Для туплов нужно грузить дополнительный нугет. Остальное не принципиально.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: VS 2017
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.11.16 21:38
Оценка:
Здравствуйте, IT, Вы писали:

IT>Попробовал. Не понравилось. ПМ там совсем голимый. Для туплов нужно грузить дополнительный нугет


В нашем случае он и так уже грузится либо эмулируется.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: VS 2017
От: IT Россия linq2db.com
Дата: 24.11.16 03:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>В нашем случае он и так уже грузится либо эмулируется.


Это не есть гуд. Надо исключать этот компонент из библиотеки как можно быстрее.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: VS 2017
От: Sinix  
Дата: 24.11.16 05:47
Оценка:
Здравствуйте, IT, Вы писали:

AVK>>В нашем случае он и так уже грузится либо эмулируется.


IT>Это не есть гуд. Надо исключать этот компонент из библиотеки как можно быстрее.

Не нужно. Ждём решения вот этого вопроса и проблема с назойливыми зависимостями решится сама.
Re[4]: VS 2017
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.11.16 06:11
Оценка:
Здравствуйте, IT, Вы писали:

IT>Это не есть гуд. Надо исключать этот компонент из библиотеки как можно быстрее.


Зачем? Чтобы сделать несовместимыми туплы внутри пакета с туплами, порождаемыми компилятором С#7?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.