在Visual Studio中创建新类时,如何将其默认为public?


111

当我右键单击C#Visual Studio项目的解决方案并选择添加...>类...时,它将创建一个没有公共修饰符的类。如何使Visual Studio(2008)将类默认为公共类?


1
您需要更改类模板,如此处所述。它比仅编辑单个文件(这可能是您所期望的)要稍微复杂一些,但听起来并不算太糟糕。
乔恩·斯基特

Answers:


71

您需要修改中的文件C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033

Visual Studio 2010(10.0)及更低版本:那里有一个名为Class.zip的zip文件。解压缩此文件,编辑文件以放入public关键字,然后重新打包(确保备份了原始文件)。

此后,C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache通过打开Visual Studio命令外壳并执行以下命令,确保VS重建其缓存(只是zip文件解压缩到中的目录中)。

devenv /installvstemplates

Visual Studio 2012(11.0)及更高版本: 请参阅@JochemKempe的答案,因为现在只需通过编辑一个文件(无需解压缩或重新压缩)就可以更轻松地进行更改。

更新:在进行任何编辑之前,请不要忘记以管理员权限打开首选的文本编辑器。


非常感谢。在带有VS 2012的64位Windows 7计算机上,此路径位于C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra 2013年

如果要在不同计算机上的团队之间更改项目模板怎么办?
DevDave

在VS2013中,您需要以管理员身份运行VS2013的Developer Command Prompt,并在关闭Visual Studio之后运行该命令-在VS打开时它将无法完成。
克里斯·莫斯基尼

1
无需访问引用的博客帖子@Guy,因为该帖子已经过编辑以包含在此找到的信息。如果你访问该博客文章,现在已经转移到一个新的URL:guyellisrocks.com/2009/03/...
ErikE

151

VS2012中,就像进入C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class和编辑Class.cs文件一样简单。

无需解压缩或重建缓存。如果你问我,这是一个非常积极的变化。

VS2015C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2017(RC)C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2017(专业版)C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2019(企业)C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

VS2019(专业)C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

过时的

VS2019(预览)C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs


2
这似乎不适用于我。我什至还替换了ItemTemplatesCache目录中的Class.cs文件。每次重新启动VS2012。有没有办法重建缓存?
2013年

7
对于VS2013,请使用以下位置:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan 2013年

6
您可能需要以“管理员”模式打开文本编辑器,以更新实际的类模板。
david.barkhuizen 2014年

3
对于VS2015,请使用以下位置:C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class但是,如果您安装了Xamarin,则可能还需要在以下位置进行搜索您的Windows驱动器为“ Class.cs”。我最终只是将所有结果公开。
JochemKempe 2015年

2
Visual Studio 2019现已推出,因此应更改预览以指示版本。我只安装了Professional,但我想其他两个将是Community和Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Dave Thompson

10

默认情况下,为Visual Studio 2012创建Public类:

编辑此文件:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

看起来像这样:

using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
$endif$using System.Text;
$if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks;
$endif$
namespace $rootnamespace$
{
    public class $safeitemrootname$
    {
    }
}


3

这是一个可重入的PS脚本,它将更新C#基类Item Template。路径会根据您使用的Visual Studio的版本/版本而变化。它还会备份原始模板,以备将来将来还原时使用。

$csharpClassTemplates = @("C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs",
                          "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1033\Class\Class.cs",
                          "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs")

$csharpClassTemplates | % {
    Write-Output("Updating template $_")
    Copy-Item $_ -Destination "$_.backup"
    (get-content $_).Replace('public ', '').Replace('class ', 'public class ') | Set-Content $_
 }

我的路径是..\2017\Professional\...我手动编辑它,但这显示了2017年的新文件夹结构。谢谢。
ste-fu

2

除了JochemKempe好的答案之外,这是针对.NET核心模板的解决方法。


.NET核心

\CSharp\您无需编辑目录中的模板,而无需编辑目录中的模板\AspNetCore\

VS2019(企业)C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs

VS2019(专业)C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs


1

JochemKempe的答案很好,但是有点困难,因为您需要在中重写受保护的文件Program Files

仅更新答案。社区版的模板位于文件夹中:

c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ProjectTemplates

另一种解决方案

但是还有创建新模板的可能性。将文件从源文件夹复制到用户模板文件夹。

例如,对于Windows Form应用程序,它可以是以下源文件夹之一(对于Visual Studio 2017社区)

c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ProjectTemplates\CSharp\Windows Root\Windows\1033\WindowsApplication\
c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplates\CSharp\Windows Root\Windows\1033\WindowsApplication\
c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplatesCache\CSharp\Windows Root\Windows\1033\WindowsApplication\

默认用户模板文件夹为(对于Visual Studio 2017社区)

C:\Users\<username>\Documents\Visual Studio 2017\Templates\ProjectTemplates\

新Windows窗体应用程序模板的目标文件夹为:

C:\Users\<username>\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\Windows\1033\MyWindowsApplication\

使用此工具,在创建新项目时将有两个“ Windows Form Application”。两者之间的区别仅在于默认文件名。为了更好地区分,可以更改模板的显示名称。要更改模板名称,请更新.vstemplate文件。

原始csWindowsApplication.vstemplate包含以下行:

    <Name Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2318" />

要更改名称,您需要将行更改为如下所示:

    <Name ID="2318">My Windows Form Application</Name>

该解决方案的不利之处在于,您必须重命名新模板,然后向现有模板中添加新模板(旧的“不正确”示例将保留,并且您仍然不愿意使用它)

但也有很大一部分。您无需成为管理员即可添加或更新示例。(无需重写文件Program Files夹中的文件。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.