JetBrains宣布Project Rider:一款C#跨平台IDE

JetBrains宣布推出ProjectRider,一款基于IntelliJ Platform的跨平台C# IDE,集成了ReSharper的诸多特性,支持.NET Framework、Mono及CoreCLR,提供导航、编辑、检查、重构等功能,适配Windows、MacOSX及Linux。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/02/jetbrains-announce-project-rider


NDC London上,JetBrains发布了一个新项目——跨平台的C# IDE,它基于IntelliJ Platform并使用ReSharper技术进行开发。该项目代号为Project Rider,这款IDE包含了大家早已熟悉的来自于ReSharper与基于IntelliJ的IDE的诸多特性,比如说快速修复、检测、智能导航等。虽然ReSharper寄生于Visual Studio中,但Project Rider却是个功能完善、独立的IDE。

虽然现在的项目还处于早期阶段,但已经包含了如下特性:

导航——智能导航是JetBrains IDEs的一个主要特性,Project Rider当然也不例外。它提供了标准的Go To Type、Go To File,并且集成了IntelliJ Platform的“Search Everywhere”特性,可以转向符号、类型、文件,甚至还可以在设置与动作中进行搜索。

还可以使用Navigate To弹出菜单,在类继承体系中查找父类/子类等,也可以查找使用的地方,其结果会显示在标准的IDE工具窗口中。

编辑——Project Rider实现了大量的智能编辑特性,从类型辅助(比如说插入花括号与自动格式化)到Live Templates(包括ReSharper 10的postfix模板),还提供了快速信息提示与边栏图标,从而可以做到继承导航与上下文动作等。

检查——ReSharper所支持的大多数检查都会在编辑器中以错误、警告、建议与提示的形式显示出来。这包括对无法识别的符号的红色代码显示与代码问题的下划线高亮显示等等。

Alt+Enter——如果没有Alt+Enter支持,那么JetBrains IDE就是不完善的,ReSharper快速修复的大多数菜单项与上下文动作都是可用的。Project Rider还支持将多个动作应用到整个文件中,并且可以直接修改菜单中检查的严重级别。

重构——Project Rider提供了有限的重构功能。大多数重构都需要某种形式的用户界面,不过这些界面目前尚未实现。Project Rider可以重命名符号,并引入或是内联变量,还可以根据Alt+Enter来修改代码。

反编译——如果导航到没有源代码的类型,那么Project Rider就会帮你进行反编译,结果与C#代码很类似。

当然了,作为一个标准IDE,它还包含了其他很多特性:

  • 多种运行时支持。Project Rider支持.NET Framework与Mono,对CoreCLR的支持也在进行当中。它可以加载MSBuild与MSBuild解决方案,以及DNX项目。此外,它还包含了用于创建新项目的模板。在创建空项目时,它真的就是空的!
  • 构建、运行与调试。一个IDE最为重要的特性之一就是调试,Project Rider当然也不例外。它可以构建并运行.NET Framework、Mono与DNX项目,并且可以调试.NET与Mono应用,DNX调试与CoreCLR支持正在进行当中。任何构建错误都会显示在构建工具窗口中,调试工具窗口用于显示调用堆栈、变量及观察窗口。
  • 跨平台。就像可以运行并调试多个运行时一样,Project Rider本身可以在多个平台上运行。它可以在Windows与Mac OS X上运行,Linux上也可以,不过还没有进行测试。

工作方式

Project Rider是个构建在IntelliJ Platform之上的独立IDE,就像WebStorm、DataGrip与JetBrains的其他IDE一样。不过,区别在于相对于在IntelliJ Platform(运行在JVM上)上重新实现ReSharper的特性,Project Rider与ReSharper之间是通过非常快速的自定义二进制协议进行通信的。这样,后端依旧是使用C#编写,运行在.NET或是Mono之上的ReSharper,而前端则使用Kotlin编写,并且调用IntelliJ Platform的APIs。我们后面会在博客中深度介绍其实现细节。

为何还要创建一款C# IDE?

主要是为广大开发者提供一种选择。我们坚信可以为那些在不同环境下工作的开发者提供优秀的用户体验。那为什么是现在呢?这是因为我们认为现在正是时候,原因如下:

  • 为了让ReSharper能够在不同环境下使用(独立于Visual Studio),我们已经艰苦工作多年了,dotPeek就是例证。
  • 现在已经有越来越多的开发者在使用非Windows平台,我们希望能给予他们所熟知的与ReSharper相同的体验。
  • 最后,微软现在正在将其平台与C#语言向着开源的方向推进,比如说CoreCLR。

这对于ReSharper意味着什么呢?

ReSharper依旧是Visual Studio的最佳扩展,也是我们的龙头产品之一。Project Rider使用了ReSharper则强化了我们对于ReSharper的承诺,因为对ReSharper的任何更新都不仅会让ReSharper受益,Project Rider也会从中得到巨大的好处。除此之外,我们希望在Project Rider上所做的工作反过来能促进ReSharper的不断发展。本质上,Project Rider只会加大我们在ReSharper上所付出的努力。

许可模型是怎样的?

虽然现在谈论具体细节还为时尚早,不过其许可模型将会与JetBrains Toolbox中的其他产品保持一致。在制订价格时,我们会考虑到可能会出现的诸多使用场景,比如说有人可能想要使用两个工具等等。我们希望尽快制订出价格信息。

路线图

现在已经在通往1.0的路上了。我们对于架构非常有信心,并且坚信已经打下了非常好的根基,从而能够实现出1.0版本中计划的那些特性。我们已经实现了不少功能,不过还有很多功能亟待实现。我们计划过一阵儿开放一个私有的EAP,并且截止到2月底。在我们的博客与Twitter上会提供注册表单。在这个私有EAP之后,我们将会转向公开EAP。到底什么时候开放公开EAP取决于早期测试者所提交的反馈信息。我们的目标是在今年秋季发布正式版本。我们对于Project Rider感到非常兴奋,并且希望你能与我们一同分享其中的喜悦之情。如果有任何问题,请随时提出来。不要忘记关注我们的Twitter账号@JetBrainsRider以了解未来的更新信息!相信Project Rider将会给广大C#开发者带来一缕清风。根据JetBrains以往的产品风格与特性,我们有理由相信这款新的IDE也一定不会让大家失望。

JetBrains是一家来自于捷克的软件开发公司,该公司位于捷克的布拉格。JetBrains以各种优秀的开发工具而闻名,比如说Intellij IDEA、WebStorm、PyCharm、RubyMine、AppCode、PHPStorm、TeamCity、YouTrack、DataGrip等等。每一款工具都深受广大开发者所钟爱。JetBrains所推出的各种工具基本上涵盖了常见的软件开发平台,如Mac、Windows及Linux等。感兴趣的读者可以到JetBrains官网了解各种产品的信息并下载试用。

### 在Rider IDE中创建Unreal Engine C++类时可选模板较少的原因 在 Rider 中创建 Unreal Engine 的 C++ 类时发现可用的类模板数量有限,这主要是因为 Rider 对于特定框架的支持程度以及配置是否完善所决定。JetBrains 官方确实提供了针对 Unreal 开发环境的一系列支持措施[^2],但是这些预设可能并未完全覆盖所有的类类型。 当 RiderVisual Studio (VS) 结合使用时,虽然 Rider 提供了更高效的编码体验,但仍需依赖 VS 所携带的一些基础构建工具链来完成项目的编译工作[^3]。因此,在某些情况下,如果 VS 的安装不完整或者缺少必要的组件,则可能导致 Rider 内部对于 Unreal 工程的理解不足,进而影响到类模板的数量显示。 ### 解决方案 为了增加在 Rider 创建 Unreal Engine C++ 类时的选择范围,可以采取如下方法: #### 方法一:确保完整的Visual Studio 组件安装 确认已按照最佳实践安装了所有必需的 Visual Studio 组件,特别是那些与 C++ 编写和调试有关的部分,如 C++ Core 功能、Windows 通用 C 运行库等。这样不仅有助于改善项目整体性能,也能让 Rider 更好地识别并提供更多的类模板选项给开发者。 #### 方法二:手动添加自定义模板 如果默认提供的模板仍然不足以满足需求,可以通过以下 Python 脚本的方式来自动生成新的类文件,并将其作为自定义模板保存下来以便日后重复利用。 ```python def create_unreal_class_template(class_name, base_class="UObject"): template = f'''#pragma once #include "{base_class}.h" // 自定义属性声明区域... /** * {class_name}的具体实现... */ UCLASS() class YOURPROJECT_API U{class_name}:{public}{base_class} {{ GENERATED_BODY() // 成员变量定义区... // 函数原型声明区... }}; ''' with open(f"{class_name}.h", "w") as file: file.write(template) create_unreal_class_template('MyCustomActor', 'AActor') ``` 通过上述脚本可以根据实际需要调整 `base_class` 参数从而适应不同类型的 Unreal 类型创建场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值