如何格式化Visual Studio 2012中的所有文件?
使用以前版本的Visual Studio,我使用Kevin Pilch-Bisson的脚本来格式化我的解决方案中的所有C#文件。
VS2012放弃了宏支持,因此不再适用。
如何在VS2012中轻松格式化所有文档?
打开工具 – > 库包管理器 – > 包管理器控制台 ,然后运行以下命令。 最后,所有文档都将在IDE中打开。 (低RAM机器将遇到大型解决方案的问题。)更改的文件将在IDE中修改,而不会保存到磁盘。 如果准备好,您可以全部保存,然后全部关闭。
VS2012删除了以前版本的Visual Studio中存在的类似VB的宏语言。 但是,底层DTE接口仍然存在,您可以通过PowerShell在Package Manager控制台中访问它
传递给ProjectItem.Open
的奇怪GUID是Constants.vsViewKindCode
。
通常我会将其拆分为多行,但程序包管理器控制台不支持行继续。
您可以在https://gist.github.com/JayBazuzi/9e0de544cdfe0c7a4358找到最新版本
function f($projectItems) { $projectItems | ? { $_.Name.EndsWith( ".cs" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } } $dte.Solution.Projects | % { f($_.ProjectItems) }
这是对现有脚本的更新,适用于非常大的解决方案。
它会打开每个文件,对其进行格式化,然后保存并关闭文件,而不是将其保持打开状态。 它也会跳过“.designer”。 文件,因为这些文件通常应该保持不变。
这适用于Visual Studio 2012和2013.您可以将其直接复制并粘贴到程序包管理器控制台中。
警告:将此代码粘贴到控制台中将立即打开并格式化整个解决方案中的每个C#文件,无需询问即可保存每个已修改的文件。 首先分支可能是个好主意…
function FormatItems($projectItems) { $projectItems | % { # Write-Host " Examining item: $($_.Name)"; if ($_.Name -and $_.Name.ToLower().EndsWith(".cs") ` -and (-not $_.Name.ToLower().Contains(".designer."))) { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}'); $win.Activate(); $dte.ExecuteCommand('Edit.FormatDocument'); if (!$_.Saved) { Write-Host " Saving modified file: $($_.Name)"; $dte.ExecuteCommand('File.SaveSelectedItems'); } $dte.ExecuteCommand('Window.CloseDocumentWindow'); } if ($_.ProjectItems -and ($_.ProjectItems.Count -gt 0)) { # Write-Host " Opening sub-items of $($_.Name)"; FormatItems($_.ProjectItems); } }; } $dte.Solution.Projects | % { Write-Host "-- Project: $($_.Name)"; FormatItems($_.ProjectItems) } ;
您可以使用CodeMaid , VS2012的免费插件。 这允许您清理,重新组织您的代码。 在使用StyleCop检查代码之前,我总是使用它
您可以使用ReSharper的代码清理 。 看起来这可以立即解决整个解决方案。
这是前两个答案的另一个变体,用户可能会发现有用……绝对可以进一步改进和简化。 这不仅可以格式化.cs
文件,还可以格式化.json
, .cshtml
, .js
和.css
。
function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".cs" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } } $dte.Solution.Projects | % { f($_.ProjectItems) } function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".json" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } } $dte.Solution.Projects | % { f($_.ProjectItems) } function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".cshtml" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } } $dte.Solution.Projects | % { f($_.ProjectItems) } function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".js" ) -and (-not $_.Properties.Item("FullPath").Value.Contains("common")) -and (-not $_.Properties.Item("FullPath").Value.Contains("Content")) -and (-not $_.Properties.Item("FullPath").Value.Contains("Scripts")) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } } $dte.Solution.Projects | % { f($_.ProjectItems) } function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".css" ) -and (-not $_.Properties.Item("FullPath").Value.Contains("common")) -and (-not $_.Properties.Item("FullPath").Value.Contains("Content")) -and (-not $_.Properties.Item("FullPath").Value.Contains("Scripts")) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } } $dte.Solution.Projects | % { f($_.ProjectItems) }
转到 – >工具 – >>选项 – >> TextEditor – >> XAML – >>格式化 – >>间距 – >>检查单独行上的每个属性的位置! 而已
- 尽管有WS_EX_COMPOSIET标志和DoubleBuffered属性,但在resize后闪烁
- 将数组键设置为字符串而不是int?
- 如何首先使用迁移向Entity Framework 4.3代码中的列添加描述?
- 为什么我的数据绑定会看到真实值而不是强制值?
- 如何获取XP,Vist和7中的所有用户帐户名,32位或64位以及任何操作系统语言
- 使用C#更改WPF Listbox SelectedItem文本颜色和高亮/背景颜色
- 无法在ASP.NET中强制转换System.Web.UI.WebControls.GridView类型的对象
- Oracle.DataAccess.Client依赖项
- Try-Catch-Finally阻止了.NET4.5.1的问题