2013-12-12 65 views
0

有沒有一種方法可以添加到在Visual Studio中選擇類模板時添加的默認命名空間?在Visual Studio中導入額外的命名空間作爲項目默認值

我的問題是添加一個新的類(在我的情況下是C#之一),不包括我的公共庫。這是一個巨大的生產力,不得不一次又一次地增加內部自定義API的命名空間。由於碎片化,這個問題多年來變得更糟。即使.NET導入規模也在增長。

我試過Resharper,雖然它有幫助,但它沒有完全解決問題。在我可以告訴它自動導入之前,我仍然需要確切的類型名稱。

我也嘗試過使用片段,雖然不錯,但創建一個也不是直接向前,並且每個新文件都需要一些額外的點擊。

創建新模板也很痛苦。更不用說,我們使用各種模板從控制器,視圖,基本類,接口等。我們還需要每個模塊的幾個版本,因爲每個模塊通常需要2-3個其他名稱空間。然後,我們需要在每次有主要的框架發佈時都保持更新,例如。 .NET 2.0項目模板沒有LINQ,現在它在每個模板上。然後我們需要保持這些模板在所有Dev機器上同步。底線是我們沒有這方面的資源。

真的,我只是想添加到默認導入(每個項目/命名空間),不涉及重新創建所有主要模板。要麼是這樣做,要麼讓特定的命名空間「local」給定一個給定的項目,我可以在每次創建一個新類時停止寫一堆「using」語句。

有沒有更簡單的方法呢?

回答

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 n在using System.Text;之後,保存下一個課程,然後添加下一個課程應該很好。


注:這將改變類是如何在所有項目添加在Visual Studio中,所以要小心!

+0

Karl,看起來很棒 - def比什麼都沒有,但是有沒有辦法在生成using語句時使用綁定到項目的變量?我需要至少在每個項目的基礎上自定義默認的「本地」命名空間。 – Alwyn

1

如果您使用ReSharper的插入文件功能添加類,您可以編輯轉到ReSharper - >模板管理器 - >文件模板使用的模板。在C#部分下,您可以編輯「類」模板並在頂部添加任何必需的使用語句。你可以使用宏來決定根名稱空間應該是什麼,如果宏不給你想要的,你可以使用write a plugin to add a macro這將產生你想要的命名空間:

+0

看起來很有希望。給我幾天,我會驗證你的建議。 – Alwyn

相關問題