ReSharper 2026.2 Help

CleanupCode 命令行工具

CleanupCode 是一个 免费跨平台的命令行工具,可以在项目或解决方案中执行 代码清理 (修复格式、应用语法样式、删除冗余等),以确保代码库的一致性。

它还可以重新格式化指定的一组 .NET 源文件,即使没有解决方案或项目。

运行 CleanupCode

  1. 下载 ReSharper 命令行工具。 使用下载按钮旁的选择器选择您的操作系统。

  2. 将命令行工具包解压到任意目录。

    确保下载的 .zip 文件在解压前已“解除阻止”:右键单击文件,选择 属性 并单击 解除阻止。 如果未执行此操作,.NET 框架将以部分信任模式加载应用程序,这意味着它将无法正确加载或运行。

  3. 如果您打算清理一个解决方案并将解决方案文件用作参数,请确保在运行工具之前使用正确的构建配置构建该解决方案。

  4. 运行以下命令:

    cleanupcode.exe YourSolution.sln

    清理整个解决方案,或

    cleanupcode.exe File1 File2 File3 ...

    清理一个或多个 .NET 文件,或

    cleanupcode.exe <FileMaskForTargetFiles>

    清理与文件掩码匹配的一组 .NET 文件。

  5. 或者,您可以安装 ReSharper 命令行工具作为 .NET 工具 ,并使用 jb 命令运行 CleanupCode。

使用 DotSettings 配置 CleanupCode

如果您之前使用 ReSharper 处理过目标解决方案,可能已经配置了代码样式设置。 如果是这样,CleanupCode 将在 .DotSettings 文件中找到您的 自定义设置并应用它们。

CleanupCode 将从 DotSettings 文件中读取以下首选项:

  • 代码格式规则 (ReSharper | 选项 | 代码编辑 | 常规格式化样式 和 ReSharper | 选项 | 代码编辑 | [语言] | 格式化样式)

  • 语法样式 (ReSharper | 选项 | 代码编辑 | [语言] | 语法样式)

  • C# 和 C++ 的文件头样式 (ReSharper | 选项 | 代码编辑 | 文件头文本)

  • C# 的文件和类型布局 (ReSharper | 选项 | 代码编辑 | C# | 文件布局)

  • 目标语言(ReSharper | 选项 | 环境 | 产品与功能)

如果您想在 CI 服务器上配置 CleanupCode,可以使用 ReSharper 在本地完成所有配置, 将设置保存到解决方案团队共享层 ,然后将生成的 YourSolution.sln.DotSettings 文件提交到 VCS 中的解决方案目录。 服务器上的 CleanupCode 将找到并应用这些设置。

或者,您可以通过 --settings 参数指定共享 .DotSettings 文件的路径(如果有,它将覆盖其他设置文件中的设置)。

使用 EditorConfig 和 Clang-Format 配置 CleanupCode

您可以通过 EditorConfig为所有语言以及通过 Clang-Format为 C++、JavaScript 和 TypeScript 配置代码样式设置。 这些设置可以存储在解决方案层次结构中不同级别的 .editorconfig 、 .clang-format 或 _clang-format 文件中。 这些文件通常放在 VCS 下,以便定义的设置在项目团队中共享。

ReSharper 允许您使用 EditorConfig 定义其 选项 对话框中可用的任何代码样式首选项。 您可以在 EditorConfig 参考中找到支持的 EditorConfig 属性的名称和描述。

至于 Clang-Format,ReSharper 只会应用 支持的 Clang-Format 选项。

需要注意的是,在 .editorconfig 文件中定义的任何代码样式属性都将覆盖 ReSharper 设置中定义的相同属性,适用于此 .editorconfig 文件的范围。 在 Clang-Format 中定义的格式化属性将覆盖 ReSharper 设置和 EditorConfig 设置。

使用命令行参数配置 CleanupCode

清理参数

  • --profile — 列出要执行的清理任务的代码清理配置文件。

    默认情况下,CleanupCode 将应用 内置:完全清理配置文件中指定的代码清理任务,即所有 可用的清理任务 ,除了 更新文件头。

    还有两个内置配置文件 — 内置:重新格式化代码 ,仅应用 代码格式首选项 ,以及 内置:重新格式化并应用语法样式 ,应用 代码格式首选项和 代码语法样式。

    要使用这些配置文件之一或任何 自定义配置文件 ,请通过 --profile 参数传递配置文件名称,例如: --profile="Built-in: Reformat Code" YourSolution.sln。

  • --include/--exclude — 定义清理期间要包含/排除的文件的文件掩码。 如果同时定义了 --include 和 --exclude 并覆盖了相同的文件集,则 --exclude 将具有更高的优先级。

    您可以在文件掩码中使用 Ant 风格的通配符:

    • ? 匹配单个字符(不包括目录分隔符)

    • * 匹配零个或多个字符(不包括目录分隔符)

    • ** 匹配任意数量的字符,包括目录分隔符

    • / 或 \ 匹配目录分隔符,无论操作系统路径格式如何

    例如,模式 **Test?\**.* 将匹配以下文件:

    • C:\Projects\MyTestX\data\file_one.txt

    • /home/projects/TestY/file_two.xml

    但不匹配:

    • C:\Projects\Test\data\file_one.txt

    • /home/projects/TestY/file_two

    要指定多个路径或通配符,请用分号 ; 分隔它们,或多次使用 --include/--exclude 参数。

  • --properties — 允许您覆盖 MSBuild 属性。 您可以单独设置每个属性(--properties:prop1=val1--properties:prop2=val2 ),或使用分号分隔多个属性 --properties:prop1=val1;prop2=val2。

    请注意,分号不能用于值内部,例如: --properties:ReferencePath="r:\reference1\;r:\reference2\"。 在这种情况下,请使用另一个 --properties 参数单独添加每个值——这些值将被合并。

    指定的属性将应用于所有被分析的项目。 目前,没有直接的方法仅为特定项目设置属性。 解决方法是,在此项目中创建一个自定义属性并将其分配给所需属性,然后在 CleanupCode 参数中使用该自定义属性。

  • --toolset — 使用此选项指定确切的 MSBuild 版本。 例如 12.0: --toolset=12.0 默认情况下,使用可用的最高 MSBuild 版本。 如果您有多个相同版本的安装,例如来自 Visual Studio 2019 的 16.0 和来自 .NET Core 3.x 的 16.0,此选项可能不起作用。

  • --toolset-path — 使用此选项指定 MSBuild 的确切路径。 如果您有自定义的 MSBuild 安装并希望与 CleanupCode 一起使用,这可能会有所帮助,例如: --toolset-path="c:\tools\msbuild\bin\MsBuild.exe"。

  • --dotnetcore — 默认情况下,.NET 安装是自动检测的。 如果自动检测导致冲突,您可以使用此选项指向特定的 .NET 安装。 不带参数使用它以忽略 .NET Core。 示例: --dotnetcore=/usr/local/share/dotnet/dotnet。

  • --dotnetcoresdk — 使用此选项指定应提供 MSBuild 的 .NET SDK 版本。 例如,如果您安装了 SDK 版本为 5.0.100 和 6.0.302 的 .NET,CleanupCode 将优先选择 6.0.302(最新版本,包括预览版本)。 现在,如果您希望使用 .NET SDK 5.0.100 运行 CleanupCode,请在命令行中添加 --dotnetcoresdk=5.0.100。

  • --mono — 默认情况下,Mono 安装是自动检测的。 如果自动检测导致冲突,您可以使用此选项指向特定的 Mono 安装。 不带参数使用它以忽略 Mono。 示例: --mono=/Library/Frameworks/Mono.framework/Versions/Current/bin/mono。

  • --targets-for-references — 自定义 MSBuild 目标的名称,这些目标将被执行以获取项目的引用程序集。 这些目标要么在项目文件中定义,要么在 .目标 文件中定义。 多个值用分号分隔。 例如: --targets-for-references="GetReferences"。

  • --targets-for-items — 自定义 MSBuild 目标的名称,这些目标将被执行以获取项目的其他项(例如,Compile 项)。 这些目标要么在项目文件中定义,要么在 .目标 文件中定义。 多个值用分号分隔。 例如: --targets-for-items="GetCompileItems"。

辅助参数

  • --verbosity — 默认情况下,CleanupCode 仅在输出中显示错误消息。 使用此参数更改写入输出的信息量,以下是级别(从少到多详细): [OFF, FATAL, ERROR, WARN, INFO, VERBOSE, TRACE]。

  • --LogLevel — 使用此参数控制写入日志文件的信息量,通过 --LogFile 或 --LogFolder 指定。 以下是级别(从少到多详细): [OFF, FATAL, ERROR, WARN, INFO, VERBOSE, TRACE]。

    例如,如果 CleanupCode 出现问题,您可以联系 ReSharper 支持并分享包含所有 TRACE 消息的日志文件: --LogLevel=TRACE。

  • --LogFile — 使用此参数指定 CleanupCode 消息日志文件的绝对路径。 如果您还需要 MSBuild 和 Roslyn 的日志,请改用 --LogFolder 参数。

  • --LogFolder — 使用此参数指定一个目录的绝对路径,CleanupCode 的日志以及 MSBuild 和 Roslyn 的日志将写入该目录。 如果您只需要 CleanupCode 的日志,请改用 --LogFile 参数。

  • --caches-home — 允许您指定 CleanupCode 缓存数据的自定义位置。 默认情况下,使用 %LOCALAPPDATA% 目录,除非存在设置文件,在这种情况下将使用设置文件中指定的目录。 如果您希望为缓存使用快速 SSD 磁盘,或者希望将所有构建处理数据存储在一个地方,此参数会很有帮助。

  • --config-create 和 --config — 这些选项允许您通过配置文件传递上述参数。 第一个选项将根据当前参数创建一个配置文件;第二个选项用于从该文件加载参数。

  • --debug (-d) — 使用此选项将 CleanupCode 的执行详细信息添加到输出中。 如果您在使用 CleanupCode 时遇到问题,这些详细信息在联系 支持团队时会很有帮助。

  • --eXtensions (-x) — 安装并启用指定的插件。

    插件通过其 ID 指定,您可以在 JetBrains Marketplace 的插件页面上找到:找到所需插件并滚动到 概览 选项卡的底部。

    例如, StyleCop by JetBrains 插件的插件 ID 是 StyleCop.StyleCop ,若要使用此插件运行 CleanupCode,您需要在命令行中添加 -x=StyleCop.StyleCop。

    要指定多个插件,请用分号分隔它们的 ID。

  • --source — 允许您指定一个自定义包源以安装插件,即包含插件的 .nupkg 文件所在的目录,例如 --source="C:\plugins"。 如果未指定任何内容,CleanupCode 将在 JetBrains Marketplace中查找插件。

  • --measure — 一个诊断选项,如果您在特定硬件上运行工具或针对特定目标解决方案时性能不佳,此选项可以提供帮助。 使用此选项并结合以下参数之一 [sampling | timeline (Windows-only) | memory] 定义分析类型,例如:

    CleanupCode.exe YourSolution.sln --measure=timeline

    执行完成后,CleanupCode 会创建一个执行快照并显示快照文件的路径。 您可以使用 JetBrains 工具研究快照:

    • 采样 或 时间线 分析:要分析生成的 .zip 文件,请解压缩并使用 JetBrains dotTrace 打开采样快照文件( .dtp )或时间线快照文件( .dtt )。

    • 内存 分析:要分析生成的 dotMemory 工作区文件( .dmw ),请使用 JetBrains dotMemory 打开它。

  • --version (-v) — 使用此选项显示工具的当前版本并退出。

  • --no-updates — 默认情况下,CleanupCode 在每次运行时检查更新。 使用此选项禁用更新检查。

控制 ReSharper 设置的参数

  • --settings — 默认情况下,CleanupCode 会使用 “解决方案团队共享”层 SolutionName.DotSettings 中的 ReSharper 设置覆盖其默认设置(如果存在)。 如果需要,您可以使用此参数指定另一个 .DotSettings 文件,该文件将覆盖所有其他设置。 例如,

    --settings="C:\Work\MyRsSettings.DotSettings"

    .

  • --disable-settings-layers (-dsl) — 禁用指定的 设置层。 接受的值: GlobalAll、 GlobalPerProduct、 SolutionShared、 SolutionPersonal

  • --no-buildin-settings — 禁用全局、解决方案和项目设置层的设置。 等同于 --disable-settings-layers: GlobalAll; GlobalPerProduct; SolutionShared; SolutionPersonal; ProjectShared; ProjectPersonal

MSBuild。 可能的问题和解决方案

当 CleanupCode 接收到目标解决方案文件时,它需要创建一个要清理的文件列表并初始化一些属性,例如语言版本。 CleanupCode 使用 MSBuild 从项目文件中获取此信息。

在大多数情况下,CleanupCode 会自动找到适合目标解决方案的 MSBuild 可执行文件。 但可能会有一些问题阻止自动检测,例如解决方案运行时的版本与已安装的 .NET SDK 的版本不匹配。

如果 CleanupCode 出现类似 The current .NET SDK does not support targeting .NET Core 3.0. 或 The SDK 'Microsoft.NET.Sdk' specified could not be found. 的错误,您需要使用额外的 参数指定正确的 SDK 或运行时。 如果您使用 .NET,MSBuild 已安装在您的机器上,并且通常存在多个安装,因此您必须提供一个适合目标解决方案的版本。

在大多数情况下,您只需添加一个参数 — --toolset 或 --dotnetcore。 在复杂情况下,例如机器上有许多不同的安装,或者使用自定义版本的 MSBuild,您可能需要其他参数: --toolset-path、 --mono、 --targets-for-references、 --targets-for-items。

当您指定 --dotnetcore 或 --dotnetcoresdk 时,CleanupCode 将尝试使用 .NET SDK 中的 MSBuild 并忽略其他版本。 例如,如果您的机器上安装了多个 MSBuild v 16.0,并通过 --dotnetcore 指定了 .NET 安装路径,CleanupCode 将使用指定安装中的 .NET MSBuild。 当未指定 --dotnetcore 时,CleanupCode 将查看解决方案目录,尝试找到 global.json ,并使用其中指定的 SDK 版本。 如果未找到任何内容,将使用最新可用的 SDK 版本。

项目引用。 可能的问题和解决方案

CleanupCode 还使用 MSBuild 来解析引用的项目和程序集中的符号。 有两个项目属性允许根据环境使用不同的引用: Platform 和 Configuration。 如果运行 CleanupCode 的环境与项目最后一次构建的环境不同,您可能会收到类似 Can't resolve reference XXX: Reference wasn't resolved by MsBuild 或 Could not resolve this reference. Could not locate the assembly "XXX" 的错误。

如果您遇到此类错误,请检查输出以查看构建配置是否存在不匹配。 例如

..... JetBrains Inspect Code 2020.1 Running in 64-bit mode, .NET runtime 4.0.30319.42000 under Microsoft Windows NT 10.0.17134.0 Custom settings layer is mounted. Used file XXXXX.DotSettings Using toolset version 15.0 from "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin" Configuration: Debug, Platform: x86 .....

在上述示例中,您可以看到项目文件中指定的平台是 x86 ,但工具正在 64 位模式下运行。 要解决此问题,请使用 --properties 参数明确指定目标平台和配置: --properties:Platform=x64;Configuration=Debug。

支持的语言

CleanupCode 支持以下语言:

语言:C#

语言:VB.NET

语言:C++

语言:ASP.NET

语言:Razor

语言:XAML

语言:Resx

语言:构建脚本

语言:SQL

功能在 C# 中可用

此功能适用于 Visual Basic

功能在 C++ 中可用

此功能适用于 ASP.NET

功能适用于 Razor

此功能适用于 XAML

此功能不适用于资源文件

此功能不适用于构建脚本文件

功能在 SQL/NoSQL 文件和注入中不可用

2026年 7月 16日