【问题标题】:change templates for new members更改新成员的模板
【发布时间】:2021-03-11 13:11:41
【问题描述】:

当我在 Visual Studio (2019) 中进行重构并说“生成字段”时,默认情况下它总是在新字段之前添加“私有”关键字。我不想要这个。如何修改此行为?

我不确定这个功能是由 Visual Studio 本身还是由 roslinator 提供的。

private int foo; // no!
int foo; // yes!

【问题讨论】:

    标签: c# visual-studio templates automated-refactoring roslynator


    【解决方案1】:

    如果您进入Tools|Code Snippets Manager... 菜单:

    它将打开代码sn-ps管理器。

    • 在语言下拉菜单中选择CSharp
    • 在树中转到Refactoring|Generate field

    它会给你 sn-p 的位置,在我的机器上(使用法语语言环境)它是:

    C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC#\Snippets\1033\Refactoring\GenerateField.snippet
    

    然后您可以编辑文件以将可访问性更改为所需的值。

    <?xml version="1.0" encoding="utf-8"?>
    <CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
        <CodeSnippet Format="1.0.0">
            <Header>
                <Title>Generate Field</Title>
                <Description>Snippet for the field created by the 'Generate Field' refactoring</Description>
                <Author>Microsoft Corporation</Author>
                <SnippetTypes>
                    <SnippetType>Refactoring</SnippetType>
                </SnippetTypes>
            </Header>
            <Snippet>
                <Declarations>
                    <Literal Editable="true">
                        <ID>accessibility</ID>
                        <!-- put public here, actually on my machine it is already public -->
                        <Default>public</Default>
                    </Literal>
                    <Literal Editable="true">
                        <ID>modifiers</ID>
                        <Default></Default>
                    </Literal>
                    <Literal Editable="true">
                        <ID>type</ID>
                        <Default>type</Default>
                    </Literal>
                    <Literal Editable="true">
                        <ID>signature</ID>
                        <Default>signature</Default>
                    </Literal>
                </Declarations>
                <Code Language="csharp">
                    <![CDATA[$end$$accessibility$ $modifiers$ $type$ $signature$;]]>
                </Code>
            </Snippet>
        </CodeSnippet>
    </CodeSnippets>
    

    但您也可以基于此创建自己的 sn-p,将其称为“生成公共字段”并按照here 的描述进行注册。

    编辑:

    我在Roslynator sources 中没有找到任何相关信息。它绝对看起来像VS quick action。 Roslyn/VS 中有一个关于类似 here 的错误,并且与 a bug that impact many quick action 有关。 此错误已修复。看起来你只需要配置你的编辑器:

    将以下内容添加到项目根目录下的 .editorconfig 文件中: dotnet_style_require_accessibility_modifiers = omit_if_default:suggestion

    查看dotnet_style_require_accessibility_modifiers here 的选项。

    【讨论】:

    • 是的。也因为模板说默认是公开的,很明显它是错误的。但无论如何感谢您的帮助。我添加了一张图片来显示我正在尝试做的事情。
    • @codymanix Mayby 如果是 roslynator(我不使用那个工具),请看这里github.com/JosefPihrt/Roslynator/blob/master/docs/…
    • 似乎可以在 roslynator 中配置的唯一选项是禁用分析器/重构
    • @codymanix,我用新信息编辑了我的回复。
    • 也无济于事。
    猜你喜欢
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多