Tag: 代码格式化

我的vs2008插件用于textformatting非常慢

我写了一个小插件,它对我的​​C#代码进行了一些格式化。 在addins Exec方法中,我执行以下操作 try { TextSelection selection = (EnvDTE.TextSelection)_applicationObject.ActiveDocument.Selection; String foo = String.Empty; if (!text.IsEmpty) { foo = someCoolObjectThatFormatsText.Format(selection.Text); selection.Text = foo; // here everything gets painfully slow 🙁 } } catch (Exception) { throw; } 当代码行为“SelectedText.Text = foobar”时 是调用,VS逐步重建选择的每一行。 您可以轻松地观察它执行此步骤。 但我不明白,为什么这么慢。 任何提示? TIA

处理ASP.NET MVC“标签汤”

我今天正在研究一个ASP.NET MVC模板,在盯着所有那些荧光黄色%标签足够长时间之后,我基本上认定我已经受够了,所以我煞费苦心地修改了我的ascx文件,看起来像这样: 1) { %> pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm))) { %> 最后啊可读性。 唯一的问题是,需要长时间手动执行此操作。 我需要一种自动化方法。 某种代码格式化解决方案。 也许是宏或Visual Studio加载项或……? 你有什么建议? 更新 我现在计划从我的标记中重构大部分逻辑(参见Mike的答案),但与此同时,我想出了一种更易于管理的方法来格式化具有代码和HTML混合的ascx文件。 代码以这种方式更加分散,但是首先将这样的代码格式化起来要容易得多,并且使用它也更容易。 1) { %> pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm))) { if (prop.HideSurroundingHtml) { %>

使用Roslyn生成格式良好的语法

我正在使用Roslyn来修改C#文件的语法。 使用CSharpSyntaxRewriter,很容易在语法树中查找和替换节点。 但是,生成的代码非常难看,在所有情况下都不会解析,因为我创建的语法节点(使用SyntaxFactory)甚至缺少最少量的空白琐事。 Roslyn是否提供了一些基本的格式化function来避免这种情况,还是我必须手动添加琐事到我创建的每个节点?

Resharper C#格式化样式在切断长行时在新行而不是同一行显示“新”

所以Resharper在我的代码中的“new”之前放置一个换行符,重新格式化如下: var foo = new Foo { Bar = null, Baz = new Baz { Bap = null, Bork = null, Help = new PweaseHelp { Korben = null, Dallas = null, Multipass = null }, Me = new ClearlyMyAbilityToUnderstandResharperSettingsIs( null), } }; 但我真的很喜欢这样做: var foo = new Foo { Bar = null, Baz = […]

声明在C#6中使用字符串插值的长字符串

我通常通过连接来包装长字符串: Log.Debug(“I am a long string. So long that I must ” + “be on multiple lines to be feasible.”); 这非常有效,因为编译器处理字符串文字的连接。 我也认为这是解决这个问题最简洁的方法( 选项在这里称重 )。 这种方法适用于String.Format : Log.Debug(String.Format(“Must resize {0} x {1} image ” + “to {2} x {3} for reasons.”, image.Width, image.Height, resizedImage.Width, resizedImage.Height)); 但是,我现在希望在这些情况下不再使用String.Format ,因为C#6的字符串插值更具可读性。 我担心的是,我不再有一种有效而又干净的方式来格式化长字符串。 我的问题是编译器是否能以某种方式优化类似的东西 Log.Debug($”Must resize {image.Width} x {image.Height} image ” […]

阻止Visual Studio 2013自动删除分配中的额外空格

我正在尝试对齐某些赋值以提高可读性,但每次粘贴时,Visual Studio 2013会自动删除=之前的额外空格。 例如,这个: static class Constants { public static string Something = “A value”; public static string SomethingElse = “Another value”; } 像这样重新格式化: static class Constants { public static string Something = “A value”; public static string SomethingElse = “Another value”; } 有没有办法把它关掉?

C#正确格式化(缩进,对齐)C#

我们有一个代码生成器,它可以管理给定数据库的模式,以自动化我们的内部n层体系结构。 输出是各种C#部分类,每个文件一个。 在使用munge所有字符串的代码中,我们尝试尽可能地保持缩进和格式化,但是当你在Visual Studio中打开文件时格式化是错误的。 一个快速的ctrl-k,ctrl-d修复它,但显然这个重新格式化在下次生成类时会丢失。 我想知道的是,我是否有办法以某种方式自动格式化文本文件的内容,就像Visual Studio一样? 伪代码 Create “code” object, passing text file to constructor Invoke “format” method Re-save text file 任何帮助非常感谢。 编辑:我应该澄清 – 我希望能够从我的C#代码调用格式,创建包含我生成的C#的文本文件。 代码的格式可以标准化(不必是每个开发人员),我不想安装任何第三方应用程序。 我似乎记得有一个命名空间,其中包含用于在C#中创建C#的大量类: http : //msdn.microsoft.com/en-us/library/system.codedom(VS.80).aspx ,但我不确定如果它包含任何可以帮助的类。 进一步编辑:我的代码生成器是一个通过点击一次安装部署的winforms应用程序。 许多开发人员都在内部使用它。 我需要一个不需要每个开发人员在他们的机器上安装工具的解决方案。

Resharper将代码格式化为单行

我在使用Resharper格式化代码时遇到问题。 我已禁用包装线的选项。 使用此选项,以下代码将格式化为单行。 有没有人知道如何让Resharper格式化以下代码? Mapper.CreateMap() .ForMember(dest => dest.CreatedBy, map => map.MapFrom(src => src.CreatedBy)) .ForMember(dest => dest.DateCreated, map => map.MapFrom(src => src.DateCreated)) .ForMember(dest => dest.Id, map => map.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, map => map.MapFrom(src => src.Name)) .ForMember(dest => dest.CountryCodeChar2, map => map.MapFrom(src => src.CountryCodeChar2)) .ForMember(dest => dest.CountryCodeChar3, map => map.MapFrom(src => src.CountryCodeChar3)); 如果我启用换行,格式化的代码将如下所示: Mapper.CreateMap().ForMember( […]

ReSharper格式化:对齐相等的操作数

Google员工注意 ,此问题有些过时,因为当前版本的ReSharper 2017.3.1现在支持所请求的function 我喜欢格式化我的代码以对齐相等操作数的右侧。 像这儿: bool canRead = false; bool canReadClass = true; string className = boType.Name; 我最近切换到ReSharper并发现它非常有用,但找不到允许我以描述的方式格式化代码的选项。 你知道是否有这样的选项/插件? 也许除了ReSharp解决方案之外您还知道吗? 编辑: 如何确定代码的哪一部分应该对齐? 我的约定是将所有变量对齐在同一个块中。 通过“块”我的意思是部分代码没有被空行分割。 例如 // First block int count = 10; string name = “abc”; bool calculate = true; ….. ….. // Second block MyOwnType myType = new MyOwntype(); int count = 10; 编辑-2 […]