在 Razor 中禁用 Visual Studio 代码格式
Posted
技术标签:
【中文标题】在 Razor 中禁用 Visual Studio 代码格式【英文标题】:Disable Visual Studio code formatting in Razor 【发布时间】:2013-12-04 14:31:53 【问题描述】:以前有人问过这个问题:Why doesn't Visual Studio code formatting work properly for Razor markup?
但这个问题已经有几年的历史了。 Razor 格式仍然是完全不可接受的。我已经放弃修复它了。
我可以禁用 CShtml 文件的所有 Visual Studio 格式吗?如果没有,我可以完全禁用所有 Visual Studio 格式吗?我可以使用任何第 3 方黑客吗?一定有什么!
我已经升级到 2013 版,但格式同样糟糕。
[编辑]:2015 年也很糟糕。我真的希望他们能解决这个问题。
[编辑]:2017 年也很糟糕。我真的希望他们能解决这个问题。
[编辑]:2019 年也很糟糕。我真的希望他们能解决这个问题。也就是说,Microsoft 仅针对 .Net Core 发布了新的 formatting engine。
【问题讨论】:
2013 年更糟。 2015 年也更糟! 在 vs 2017 rtm 中未修复 2018年未修复。 2021 年未修复! ?????? 【参考方案1】:在工具 -> 选项 -> 文本编辑器 -> HTML -> 高级下
有一个键值项 Paste,上面写着“粘贴时格式化”,旁边有一个布尔值。将此更改为 false 已禁用我在 razor 语法中粘贴的格式。
我正在使用 VS Professional 2013,版本 12.0.30110.00 更新 1
【讨论】:
谢谢!粘贴上的自动(错误)格式让我发疯。这似乎已经消除了它。 太棒了,这正是驱赶它所需要的!谢谢! 我会多次投票给你,这是对 2013 up1 和更新版本的正确响应。 在视觉 2015 中不起作用?我在 HTML/advanced 中未选中“粘贴时格式化”,但粘贴时仍然会出现奇怪的取消格式化/疯狂缩进。我正在考虑为 cshtml 文件使用另一个编辑器,但后来我会失去 C# 自动完成功能。这种情况太疯狂了。 在 VS2017 中为我工作。【参考方案2】:你不能。这是自第一个 .net 版本(Visual Studio 2002/2003)以来内置于 VS 的“功能”。
有大量关于格式错误的连接报告,但微软完全忽略它们,或者将修复推送到“下一个版本”。您可以查看 Microsoft 回答 here 的示例。
您可以将自己的反馈发布到 Microsoft Team here
【讨论】:
我又一次愤怒地搜索这个,我不知道他们是否改变了什么,但银河战士猎人的修复在 Razor 中对我有用 ***.com/a/28053865/62829 2015 年,Visual Studio 中的 HTML 怎么会如此糟糕? 实际上 2015 版比 2013 版更糟糕(同样适用于 C#,每次打开大括号时它都会缩进不相关的内容)。我曾经喜欢视觉工作室,但这正在慢慢扼杀它。 注意:连接链接现在都失效了【参考方案3】:要看的地方:
Tools -> Options -> Web Essentials -> HTML -> Auto-format HTML on Enter
(需要安装 Web Essentials 扩展)
设置为假
Tools -> Options -> Text Editor -> HTML -> Advanced -> Format on Paste
设置为假
通过这些设置,我在 Visual Studio 2013 中没有任何问题。
我过去常常不得不经常按 Ctrl-Z,如果您在编写和测试代码后忘记整理混乱,那将是一个巨大的痛苦。我觉得微软可以做很多来帮助用户配置它并使其更易于访问。
【讨论】:
没有“网络必需品”区域。 很好的答案!这一直困扰着我多年,但没有更多! @Paul Web Essentials 是一个 VS 扩展,它增强了许多与 HTML、CSS、JS 编辑器相关的东西。安装它并禁用自动格式化很有帮助。 这应该被标记为答案。尤其是关于 Web Essentials 的那一行。谢谢@dazbradbury! 第二个选项在 VS2017 中没有修复它,第一个甚至不存在。【参考方案4】:我的诀窍是粘贴后按 CTRL+Z,然后删除格式。
【讨论】:
在这里工作...我正在粘贴一个包含 赞成。这适用于 VS 2015 :) 没有其他解决方案(工具 > 选项下的各种设置)对我有用,至少在粘贴应该以某种方式在代码/html 之间更改的内容时,即粘贴包含 C# 代码的行后跟 html标记或在 C# 代码行之后直接粘贴 html 标记。 这总是有效的,在 VS 中无处不在。这是消除格式化造成的混乱的唯一方法。 (或者你真的手动清理过??)我已经习惯了,但它非常烦人。 令人惊讶的是,在 VS 2019 中,在 .razor 文件中,格式化后按 Control-Z 不再起作用。错误的格式仍然存在。【参考方案5】:在我的情况下,R# 最终成为罪魁祸首,可以在此处禁用:
ReSharper > 选项 > 代码编辑 > Razor > 编辑器和格式
https://www.jetbrains.com/help/resharper/2016.1/Reference__Options__Languages__Razor__Editor.html
【讨论】:
Visual Studio 不包含此功能,因此您需要单独安装。 我在这里提到它的原因是有人可能认为 Visual Studio 正在重新格式化(就像我所做的那样),而它实际上可能是 R#(很多开发人员使用)。因此,如果有人无法禁用它并且他们安装了 R#,他们会希望确保它在两者中都被禁用。 在 R# 2017.3 中,这些设置位于 ReSharper |选项 |环境 |编辑 |编辑器行为 在 R# 2018.3 中,我还必须将 Editor Behavior, Auto-format on paste 设置为“None”【参考方案6】:不幸的是,防止粘贴时自动格式化的唯一方法是注释掉要粘贴一些新代码的位置,并在粘贴操作后删除注释说明。
搜索和替换似乎不会触发自动格式化。但是粘贴会重新格式化整个代码块。
这太可怕了。它使 Visual Studio IDE 几乎无法用于 Razor 编辑。 Razor 文件必须使用外部编辑器。
更糟糕的是,即使是最新的 Visual Studio 2013 Update 1 也一直在编辑 Razor 视图时崩溃。
【讨论】:
【参考方案7】:有趣的是,您可以禁用 C# 格式和 HTML 格式,但不能禁用 Razor 格式。
我已经取消选中“工具 > 选项 > 文本编辑器 > C# > 格式化 > 粘贴时自动格式化”,对于 HTML 也是如此。
这会在 cshtml 文件中带来以下有趣的体验:
粘贴 HTML 代码:无格式 粘贴 C# 代码:无格式 粘贴 Razor 代码:格式错误而且由于没有更改 Razor 选项的选项,我猜你必须忍受这个。
我的“解决方案”:粘贴和 ctrl-z 撤消自动格式
【讨论】:
我也是……但这让我发疯了! 您的解决方案是一种变通方法,在编辑大文件时需要几分钟时间。【参考方案8】:我没有 .Net Core 项目,也没有 Blazor。所以不幸的是我无法测试这个。但是微软已经为这些语言发布了一个新的格式化引擎。
https://devblogs.microsoft.com/aspnet/new-experimental-razor-editor-for-visual-studio/
需要最新版本的 Visual Studio 2019。
【讨论】:
谢谢,我启用了它,它似乎比以前的格式化引擎好很多。保存时它不再改变我的格式,当我使用键盘快捷键(在我的情况下为 Ctrl-K、Ctrl-D)格式化 .razor 文件时,它几乎可以正确格式化所有内容。 唉,在进一步使用时,事实证明 Intellisense 很容易在这个新编辑器中崩溃。 那太糟糕了。希望这个新的编辑器至少意味着他们在 10 年没有进展之后终于开始工作了!【参考方案9】:我在 Resharper 2019 中发现了这些设置,它们改善了我的体验:
【讨论】:
【参考方案10】:以下内容并未直接回答提出的问题,但提供了可能有用的潜在解决方法。
在我的情况下,自动格式化仅对某些文件执行异常差。事实证明,这与使用的换行类型有关。
解决:
我启用了高级保存选项 保存有问题的文件时,我选择了 Windows (CR LF) 作为换行类型Supporting docs
这样做后,自动格式化似乎表现得更好
【讨论】:
以上是关于在 Razor 中禁用 Visual Studio 代码格式的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Code 可以在 razor .cshtml 文件中使用 Emmet 补全吗
在 Visual Studio 2019 中使用的 Razor 视图未更新
Visual Studio 中 Razor 页面的脚手架文件