在 Razor 中禁用 VisualStudio 代码格式设置

以前也有人问过这个问题: 为什么 VisualStudio 代码格式化不适合 Razor 标记?

但这个问题已经有好几年了。而且剃刀格式是 还是完全不可接受的。我已经放弃修理它了。

我可以为 CSHTML 文件禁用 ALL Visual Studio 格式化吗?如果没有,是否可以完全禁用所有 VisualStudio 格式?有没有第三方黑客可以帮忙的?一定有办法的!

我已经升级到2013年,格式也一样糟糕。

[编辑] : 2015年也很糟糕。我真的希望他们能解决这个问题。

[编辑] : 2017年也很糟糕。我真的希望他们能解决这个问题。

2019年也很糟糕。我真希望他们能解决这个问题。也就是说,微软发布了一个新的 格式化引擎格式化引擎。仅限于网络核心。

[编辑] : 2022年是... ... 好吧,你知道。如果他们再忽视这个12年,我可能在看到它修好之前就退休了!

27704 次浏览

你不能。这是从 VS 的第一个.net 版本(Visual Studio 2002/2003)开始就内置在 VS 的“特性”中的。

有大量关于格式错误的连接报告,但是微软完全忽视了它们,或者将修复推到“下一个版本”。您可以看到一个 Microsoft 应答 给你的示例。

您可以将自己的反馈发布到 MicrosoftTeam给你

不幸的是,防止粘贴时自动格式化的唯一方法是注释掉要粘贴新代码的位置,并在粘贴操作之后删除注释指令。

“搜索与替换”似乎不会触发自动格式化,但是粘贴会重新格式化整个代码块。

这太可怕了,无法用言语形容。它使得 VisualStudioIDE 实际上不能用于 Razor 编辑。必须为 Razor 文件使用外部编辑器。

更糟糕的是,甚至最新的 VisualStudio2013Update1在编辑 Razor 视图时也会崩溃。

我的诀窍是在粘贴后按 CTRL + Z,然后删除格式。

有趣的是,你可以禁用 C # 格式和 HTML 格式,但不能禁用 Razor 格式。

我已经取消选中了“ Tools > Options > Text Editor > C # > Formatting > Automaticformat on 粘贴”,HTML 也是如此。

这将在 cshtml 文件中产生以下有趣的体验:

  • 粘贴 HTML 代码: 无格式
  • 粘贴 C # 代码: 无格式
  • 粘贴剃刀代码: 格式全错

既然没有选择改变剃刀的选项,我想你必须接受这个事实。

我的“解决方案”: 粘贴和 ctrl-z 来撤消自动格式

在 Tools-> Options-> Text Editor-> HTML-> Advanced 下面

有一个关键值项粘贴,它说“格式粘贴”,并有一个布尔值旁边。将此更改为 false 已经禁用了我在剃刀片语法中的粘贴格式。

我正在使用 VS Professional 2013,Version 12.0.30110.00 Update 1

参观地点:

Tools -> Options -> Web Essentials -> HTML -> Auto-format HTML on Enter

(需要安装 Web Esentials 扩展)

设置为 假的

Tools -> Options -> Text Editor -> HTML -> Advanced -> Format on Paste

设置为 假的

有了这些设置,我在 VisualStudio2013中就没有问题了。

我过去常常不得不按 Ctrl-Z 键,如果你忘了在编写和测试代码时解决这个问题,那将是一个巨大的痛苦。我觉得微软可以做 很多来帮助用户配置这个,以及使它更容易访问。

在我的案例中,R # 最终成为了罪魁祸首,可以在这里禁用:

ReSharper > 选项 > 程式码编辑 > 剃刀 > 编辑器及格式

Https://www.jetbrains.com/help/resharper/2016.1/reference__options__languages__razor__editor.html

我在 Resharper 2019中发现了这些设置,它们改善了我的体验: enter image description here

我没有。网络核心项目或 Blazor。所以不幸的是,我不能测试这个。但是微软已经为这些语言发布了一个新的格式化引擎。

Https://devblogs.microsoft.com/aspnet/new-experimental-razor-editor-for-visual-studio/

需要 VisualStudio2019的最新版本。

下面并没有直接回答提出的问题,但提供了一个可能有帮助的潜在解决方案。

在我的情况下,自动格式化只是在一些文件中表现得非常糟糕。这与所使用的换行类型有关。

解决:

  • 我启用了高级保存选项
  • 在保存有问题的文件时,我选择 Windows (CR LF)作为换行类型

证明文件

这样做之后,自动格式似乎表现得更好