Ответ 1
Вы можете создать новый фрагмент и просто набрать cp + double tab, чтобы вставить уведомление, где вы хотите (не говоря уже о том, что вы можете изменить ключевое слово так, как хотите).
Единственная проблема с этим - из того, что я знаю, фрагменты не поддерживают функции времени, поэтому получение текущего времени для вашей строки даты кажется невозможным с помощью этой техники. Нехорошим обходным путем для этого является создание редактируемых временных полей (подобно тому, как работает фрагмент mbox) и просто вставляйте время вручную.
Вот пример того, как выглядит фрагмент. Следующий фрагмент получит имя класса автоматически и добавит уведомление об авторских правах в том месте, где вы наберете "авторское право" и двойную вкладку.
Метод 1
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Copyright</Title>
<Shortcut>Copyright</Shortcut>
<Description>Code snippet for Copyright notice</Description>
<Author>author name</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal Editable="false">
<ID>classname</ID>
<Function>ClassName()</Function>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[// <copyright file="$classname$" company="My Company Name">
// Copyright (c) 2012 All Rights Reserved
// <author>Leniel Macaferi</author>
// </copyright>
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Метод 2
Кроме того, здесь приведен пример программы, которую вы можете сделать для этого.
List<string> files = new List<string>()
{
"c:\\Form1.cs",
"c:\\Form2.cs",
};
foreach (string file in files)
{
string tempFile = Path.GetFullPath(file) + ".tmp";
using (StreamReader reader = new StreamReader(file))
{
using (StreamWriter writer = new StreamWriter(tempFile))
{
writer.WriteLine(@"// <copyright file=" + Path.GetFileNameWithoutExtension(file) + @" company=My Company Name>
// Copyright (c) 2012 All Rights Reserved
// </copyright>
// <author>Leniel Macaferi</author>
// <date> " + DateTime.Now + @"</date>
// <summary>Class representing a Sample entity</summary>
");
string line = string.Empty;
while ((line = reader.ReadLine()) != null)
{
writer.WriteLine(line);
}
}
}
File.Delete(file);
File.Move(tempFile, file);
}
Конечно, потребуется некоторая уловка ошибок. Но это должно дать вам общее представление о том, как создать пользовательский интерфейс вокруг него, добавить файлы, которые вы хотите обработать.
Метод 3
Также можно изменить шаблон для ваших классов, который обычно можно найти в разделе:
C:\Program Files (x86)\Microsoft Visual Studio <version>\Common7\IDE\ItemTemplates\CSharp\1033\
Иногда для отображения результатов также требуется редактирование ItemTemplatesCache.
Вот пример шаблона, основанный на вашем вопросе:
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
$endif$using System.Text;
/* <copyright file=$safeitemrootname$ company="My Company Name">
Copyright (c) 2012 All Rights Reserved
</copyright>
<author>Leniel Macaferi</author>
<date>$time$</date>
<summary>Class representing a Sample entity</summary>*/
namespace $rootnamespace$
{
class $safeitemrootname$
{
}
}