我的团队不关注文件编码(这是正确的,因为人类不应该被文件编码所困扰)。然而,有些文件是以utf8格式保存的,有些则是以区域编码(cp 1250)保存的。
我需要做两件事:
1.对将来创建的所有文件强制使用utf8
1.将所有具有指定扩展名(或至少 *.cs)的现有文件转换为utf-8
如何使用Visual-Studio、Resharper插件或Powershell实现这些目标?
我试着用PowerShell做#2,但是它很混乱(有时它会删除/添加最后一行)。也许有一些免费软件,我可以用它来做,第一点对我来说更重要。
4条答案
按热度按时间kcugc4gi1#
是的,有可能。
对所有文件强制使用UTF-8
使用
.editorconfig
作为@Richard之前提到的。从Visual Studio v15.3开始,.editorconfig
支持得到了修复和改进。这个简单的.editorconfig
在解决方案级别足以确保每个*.cs
以UTF-8格式保存,而不带BOM:此外,它可以转换任何由Visual Studio手动打开和保存的现有文件。
将所有现有代码文件转换为UTF-8
我测试了线程Save all files in Visual Studio project as UTF-8的一些答案,它们工作得很糟糕:非拉丁字符(在我的例子中是西里尔字母)被转换成了无法阅读的字形。相反,Visual Studio本身可以轻松地进行“打开-保存”转换。
要自动打开并重新保存解决方案中的所有代码文件,请使用一个简单的R#技巧:
1.将任何适用于所有文件的R#代码样式规则设置为严格拒绝公司代码约定的值。例如,大括号布局是一个显而易见的选择。
1.使用
Code Cleanup
feature(默认为Ctrl+E,C
)将其应用于整个解决方案。选择一个最简单的内置“重新格式化代码”模板,以尽量减少更改。1.在格式化并保存所有文件之后,将R#规则恢复为原始规则,并再次运行
Code Cleanup
。在此之后,所有的
*.cs
文件都应该保存为UTF-8(对于R#支持的另一种文件类型也是如此)。漂亮的格式作为奖金。polhcujo2#
1:有选择
但并不总是这样似乎没有办法强制这样做(也没有可能的扩展)。有没有想过写一个扩展:-)?
回复#2:PSH应该是可行的(但没有最后一行可能会搞砸最简单的方法)。参见https://stackoverflow.com/a/850751/67392
.editorconfig
来设置文件的默认编码。4sup72z83#
目前最有效的解决方案是:
1.在
.cs
部分的.editorconfig
文件中设置.cs
文件的编码:1.运行dotnet format工具:
dotnet format
就这样
(我最初发布这条评论,但Ilya Chumakov建议将其作为答案)
xhv8bpkk4#
Powershell 5.1脚本,在源根目录下运行