ReSharper 20 岁了!
20 年引领开发者工具潮流
ReSharper 自 2004 年以来一直是 .NET 开发者社区的必备工具,作为 Visual Studio Marketplace 上最受欢迎的扩展程序,下载量超过 250 万次。首次发布后,ReSharper 的影响力立竿见影,彻底改变了开发者探索、编写、改进和维护代码的方式。我们来仔细查看这个扩展程序的主要里程碑及其对 .NET 生态系统的持久影响。
2002
2002 年 1 月
.NET Framework 1.0(以及作为其一部分的 ASP.NET 1.0)、C# 1.0、Visual Studio 2002、Windows Forms、CLR 1.0 和 ADO.NET 发布。

2002
Visual Basic .NET (VB.NET) 发布

2003
JetBrains 开始开发 ReSharper,利用我们在 IntelliJ IDEA 1.0 上的经验以及 Java 与 C# 之间的相似之处。启动了两个项目:Visual Studio 扩展程序和 .NET IDE。
2003 年 4 月
Visual Studio 2003 发布
2004
2004 年 6 月
Mono 1.0 发布
2004 年 7 月 21 日 🎉

ReSharper 1.0 搭载了:
- 导航(Find Usages(查找用法)、Go to Declaration(转到声明)和快捷键)
- 智能类型代码补全
- 实时模板
- 代码高亮显示
- 以及 Rename(重命名)重构
有趣的是,C# 解析器生成器是用 Java 实现的!

Evgeny Pasynkov
初代 ReSharper 的开发者之一
“ReSharper 的首次购买是在公开发布 10 分钟后达成的,我们都特别激动!”
2005
您知道 ReSharper IDE 差点在 2005 年问世吗?
在 Visual Studio 2005 和 C# 2.0 发布后,由于使用 C# 从头构建的工作量巨大,我们放弃了发布 ReSharper IDE 的计划。ReSharper 作为 Visual Studio 扩展程序的销量持续增长,并且 Visual Studio Marketplace 也在不断扩大,我们决定专注于改进现有扩展程序。我们从未忘记创建 .NET IDE 的愿景,后来以 JetBrains Rider 的形式实现了这一愿景。




下一个版本是 ReSharper 1.5,它具有 16 个新重构,包括 Extract Interface(提取接口)、Extract Superclass(提取超类)、Copy Type(复制类型)、Introduce Field(引入字段)、Encapsulate Field(封装字段)、Introduce Parameter(引入形参)以及 Convert Interface to Abstract Class(将接口转换为 abstract 类)(和反向操作)。
下一个版本是 ReSharper 1.5,它具有 16 个新重构,包括 Extract Interface(提取接口)、Extract Superclass(提取超类)、Copy Type(复制类型)、Introduce Field(引入字段)、Encapsulate Field(封装字段)、Introduce Parameter(引入形参)以及 Convert Interface to Abstract Class(将接口转换为 abstract 类)(和反向操作)。
2005 年 4 月
F# 1.0 发布
2005 年 10 月 11 日
2005 年 11 月
Visual Studio 2005、C# 2.0、.NET Framework 2.0 和 CLR 2.0 发布
2006
2006 年 1 月
插件作者 Ilya Ryzhenkov 希望 ReSharper 提供更多可扩展性,为未来的插件铺平道路。后来他加入了 JetBrains,以产品经理的身份与 ReSharper 团队一起推动这项工作。

2006 年 5 月 22 日
ReSharper 2.0 最终成为一个非常漫长的项目,部分原因是它支持两个版本的 Visual Studio 和 C#。经过近两年的工作,它终于发布,并引入了对 C# 2.0、ASP.NET 和 Visual Studio 2005 的支持,以及九个新重构和一个突破性的单元测试运行程序。此外,它还具有设置和模板共享功能。


2006 年 6 月 1 日
JetBrains .NET 工具博客上线,最初专注于分享与 .NET 效率类工具相关的有趣信息,主要围绕 JetBrains ReSharper 和 JetBrains dotTrace Profiler。
2006 年 9 月 14 日
dotTrace 2.0 (Beta) 发布,包含的内存分析功能七年后将成为一个独立产品 (dotMemory)。
2006 年 11 月
.NET Framework 3.0 和 Windows Presentation Foundation (WPF) 发布。
2006 年 12 月 11 日
这个版本带来了更新的 UI,将受 IntelliJ IDEA 启发的元素替换为当代 Windows 窗体控件,旨在实现与 Visual Studio 更好的集成。
2007
2007 年 6 月 21 日
ReSharper 3.0 发布,具有全功能的 VB.NET、XML 和 XAML 支持,以及 C# 与 VB 之间的跨语言功能。ReSharper 3.0 还引入了单元测试资源管理器,这是一个完全重做的单元测试运行程序。

2007 年 11 月
C# 3.0、Visual Studio 2008 和 .NET Framework 3.5 发布
2008
Jedi Coding with ReSharper
JetBrains 产品经理 Ilya Ryzhenkov 制作了一个半开玩笑的视频来推广 Visual Studio 中的 ReSharper。在视频中,他用 8 分钟构建了一个控制台应用程序,展示了快速代码生成、即时代码导航以及 ReSharper 如何帮助重构和重新组织代码。

您知道 ReSharper 团队曾经使用外部实用程序应用来解决 32 位 Visual Studio 进程的限制吗?
ReSharper 在 Visual Studio 中面临内存限制,被限制为几百 MB,难以应对复杂的项目。此外,.NET 的 16 MB 块内存分配导致了严重的碎片化,留下很少的连续可用块。为了解决这个问题,Leonid Shalupov 开发了一个在 Visual Studio 之前启动的应用,拦截 VirtualAlloc/VirtualFree 系统调用以减少碎片化。ReSharper 支持团队向客户提供了这款应用,直到 Visual Studio 更新彻底解决问题。
2008 年 1 月
ReSharper 3.1 是第一个引入解决方案级分析 (SWEA) 的版本,可以实时检测整个解决方案中错误的 C# 代码,无需事先编译。这一独特功能在 IDE 中仍然不可比拟。

2008 年 3 月
ReSharper 产品经理建议使用验证作为最佳做法。
在 ReSharper 4.0 每夜构建版本中,有用户抱怨频繁出现将显式类型转换为 var
关键字的建议。ReSharper 产品经理 Ilya Ryzhenkov 在博客上的一场激烈讨论中解释了为什么使用 var
可以显著改善代码。

您知道 ReSharper 团队曾经用交通信号灯指示构建状态吗?
有人把一个来历不明的交通信号灯带到了圣彼得堡的 JetBrains 办公室。在一次编程马拉松中,这个交通信号灯被连接到构建服务器,每当 ReSharper 构建失败,它就会亮红灯。据说它几乎从没闪过绿灯(不像今天)。
2008 年 6 月 10 日
除了解决方案级分析之外,ReSharper 4.0 还引入了代码清理和实时模板编辑器与管理器。该扩展程序还提供两个专门版本:C# 和 VB.NET。
2008 年 8 月 11 日
Entity Framework (EFv1) 随附在 .NET Framework 3.5 Service Pack 1 和 Visual Studio 2008 Service Pack 1 中。
2008 年 10 月
Mono 2.0 发布
2009
2009 年 3 月
ASP.NET MVC 1.0 发布

2009 年 9 月
iOS 版 Xamarin(原 MonoTouch 1.0)发布
2009 年 12 月 11 日


2010
2010
ReSharper 成为 JetBrains 的支柱
ReSharper 的营收有时会大大超过 IntelliJ IDEA,而其他市场和技术还没有被 JetBrains 覆盖。

2010 年 3 月
ReSharper 5.0 EAP 引入 Call Tracking(调用跟踪)和 Value Tracking(值跟踪)
Call Tracking(调用跟踪)旨在作为一种便捷的方式执行全面的 Find Usages(查找用法)或 Go to Declaration(转到声明),而 Value Tracking(值跟踪)将确定某个不正确的值如何传递到程序中的给定点以及它接下来可能传递到哪里。EAP 还引入了 Inspect This (Ctrl+Shift+Alt+A)(检查(Ctrl+Shift+Alt+A)) – 这是 Call Tracking(调用跟踪)、Value Tracking(值跟踪)和类型层次结构功能的新快捷键。
2010 年 4 月
C# 4.0、Visual Studio 2010 和 .NET Framework 4.0 发布
2010 年 4 月 7 日
Structural Search(结构化搜索)和 Replace(替换)在 ReSharper 5.0 EAP 中引入
ReSharper 最强大的功能之一,允许您找到与结构化模板匹配的代码。



2010 年 4 月 13 日
ReSharper 5.0 发布,具有一系列创新功能,例如:
- 调用跟踪和值跟踪
- 循环到 LINQ
- 结构化模式
- 以及解决方案级警告和建议
其他值得注意的更新包括适用于 ASP.NET 和 ASP.NET MVC 开发者的扩展工具包、项目重构和依赖项视图、对 NUnit 的原生支持,以及对 Visual Studio 2010 的支持。

Dave Mendlen
Microsoft 开发者平台和工具高级总监
“Microsoft 很高兴 Visual Studio 行业合作伙伴 JetBrains 早期投资支持 Visual Studio 2010 和我们的下一代应用程序开发平台,并且今天同时发布 ReSharper 5.0。
ReSharper 5.0 帮助客户简化了使用 Microsoft 产品(尤其是 Visual Studio 2010 和 .NET Framework 4)时从设计到部署的开发流程。”
2010 年 9 月 14 日

2010 年 10 月
ASP.NET MVC 3 发布,引入 Razor 语法。
2010 年 12 月

2011
2011 年 2 月
Tales from QA: Pinky and the Brain 发布
当时 ReSharper 团队的 QA 专员 Asia Rudenko 创作了一部漫画,并在 .NET 工具博客上分享,其中部分内容是:“我必须承认:从一开始,我就怀疑 ReSharper 想要统治世界…”


2011 年 2 月 17 日
JetBrains 宣布 ReSharper 6 将配备免费反编译器
除了宣布推出 ReSharper 的捆绑反编译器之外,JetBrains 还宣布推出 .NET 反编译器和程序集浏览器 dotPeek。作为对 Redgate 反编译器成为付费产品的回应,我们承诺保持 dotPeek 免费。dotPeek 这个名字来自我们在 Facebook 发起的头脑风暴竞赛。

2011 年 4 月
Xamarin.Android(原 Mono for Android)发布
2011 年 6 月 30 日
我们添加了对三种新语言(JavaScript、CSS 和 HTML)和 ASP.NET MVC 3 Razor 视图引擎的支持,以及 JavaScript QUnit 测试运行程序支持,使 ReSharper 6.0 和 Visual Studio 成为开发 Web 应用程序的最佳环境之一。

2011 年 10 月 19 日
Microsoft 推出 Roslyn 项目

2012
2012 年 1 月 18 日
随着 ReSharper 6.1 的发布,我们推出了 ReSharper SDK – 这款独立框架旨在简化 ReSharper 的插件开发。

2012 年 5 月 10 日
2012 年 7 月 26 日
ReSharper 7.0 与 Visual Studio 2012 完全集成,支持 Windows 运行时、LightSwitch、SharePoint 和 INotifyPropertyChanged
,提供 Extract Class(提取类)等新重构,并初步支持 ASP.NET 4.5 和 ASP.NET MVC 4。

2012 年 8 月
C# 5.0 和 ASP.NET MVC 4 发布
2012 年 9 月
Visual Studio 2012 发布
2013
2013 年 1 月 24 日
Hadi Hariri 和 Julie Lerman 携手制作 A Story of Entity Framework and ReSharper
JetBrains 技术布道师与 Microsoft 区域总监和 Microsoft MVP 共同参与了一场即兴在线讲座,展示了如何使用 Entity Framework 的代码优先方式并享受 ReSharper 的优势。

2013 年 3 月
InspectCode(带有 ReSharper 代码检查的命令行工具)推出后,ReSharper 的代码分析扩展到了 Visual Studio 之外。

2013 年 7 月
ReSharper 为什么这么棒?
在这个抓屏中,Hadi Hariri 展示了人们如此喜爱 ReSharper 的原因❤️。

2013 年 7 月 18 日
ReSharper 8.0 引入新的导航功能:
- Go to Everything(后来更名为 Search Everywhere(随处搜索)并添加到 JetBrains IDE 中)
- 程序集资源管理器
- Navigate to Generic Substitutions(导航到泛型替换)
- 以及 Navigate to Assembly Explorer(导航到程序集资源管理器)
这个版本还向所有 Visual Studio 用户引入了架构图,从项目依赖关系图开始。


2013 年 8 月 4 日
ReSharper 通过插件引入后缀模板,允许您输入点并从补全列表中选择模板来转换输入的表达式,无需回溯。这些模板于 2015 年添加到 ReSharper 10 EAP 中,随后在 IntelliJ IDEA 和其他 JetBrains IDE 中实现。
2013 年 10 月
Mono 3.0、.NET Framework 4.5、Visual Studio 2013 和 ASP.NET MVC 5 发布。
2013 年 10 月 22 日
2013 年 11 月 7 日
ReSharper SDK 以前作为 MSI 安装程序提供,后来作为 NuGet 软件包随 ReSharper 8.1 EAP 一起发布。
2013 年 11 月 27 日
dotTrace 内存分析器从头彻底重做,并作为 dotMemory 发布,提供全新的 .NET 内存分析体验。

2014
2014 年 4 月 1 日
随着对 Office 2003 的支持即将结束,我们决定在 ReSharper 中为 Clippy 提供一份新工作。最初只是愚人节玩笑,但实际上它已经是一个有效扩展程序,您可以在作者 Matt Ellis 的抓屏中观看它的实际运作。


2014 年 4 月
Microsoft 将 Roslyn 开源,但 ReSharper 决定不使用它
在 Microsoft Build 2014 大会上,Microsoft 将 Roslyn 项目开源,并发布了 Visual Studio 2013 的语言集成预览版。我们决定继续使用和开发 ReSharper 自己的代码分析引擎,因为它提供了更多的灵活性和创新机会。

2014 年 11 月 19 日
随着 ReSharper Ultimate 的发布,我们更新了 .NET 产品线。之前的三个 ReSharper 版本(完整版、C# 和 VB.NET)被 ReSharper、ReSharper C++ 和 ReSharper Ultimate 取代,ReSharper Ultimate 包括 ReSharper 与 ReSharper C++,以及 dotCover、dotTrace 和 dotMemory。

2014 年 11 月
Visual Studio Community 2013,Visual Studio 的第一个社区版本发布
2014 年 12 月 12 日
ReSharper 9.0 与 dotTrace 6.0、dotCover 3.0、dotMemory 4.2、dotPeek 1.3 和统一安装程序一起发布
亮点包括对 Visual Studio 2015 Preview、C# 6.0 和正则表达式的支持。ReSharper 9.0 还引入了新的导航功能,包括 Go to Action(转到操作)和 Navigate to Exposing APIs(导航到公开 API),以及类型依赖关系图。dotTrace 6.0 引入了时间线分析模式。此外,所有 JetBrains .NET 工具都开始使用单个安装程序。


2015
2015 年 4 月
Visual Studio Code 1.0 和 Mono 4.0 发布
2015 年 4 月 8 日
新产品 ReSharper C++ 1.0 加入 ReSharper Ultimate 系列,旨在改善 Visual Studio 中 C++ 开发者的使用体验。ReSharper C++ 继承了 ReSharper 的大部分功能,包括强大的导航、编码辅助和代码生成。作为引擎,它为适用于游戏开发者的 JetBrains Rider 和 CLion(Nova 引擎)中的 C++ 支持提供支持。
2015 年 6 月
Visual Studio Code 1.0 和 Mono 4.0 发布
2015 年 7 月
通用 Windows 平台 (UWP) 和 Visual Studio 2015 发布
2015 年 8 月 10 日
DevExpress 宣布将 CodeRush 移植到 Roslyn️
DevExpress 发布了新产品 CodeRush for Roslyn,它与前身 CodeRush Classic 的不同之处在于使用 Roslyn 而不是自己的代码引擎。

2015 年 10 月
.NET Framework 4.6 发布
2015 年 10 月 15 日
JetBrains 推出 ReSharper Build 以避免冗余重建
ReSharper Build 于 2005 年作为内部工具推出,后来成为 ReSharper 10 的一项新功能,缩短了构建解决方案所需的时间。它用一个仅对需要更新的项目应用启发式的系统取代了 Visual Studio 的构建管理。
2015 年 10 月 16 日
JetBrains 宣布对 ReSharper Ultimate 工具版本控制的更改
JetBrains .NET 工具系列最初独立发展,但随着 ReSharper Ultimate 的推出,这种情况发生了改变。ReSharper Ultimate 引入了通用安装程序、共享程序集、同步发布周期和统一许可。从 ReSharper 10 开始,所有 .NET 工具版本都保持一致并保证兼容。


2016
2016 年 1 月 13 日
JetBrains 重新审视独立 .NET IDE 的愿景,推出 Project Rider
在 NDC London 上,我们发布了 Rider,这是一款基于 IntelliJ Platform 和 ReSharper 的 64 位跨平台 C# IDE。Rider 没有在基于 JVM 的 IntelliJ Platform 上重新实现 ReSharper 的功能,而是以无头模式使用 ReSharper,通过快速自定义二进制协议进行通信。后端是使用 C# 编写的 ReSharper,在 .NET 或 Mono 上运行,前端使用 Kotlin 编写,利用了 IntelliJ Platform 的 API。

2016 年 6 月
.NET Core 1.0 和 ASP.NET Core 1.0 发布
2016 年 8 月 18 日
亮点包括对 ASP.NET Core 1.0 和 .NET Core 1.0 项目的支持、结构化导航以及对源和文本文件中任何文本的 Go to Text(转到文本)导航。


2017
2016 年 9 月
.NET Standard 1.0 发布
2017 年 3 月
Visual Studio 2017 和 C# 7.0 发布
2017 年 4 月 3 日
这个版本带有 Visual Studio 2017 支持、C# 7.0 的本地函数和 throw 表达式、Visual Studio 2017 中的 .NET Core 单元测试、EditorConfig 支持(针对所有语言)等。


2017 年 5 月
.NET framework 4.7 和 Mono 5.0 发布
2017 年 8 月 3 日
Rider 的诞生对我们来说是一个重大成就。它不仅标志着我们实现了跨平台 C# IDE 的梦想,还将 ReSharper 插件转变为可重用的 ReSharper 后端,现在支持其他 JetBrains 产品。Rider 通过无缝 UI 和 UX 提高效率,并在 32 位进程之外运行代码分析,展示了 ReSharper 的功能。
2017 年 8 月
.NET Core 2.0 发布
2018
2018 年 8 月 21 日
亮点包括对 C++/CLI 和 C# 7.3 的支持、与 ReSpeller 集成的拼写检查、初步 Blazor 支持等。

2018 年 12 月
Blazor Server(通过 SignalR 在服务器上运行)作为 .NET Core 3.1 的一部分发布。
2019
2019 年 4 月 30 日
这个版本引入了初步 C# 8.0 支持和 ReSharper C++ 中面向 Unreal Engine 开发者的第一组功能。

2019 年 4 月
.NET Framework 4.8 和 Visual Studio 2019 发布
2019 年 6 月
您知道 ReSharper 从磁盘异步读取项目模型吗?
我们改进了 ReSharper,使其能够直接从磁盘读取项目模型。这将绕过受制于 UI 线程依赖项和多目标框架限制的 Visual Studio 的 COM API。虽然我们考虑过 Roslyn,但它不符合我们的要求。这种方式促进了非 UI 线程写入操作,对于高效处理大型项目模型至关重要。我们开发了一种机制来计算后台线程上的差异,并在必要时无缝更新 UI。
2019 年 7 月
Mono 6.0 发布
2019 年 9 月
.NET Core 3.0 和 C# 8.0 发布
C# 8.0 引入了可为 null 引用类型,其实现很大程度上基于 ReSharper 的 null 分析。
2019 年 12 月 11 日
ReSharper Ultimate 2019.3 发布,搭载新的 .resx
编辑器
ReSharper 2019.3 引入了全新的 Localization Manager,帮助您更高效地处理解决方案中的许多 .resx
文件。这个版本还包括改进的 C# 8.0 支持以及 ReSharper 和 dotTrace 命令行工具中对 Linux 和 macOS 的支持。
2019 年 12 月
.NET Core 3.1 发布

2020
2020 年 5 月
Blazor WebAssembly(在 WebAssembly 上运行客户端)作为 .NET Core 3.2 的一部分正式发布。
2020 年 7 月 15 日
JetBrains 为 .NET 工具更新了许可,推出 dotUltimate 订阅
我们将 .NET 工具的许可精简为三个选项:
- 新的 dotUltimate 许可证,其中包括所有 .NET 工具和 VS 扩展程序。
- 包含 ReSharper 和 ReSharper C++ 的 ReSharper 订阅。
- 独立 .NET IDE 的 Rider 订阅。
现有 ReSharper Ultimate 和 ReSharper Ultimate + Rider 许可证持有者自动升级到 dotUltimate。

2020 年 10 月
ReSharper 2020.3 EAP 中引入使用 Dynamic Program Analysis (DPA) 排查分配问题的功能
DPA 是一个内存分析进程,它会在后台持续运行并检查应用程序是否存在各种问题。借助 DPA,您可以在部署到生产之前自动分析内存使用情况并找出难以诊断的内存分配问题。


2020 年 11 月
.NET 5 和 C# 9 发布
2021
2021 年 4 月 28 日
JetBrains 宣布 ReSharper 将与 Visual Studio 2022(64 位)搭配
Visual Studio 2022 将变成 64 位版本的消息对 ReSharper 团队来说是一个重大改变,因为自 JetBrains Rider 2017.1 发布以来,我们就已经知道 64 位可以正常工作。在这个时候,我们开始研究它将如何影响产品的性能。

2021 年 11 月
.NET 6、C# 10 和 Visual Studio 2022(64 位)发布

2022
2022 年 10 月
JetBrains Fleet 进入公开预览阶段并支持 C#
ReSharper 代码分析引擎现在将驱动新产品 JetBrains Fleet。
JetBrains Fleet 的第一个版本引入了一款轻量级、分布式、多语言代码编辑器,能够转变为强大的开发工具。它强调一种新的用户体验,同时利用现有的 JetBrains 技术增强协作和性能。
2022 年 11 月
.NET 7、C# 11.0 和 MAUI 发布
2022 年 11 月 2 日
Qodana 2022.3 EAP 发布,附带 .NET 检查
长期以来,如果您想在 CI/CD 服务器上的 IDE 之外运行 ReSharper 代码分析,您只有一个选择:ReSharper 命令行工具中的 InspectCode。这个版本带来了 JetBrains 的社区 linter Qodana,它基于 ReSharper 并为 .NET 项目提供静态分析。

2023
2023 年 6 月 26 日
AI Assistant 登陆 ReSharper 2023.2
我们在 ReSharper 中引入了 JetBrains AI Assistant 的早期实现 – 一款 AI 赋能的聊天工具,专门用于回答编程问题并协助故障排查、重构、记录和其他开发工作流。AI Assistant 是一项补充功能,可以通过 JetBrains AI 订阅使用。


2023 年 11 月
.NET 8 和 C# 12 发布
2023 年 12 月 7 日
Grazie 成为 ReSharper 的新内置语法和拼写检查器
JetBrains Grazie 支持 20 多种语言,与 ReSharper 集成,能够在 ReSharper 支持的编程语言(C#、C++、VB.NET)、标记语言(HTML、XML、XAML)和注释中捕捉自然语言错误。

2023 年 12 月 7 日
ReSharper 中的 AI Assistant 脱离预览阶段
JetBrains AI Assistant 全面推出,具有许多新的和改进的功能,助您提高工作效率:上下文感知 AI 聊天、更好的 AI 操作项目感知、AI 赋能的多行代码补全、单元测试生成、XML 文档生成和创建自定义提示库等。

2024
ReSharper 组件模型的持续发展
ReSharper 的架构取得了重大发展,主要集中在其组件模型上。最初,它使用来自 Java 的静态 XML 配置服务定位器,然后过渡到由特性标记的基于反射的组件。这消除了配置文件,但保持了容器的静态性。
为了支持动态插件加载,IViewable<T>
针对实时重新配置推出,但事实证明这过于复杂。于是,一种无需重启 ReSharper 即可关闭并重新组装容器的方法被开发出来。
2020 年,组件模型针对单进程和双进程设置进行了调整,实现了进程代理。当前的工作重点是性能改进,并专注于多线程容器构建以实现按需加载,这带来了持续的架构挑战。
ReSharper 的未来
我们对 ReSharper 未来的愿景包括与其他 JetBrains 产品的集成、增强的 AI 功能以及符合用户反馈和请求的 ReSharper 性能改进。我们还将紧跟最新的 C# 和 .NET 更新,并计划为韩语、简体中文和日语用户提供本地化版本。
以下是 ReSharper 2024.2 中即将推出的 AI 增强的预览:

联系我们 →
如果您希望我们添加内容或者您发现这个时间线上有任何错误。
如果我们选择展示您的故事,您将获得一件 ReSharper T 恤或一张 JetBrains 周边商店优惠券!
订阅 ReSharper 产品新闻
关注我们