Jetbrains rider

Unit Testing

We’ve rebuilt our unit test runner from scratch for both .NET Framework and .NET Core to have the
same runner for both runtimes which run out of the Visual Studio process. It helps us solve a lot of
problems with discovering, running, and debugging unit tests, and gives us full control over unit
test hierarchies for .NET Core tests.

The new unit test runner introduces the following important improvements:

  • Built-in support for MSFakes for NUnit, xUnit, MSTest v2 unit test frameworks.
  • Built-in support for TypeMock Isolator for NUnit, xUnit, and MSTest v2.
  • MSTest v2 tests can now be run without Visual Studio installed.

Rider now supports the attribute in .NET Core tests for xUnit and NUnit frameworks.

You can select multiple unit test statuses simultaneously to filter them in the unit test
tree. Enable or disable multiple statuses by holding down the Ctrl key as you
click on them.

There are two different counters for each status when a search or target framework filter is
applied to show the overall number of unit tests, and the number of tests that match the
filter criteria.

We’ve added support for ANSI escape codes in the Output window, so you can colorize the unit
test output if you want.

Auto-format edited and pasted code

When you type code in the editor, JetBrains Rider reformats expressions as soon as you type a semicolon and reformats blocks of code as soon as you type a closing brace . If necessary, you can disable these kinds of auto-formatting on the Editor | General | Typing Assistance page of JetBrains Rider settings Ctrl+Alt+S.

JetBrains Rider also lets you automatically apply your when you paste code. By default, pasted code is not fully reformatted but only indentation settings are applied. If you want to fully format pasted code, or disable formatting on paste, use the Auto-format on paste selector on the Editor | General | Typing Assistance page of JetBrains Rider settings Ctrl+Alt+S.

Different views: file system and scratches

Probably also long-awaited, Rider 2018.2 EAP introduces the file-system view in addition to solution view, which shows the actual file-system structure underneath our solution file. By the way, items marked with no index are excluded from index-based features like global text search or todo indexes. Also, for some of us, the file-system view could be the opportunity to get rid of solution folders, which are not automatically updated:

Speaking of view modes, we’ve also merged the scratch view into both, solution and file-system view, which allows easier access to recently created scratch files:

And here is a pro tip: not only does Rider’s navigation view allow us to open a terminal for any folder we right-click, it also supports drag & drop onto the terminal tool window:

Microsoft и Open Source

Есть ли вообще у Microsoft, по твоему ощущению, понимание того, что такое опенсорс, как это работает?— То есть они адаптировались?— Да, это был мой следующий вопрос: зачем они это делают, на твой взгляд?— «Например»! Это сейчас вообще топовый продукт Microsoft. Если ты послушаешь их евангелистов, посмотришь их конференции и блоги, увидишь, что Azure, наверное, вообще номер один.— Тогда для них это прямой business value.— То есть можем ли мы говорить, что схема такая: Microsoft двигает Azure, поскольку видит в нём деньги. Очень многие клиенты хотят Linux (потому что это дешевле, чем Windows, и по многим другим причинам). Соответственно, Microsoft пытается сделать всё, чтобы этих кастомеров не потерять и чтобы они приходили с этим линуксом в Azure.— А какие ещё, на твой взгляд? Вряд ли чистым альтруизмом можно объяснить всё это движение в сторону Linux и Open Source.— Такой гигант — и так плохо вышел на рынок. Не секрет, что Windows Phone имеет небольшую экосистему и низкий процент популярности.— Ну да, это замкнутый круг.— Мы с командой в декабре проведём уже шестой DotNext (в Хельсинки) и седьмой (в Москве), на которых ты выступишь. На DotNext периодически всплывает тема, например, Xamarin.Forms. Мы каждый раз смотрим на её популярность, и каждый раз она в самом низу. По той аудитории, которая приходит к нам, такое ощущение, что это никому не интересно.— А почему именно в топ не попасть?— То есть, на твой взгляд, будущее у этого всего может быть?— Быстрее, чем популярность .NET в целом?— Вы со стороны своих инструментов Xamarin поддерживаете?

Compose HTTP requests

JetBrains Rider uses the HTTP request in Editor format, which provides a simple way to create, execute, and store information about HTTP requests. You can type them directly in the using the following general syntax:

Method Request-URI HTTP-Version
Header-field: Header-value

Request-Body

To speed up composing HTTP requests, click the Add request shortcut link on top of the request’s editor panel. In the popup menu, choose the type of the request to add.

Alternatively, use live templates. In the editor, you can press Ctrl+J to view the list of available templates. For example, gtr expands to a simple GET request; mptr expands to a POST request.

To get an overview of the HTTP Client possibilities, you can explore the HTTP Requests Collection, which is a handful selection of composed requests.

Views

The tool window provides you with the following views:

  • Solution view, which contains the solution node with an organized logical view of projects and project items in the current solution, as defined in its .sln file.

  • FileSystem view, which shows you all files and subdirectories starting from the directory where the current solution file is located.

  • Unity view, which provides an organized view of all assets in a Unity project (you see exactly the same project tree as in the Unity editor). This view is only available for Unity projects.

  • Assembly Explorer view, which lets you open and explore compiled assemblies.

  • Scratches view, which lets you manage your scratch files and database consoles.

The necessary view is selected from the list in the left-hand part of the title bar or, if the views are represented by tabs, by clicking the corresponding tab.

Why should you use Rider?

Hopefully, you can see that we’ve made Rider a fully fledged IDE, utilising the years of experience and functionality we’ve built into IntelliJ and ReSharper. For a pre-1.0 product, it’s already got an enormous amount of functionality.

We’re aiming to build the best IDE experience for .NET development. We want Rider to be feature rich, and we want it to be fast. And by owning the entire IDE stack, we can deliver on this, and innovate in areas that we haven’t looked at before, such as significantly improving the experience of searching in NuGet.

But the simplest answer is to download it, and try it for yourself – see how well it works for your own solutions and projects.

And remember, Rider is built from the ReSharper codebase – Rider IS ReSharper. New features and fixes in one product will flow into the other. Above all, we’re offering you a choice – if Rider works well for you, cross platform or on Windows, then great! But if you prefer Visual Studio, then rest assured, ReSharper will always be there to help you.

Oh, and one last thing. You might have noticed that we started this journey with the codename “Project Rider”, and were planning on an official name later. Well, it’s now later, and honestly, we like the name Rider. So that’s what it’s going to be – welcome to JetBrains Rider.

Características

Análisis del código

Rider cuenta con más de 2200 inspecciones de código en directo, con arreglos rápidos automatizados para resolver los problemas detectados, tanto de manera individual como masiva. Un análisis de errores en toda la solución supervisará las incidencias de código y le informará si hay algún problema, incluso en aquellos archivos que no están abiertos en ese momento.

Edición de código

El completo editor de Rider ofrece diferentes tipos de finalización de código y de plantillas de código, inserción automática de correspondencia de llaves y directivas de importación, descripciones emergentes con información rápida e iconos de medianil para la navegación heredada, acciones de contexto y mucho más.

Refactorización

La mayoría de las más de 60 refactorizaciones de ReSharper ya están disponibles en Rider, y sus más de 450 acciones contextuales están disponibles aquí. Puede cambiar nombres, extraer métodos, interfaces y clases, mover y copiar tipos, utilizar una sintaxis alternativa y mucho más.

Ejecutor de pruebas de unidad

Rider le ayuda a ejecutar y depurar pruebas de unidades basándose en NUnit, xUnit.net o MSTest. Puede explorar las pruebas, agruparlas de diferentes maneras, dividirlas en sesiones individuales, ver los resultados de las pruebas y navegar hasta el código fuente desde los grupos de seguimiento.

Depurador y más herramientas

Rider incluye un depurador que funciona con aplicaciones .NET Framework, Mono y .NET Core y que le permite entrar, ver, evaluar y ejecutar hasta el cursor. Otras herramientas incluyen un explorador de traza de pila, navegador NuGet y compatibilidad con bases de datos y VCS.

Bases de datos y SQL

Permite trabajar con SQL y bases de datos sin salir de Rider. Conéctese con bases de datos, edite esquemas y datos tabulares, realice consultas e incluso analice esquemas con diagramas UML.

Navegación y búsqueda

Puede saltar a cualquier archivo, tipo o miembro de su base de código inmediatamente, así como encontrar con rapidez configuraciones y acciones. Es posible buscar usos de cualquier símbolo o navegar desde un símbolo a la base y símbolos derivados, métodos de extensión o implementaciones.

Tecnologías de front-end

Rider incluye compatibilidad integrada con JavaScript, TypeScript, HTML, CSS y Sass. Saque partido de las capacidades de pruebas de unidades, depuración y refactorización que se incluyen desde WebStorm.

Extensibilidad

Fiel a sus raíces, Rider admite una amplia gama de complementos desarrollados para la plataforma IntelliJ y ReSharper. Además de los complementos incluidos (como aquellos para la compatibilidad con VCS, F# y Unity), hay disponibles complementos compatibles con Markdown, archivos y secuencias de comandos Python.

Localization Manager

The Localization Manager is now available in Rider to help you localize your .NET application or
website. You can access it using the Tools menu or by double-clicking on a .resx file.

It allows you to view everything contained in all your project’s files, or a
specified selection of files, in a single grid.

You can easily find all resources that are missing localized values or are just not used.

You can add, edit, rename, search for, find usages of, and safely delete any localized
resources.

You can easily add a new culture to your application using the predefined list of cultures
in the completion list or hide locales you don’t need right now.

You can export the whole grid to a CSV format to share with translators and import the final
version back into the Localization Manager.

You can add and edit comments for any entity from resource files right inside the grid, and
you can also export and import these comments.

Web development

Save time with new features for JavaScript

New smart intentions (Alt+Enter) will help you perform some actions faster. For
example, you can now quickly convert a for loop with a numeric index into a
array method. Looking through documentation comments in JavaScript and TypeScript files has
also become easier as you can now render them right in the editor, minimizing all
distractions.

Make Prettier the default formatter in your JavaScript projects

Want to use Prettier instead of the built-in formatter to tidy up your code? With
this update, it has become even easier than before. Install the plugin from the JetBrains
Marketplace and then, on the , tick the new
On code reformat checkbox and the IDE will use Prettier whenever you reformat your
, , , and files. Other file types can be
easily added, too.

Manage setting layers

By default, you can share JetBrains Rider settings per solution using the ‘Solution team shared’ layer — the only thing you need to do is to put the *.dotSettings file under version control. If you want to share settings in other ways, you would need to learn how to create new setting layers, import and export them. For these purposes, JetBrains Rider provides the Settings Layers dialog, available in the Settings dialog (by clicking the Manage Layers button).

Custom setting layers are added under existing default layers. For example, if you want the settings from the custom layer to be applied for all solutions, add it under ‘This computer’ layer; otherwise add it under one of the solution-specific layers depending on whether you want it to override the team-shared settings or not.

As soon as a custom setting layer is added, it appears in the Save selector in the Settings dialog, using which you can save modified settings to the custom layer. You can also modify settings in this layer by .

As an alternative to saving modified settings to a specific layer using the Save selector in the Settings dialog, you can open a specific setting layer for editing.

You can export a specific subset of settings from any setting layer to a new settings file. This file can be then used on another instance of JetBrains Rider to apply these settings.

As an alternative to , you can copy a subset of settings from this custom layer to one of the existing default or custom layers.

JetBrains Rider also allows you to copy a subset of settings from one mounted setting layer to another.

If necessary, you can clear all settings saved in a specific layer. To do so, right-click the layer and click Reset in the context menu.

You can also disable custom setting layers temporarily by clearing check boxes next to them or unmount a specific custom setting layer by right-clicking on it and selecting Remove in the context menu.

Install as a snap package on Linux

You can install JetBrains Rider as a self-contained snap package. Since snaps update automatically, your JetBrains Rider installation will always be up to date.

JetBrains Rider is distributed via two channels:

  • The stable channel includes only stable versions. To install the latest stable release of JetBrains Rider, run the following command:

    sudo snap install rider —classic

    The option is required because the JetBrains Rider snap requires full access to the system, like a traditionally packaged application.

  • The edge channel includes EAP builds. To install the latest EAP build of JetBrains Rider, run the following command:

    sudo snap install rider —classic —edge

When the snap is installed, you can launch it by running the command.

To list all installed snaps, you can run . For information about other snap commands, see the Snapcraft documentation.

Plugin packaging

Rider plugins are simple ZIP archives containing metadata about the plugin, ReSharper extensions (DLL) and/or IntelliJ extensions (JAR). The content is structured like this:

Among other declarations, the must provide common metadata about its id, name, version, and frontend dependencies:

For simple plugins that don’t contain code that is specific to Rider, we might choose to manually pack the archive. However, this requires us to also manually update the tag according to the About JetBrains Rider dialog. Also note that archives created using .NET capabilities (like or PowerShell’s ) might not work.

For more complex plugins as well as for better testability, it is recommended to have a dedicated . This will also automatically take care of updating the tag.

Line breakpoints

Initially, a breakpoint is represented with a filled red circle on the left gutter . The line of code where the breakpoint is set is highlighted. After you start debugging, a valid breakpoint is marked with the green check mark and program execution will stop before this line of code is executed.

You have an option to temporarily disable a breakpoint without actually deleting it. Disabled breakpoints are shown as empty red circles .

If you need a breakpoint that works just once, you can either set a temporary breakpoint with the dedicated command or make any line, method, or exception breakpoint temporary. When hit, such breakpoints are immediately removed.

Browse non-solution files and folders

One way of exploring non-solution items is to . But JetBrains Rider also allows you to open and explore any files and folders even without any solution being open. This way you can work on web projects that do not have a .sln file or just study any text file in the editor.

To open a file or a folder, press Ctrl+O or choose File | Open | File or Folder from the main menu. Depending on what you choose, JetBrains Rider will do one of the following:

  • A file will be just opened in the editor but not added to the solution view.

  • If you choose to open a folder while a solution is loaded, JetBrains Rider will suggest that you either close the current solution and open it in the current window or open the folder in a new application window.

  • If the selected folder or any of its subfolders contains a .NET solution (.sln file), you will be able to pick one of them and open the solution instead of folder. But if you still want to browse the folder, click Just open the directory. In this case JetBrains Rider will not analyze .NET code.

What is EditorConfig and how does JetBrains Rider extend it?

EditorConfig is a configuration file convention that is used to define and maintain consistent code styles between team members working on the same code as well as between different editors and IDEs that they might use. The styles are saved in INI-like files named .editorconfig, where section names are file masks and properties inside a section define code styles for files matching that masks.

As EditorConfig convention suggests, JetBrains Rider will apply code styles defined in files named .editorconfig in the directory of the current file and in all its parent directories until it reaches the root filepath or finds an EditorConfig file with . File masks specified in .editorconfig files, for example are also taken into account.

JetBrains Rider understands , most frequently used , and provides a set of custom EditorConfig properties, which allow for much more granular configuration of formatting, syntax, and code inspection rules — in fact, each code style preference that you can configure in the JetBrains Rider settings dialog has its own EditorConfig property. This means that you can maintain the entire configuration of code style and inspection rules in EditorConfig files. Below is an example of EditorConfig properties supported by JetBrains Rider:

Before Launch

In this area you can specify tasks that must be performed before starting the selected run/debug configuration. The tasks are performed in the order they appear in the list.

Item Shortcut Description
Alt+Insert

Click this icon to add one of the following available tasks:

  • Run External tool: select to run an external application. In the dialog that opens, select one or multiple applications you want to run. If it is not defined in JetBrains Rider yet, add its definition.

  • Run Another Configuration: select to execute another run/debug configuration. In the dialog that opens, select the configuration to be run.

  • Build solution: select this option to build the solution before launching the configuration.

  • Run File Watchers: select this option to have JetBrains Rider apply all the currently active File Watchers.

  • Run Grunt task: select this option to run a Grunt task.

    In the Grunt task dialog that opens, specify the Gruntfile.js where the required task is defined, select the task to execute, and specify the arguments to pass to the Grunt tool.

    Specify the location of the Node.js interpreter, the parameters to pass to it, and the path to the grunt-cli package.

  • Run Gulp task: select this option to run a Gulp task.

    In the Gulp task dialog that opens, specify the Gulpfile.js where the required task is defined, select the task to execute, and specify the arguments to pass to the Gulp tool.

    Specify the location of the Node.js interpreter, the parameters to pass to it, and the path to the gulp package.

  • Run npm Script: select this option to execute an npm script.

    In the NPM Script dialog that opens, specify the .

  • Compile TypeScript: select to run the built-in TypeScript compiler and thus make sure that all the changes you made to your TypeScript code are reflected in the generated JavaScript files. In the TypeScript Compile Settings dialog that opens, select or clear the Check errors checkbox to configure the behaviour of the compiler in case any errors are detected:

    • If the Check errors checkbox is selected, the compiler will show all the errors and the run configuration will not start.

    • If the Check errors checkbox is cleared, the compiler will show all the detected errors but the run configuration still will be launched.

  • Generate CoffeeScript Source Maps: select this option to generate the source maps for your CoffeeScript sources. In the dialog that opens, specify where your CoffeeScript source files are located.

  • Upload files to Remote Host: select this option to have the application files automatically uploaded to the server according to the default server access configuration.

  • Run Remote External tool: adds a remote SSH external tool.

Alt+Delete Click this icon to remove the selected task from the list.
Enter Click this icon to edit the selected task. Make the necessary changes in the dialog that opens.
Alt+Up/Alt+Down Click these icons to move the selected task one line up or down in the list. The tasks are performed in the order that they appear in the list.
Show this page Select this checkbox to show the run/debug configuration settings prior to actually starting the run/debug configuration.
Activate tool window

By default this checkbox is selected and the Run or the Debug tool window opens when you start the run/debug configuration.

Otherwise, if the checkbox is cleared, the tool window is hidden. However, when the configuration is running, you can open the corresponding tool window for it yourself by pressing Alt+4 or Alt+5.

Debugger

New Debugger API

The new release comes with the new debugger API which has been largely rewritten. This is
not noticeable from the UI, but it allows more features to come and allows plugins to hook
into the debugging process as never before. This includes improved super-lazy value
calculations with better interruption and custom value representations. The only thing
noticeable from the outside is that debugger tool windows show the correct icons for all
variables.

Data breakpoints Windows only

Data breakpoints are useful when you need to focus on a particular object’s properties. You
typically use them in scenarios where you know what will change, but have no idea where the
change comes from in your codebase. This will be accessible from the Watch tool window, and
will even work with array elements. Due to current platform limitations, this feature is only
available for .NET Core 3+ on Windows.

Настоящее и будущее .NET

— Слушай, вот вся эта весёлая связка “Mono, Xamarin, Microsoft”, и вся история про разные рантаймы (Mono, классический, Core) — вот как вы со всем этим пёстрым зоопарком будете жить?— То есть, подожди, была версия 1.0, про которую сказали, что стабильная, потом вышла 1.1…— То есть вышел новый тулинг.— Если ты меня спросишь, какие у меня ощущения от истории с CoreCLR, то мне в голову приходит слово «хаос». Какие у вас ощущения с коллегами?— Нет ли такого, что человек пишет на .NET, сегодня слышит одно, завтра другое, ему приходится всё переделывать несколько раз, он просто плюёт и говорит «нафиг я тут трачу кучу времени на переписывание, пойду-ка на другую платформу».— Ты затронул очень интересную тему — дотнет и кроссплатформенность, дотнет и опенсорс. Давай про эти два больших блока поговорим. Вот про Linux, раз уж мы это затронули: .NET и Linux вместе уже какое-то время существуют. Стало ли за это время лучше?— По тому, что вы видите по своим клиентам: уходят ли они на CoreCLR?— А что с Roslyn? Вышла новая Студия, что там у них с компилятором?— C# 7 идёт с Roslyn — прямо из коробки? Roslyn прогрессирует за это время?— Вы пытались затащить к себе куда-нибудь Roslyn и что-нибудь с этим сделать?— Поговорим о перфомансе. CoreCLR, Roslyn по сравнению c Mono с классическим legacy-компилятором. То есть два рантайма, у них будет разный перфоманс. Как тебе это видится?— А ты сам контрибьютишь куда-то?— Лёша Шипилёв, который был здесь года полтора назад, говорил, что есть очень серьезный порог вхождения — это несколько лет для любых компиляторщиков и вообще системщиков, а время, через которое человек начинает приносить пользу — это вообще чуть ли не десять лет. Это оень серьёзный барьер для входа.— Очень во многом это всё было переделано и переписано как раз для того, чтобы порог входа был ниже, потому что иначе невозможно же.— Вы взаимодействуете по этим вопросам с Microsoft. Вот эта их история про опенсорс, через который вы всё это делаете — GitHub, пуллреквесты — это реально работает? В разрезе .NET-вещей — это больше формальность или работающая схема?— Или не будет.Kestrelв топ-10— Для всех для .NET-серверов или серверов вообще — типа nginx, Apache?Бен Адамсконтрибьютить— Это майкрософтовский проект?

Plugin project (JVM)

The recommended solution for building Rider frontend plugins is to use the gradle-intellij-plugin. This usually involves two files and .

Inside we define the project name and other global data:

With we basically use and extend the task provided from the gradle plugin. Here is an example:

For more information about building IntelliJ plugins, please see the IntelliJ Platform SDK.

Protocol extension

Rider has an extensible protocol to allow communication between IntelliJ frontend and ReSharper backend. This requires our plugin to implement a data model that can be used on .NET and JVM side. For our convenience, the IntelliJ gradle plugin allows to generate these implementations from a Kotlin base definition. Here is an example:

To generate the Kotlin and C# model implementation from that, we need to extend our file. At the start we need to add a dependency for :

Then we can define our own task:

Development

Using the gradle-intellij-plugin, we can easily launch an experimental Rider installation with our plugin installed right away. We can either start the task from the Gradle tool window inside IntelliJ IDEA, or execute from the command-line.

Last modified: 24 July 2018

Store and share formatting rules

Rider stores its code formatting preferences using both Directory-Based Settings (for web languages) and Layer-Based Settings (for .NET languages). Both setting-management mechanisms support sharing of settings. Layer-based settings are also compatible with ReSharper. In the Rider settings dialog, you can look at the icons to see which setting-management mechanism is used for specific language:

You can also configure formatting settings via in EditorConfig . These settings can be stored in .editorconfig files on different levels of your solution hierarchy. The files are normally put under VCS so that settings defined there are shared among the project team. JetBrains Rider lets you use EditorConfig to define any of its formatting preferences that are available in in the JetBrains Rider’s Settings dialog. You can find names and descriptions of supported EditorConfig properties in the EditorConfig reference.

It is important to note that any formatting property defined in an .editorconfig file will override the same property defined in JetBrains Rider settings in the scope where this .editorconfig file applies.

Компиляция в native и подведение итогов

— Ну ты попробуй, это хорошая история. А есть ещё история в современном .NET, связанная с перфомансом: компиляция в натив. Вот ты что-то меряешь в случае нативной компиляции?— То есть она просто сырая?— Что она даёт? Она же наверняка даёт не очень хороший перфоманс. Это многопроходный хотя бы компилятор? Я почему задаю этот вопрос: в современной GCC есть сценарии, на которых они делают по 70 проходов. То есть они по internal representation вот так вот много раз бегают.profile-guided optimization— То есть, запускаешь своё приложение с некоторым агентом, этот агент запускает некую статистику, потом ты её на входе скармливаешь NGen’у, и он что-то делает?— Но если хорошо скомпилируешь, то нет накладных расходов на компиляторные потоки. JIT-компилятор ведь работает в той же машине. Это footprint, всё это отъедает память, хочется понять, какие перспективы у этого всего.— Хорошо, мы поговорили про NGen, а что сейчас происходит, новая компиляция в натив?— В какой C++?— В managed?девелопят на гитхабе— У меня из нашего разговора сложилось впечатление, что в попытке покрыть всё Microsoft покрывает не ровными областями, а сначала так, потом этак, и одно и то же становится возможно сделать многими способами. И возникает вопрос: я хочу что-то написать — как мне это сделать? Какой рантайм выбрать? Я ставлю Rider, думаю «вот у меня новая крутая IDE, я C#-программист, у меня новый проект». Как мне выбрать правильную технологию для него?— И это трудно, потому что этого как-то резко стало много. Мне тяжело ориентироваться, и думаю, что человеку, который большинство времени пишет продакшен-код для энтерпрайз-проекта, не сильно легче. И я вижу тут проблему. Прокомментируй, пожалуйста: вот тебе с этим зоопарком как живётся в Rider?— В своё время у Джоэла Спольски была программная статья про Microsoft. Он писал, что Microsoft постоянно делает новые технологии и сама на этом зарабатывает, а всем другим не даёт. И что люди, работающие с Microsoft, вынуждены постоянно заниматься переписыванием под новые MS-стандарты, платформы и среды. Это он писал лет 15 назад, и как-то не сильно всё изменилось. Люди не business value делают, а переписывают код с одного рантайма на другой.— Есть ещё история про экосистему: если продукт существует 2-3 года, то появляется некоторое количество документации, ответов на Stack Overflow, статей на Хабре или Medium, в блогах. В общем, не перегибает ли тут Microsoft палку? Вам тут как?— За вами же легаси тянется. Вот вы делаете ReSharper, и он что-то поддерживал. И пусть Microsoft это уже не очень поддерживает, вы вынуждены это тянуть. Если в своём коде я могу при выходе несовместимого 1.1 всё переписать и 1.0 выкинуть, то у вас же будут кастомеры, которые сидят на 1.0. И как вы на это закладываетесь?DotNext, где он сделает доклад о скорости арифметических операций в платформе .NET.

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий