有没有办法添加到在Visual Studio中选择类模板时添加的默认命名空间?
我的问题是添加一个新类(在我的例子中是一个C#),不包括我的公共库。无论是一次又一次地不断添加内部自定义API的命名空间,都是一个巨大的生产力。多年来由于分裂,这个问题变得更糟。即使.NET导入的规模也在增长。
我尝试使用Resharper虽然它有所帮助,但它没有完全解决问题。在我告诉它自动导入之前,我仍然需要确切的类型名称。
我也尝试过使用代码片段,虽然很好,创建一个也不是直截了当的,每个新文件需要额外点击几次。
创建新模板也很痛苦。更不用说我们使用从控制器,视图,基本类,接口等各种模板。我们还需要几个版本,因为每个模块通常需要2-3个其他命名空间。然后我们需要在每次有重大框架发布时保持更新,例如。 .NET 2.0项目模板没有LINQ,现在它在每个模板上。然后我们需要在所有Dev机器上保持这些模板同步。底线是我们没有这方面的资源。
我真的只想添加默认导入(每个项目/命名空间),不涉及重新创建所有主要模板。或者为某个给定的项目创建某个命名空间“local”,每次创建一个新类时我都可以停止写一堆“using”语句。
这有更简单的方法吗?
答案 0 :(得分:2)
是的,您可以更改Visual Studio在创建新类型时使用的类模板文件。这些模板位于:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\Snippets\1033\Refactoring
您的方案感兴趣的模板是GenerateTypeInNewFile
,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Generate Type In New File</Title>
<Description>Snippet for generating a type in a new file</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Refactoring</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal Editable="true">
<ID>namespace</ID>
<Default></Default>
</Literal>
<Literal Editable="true">
<ID>modifiers</ID>
<Default></Default>
</Literal>
<Literal Editable="true">
<ID>typekind</ID>
<Default>class</Default>
</Literal>
<Literal Editable="true">
<ID>typename</ID>
<Default>name</Default>
</Literal>
<Literal Editable="true">
<ID>typebase</ID>
<Default></Default>
</Literal>
<Literal>
<ID>linqusing</ID>
<Function>CheckMinimumTargetFramework(3.5,
using System.Linq;)
</Function>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[$end$using System;
using System.Collections.Generic;$linqusing$
using System.Text;
namespace $namespace$
{
$modifiers$ $typekind$ $typename$ $typebase$
{
}
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
您感兴趣的部分是<Code>
部分:
<Code Language="csharp">
<![CDATA[$end$using System;using System.Collections.Generic;$linqusing$
using System.Text;
namespace $namespace$
{
$modifiers$ $typekind$ $typename$ $typebase$
{
}
}
]]>
</Code>
在using xyz.blah.blah.blah
之后添加您的using System.Text;
命名空间,保存,您添加的下一个课程应该很好。
注意:这将改变在Visual Studio中所有项目中添加类的方式,所以要小心!
答案 1 :(得分:1)
如果您使用ReSharper的插入文件功能添加类,则可以编辑转到ReSharper使用的模板 - &gt;模板管理器 - &gt;文件模板。在C#部分下,您可以编辑“类”模板并在顶部添加任何所需的using语句。您可以使用宏来确定根命名空间应该是什么,如果宏不能满足您的需求,您可以write a plugin to add a macro生成命名空间,如下所示: