如何根据 Visual Studio 中的文件名以编程方式更改 C# .cs 文件?

How to programmatically make changes to C# .cs files based on the file name in Visual Studio?

我将如何以编程方式对 类 进行更改,例如根据 class/file 名称在 Visual Studio (C#) 中添加注释?

例如

之前:

using System;
using System.Collections.Generic;
using System.Text;

namespace ChangingCode.Lib
{
    public class ChangeThisClass
    {
        public void Method()
        {

        }
    }
}

之后:

using System;
using System.Collections.Generic;
using System.Text;

//This Got Added Somehow
//Is it possible?

namespace ChangingCode.Lib
{
    public class ChangeThisClass
    {
        public void Method()
        {

        }
    }
}

遗憾的是,CodeDom 不附带任何 C# 解析器实现(尽管它是 got an interface for that). There are however quite a few C# parsers available (see this SO answer 以获取更多信息)。

假设,您决定使用 NRefactory, then adding comments becomes a matter of changing an AST:

    var compiledUnit = ICSharpCode.NRefactory.CSharp.SyntaxTree.Parse(File.ReadAllText(@"D:\file.cs"));

    var namespaceNode = compiledUnit.Children.First(n => (n.GetType() == typeof(NamespaceDeclaration))) as NamespaceDeclaration; // find the start of namespace declaration
    var parent = namespaceNode.Parent; // get reference to file root since you're adding nodes above namespace
    parent.InsertChildAfter(namespaceNode.PrevSibling, new Comment("This Got Added Somehow"), Roles.Comment);
    parent.InsertChildAfter(namespaceNode.PrevSibling, new Comment("Is it possible?"), Roles.Comment);              
    // save it all back
    File.WriteAllText(@"D:\file.cs.modified.txt", compiledUnit.ToString());

要实现这个,我想你可以创建一个包含任何自定义内容的父模板,然后在项目中使用这个模板。

1) 首先,创建一个新的 C# class 这是一个父模板供以后使用,然后你可以在这个文件中添加这样的注释:

 // this is a file called $itemname$
 //is it possible?
 //...........

$itemname$是保留的模板参数,表示使用新模板创建的项目的名称。例如,当您使用这个新模板并创建一个名为 StrFeed 的新项目时,上面的代码将显示在这个新文件中,并且 $itemname$ 将是 StrFeed。更多预留模板参数,可参考this.

2) 点击 item template by Project-->Export Template 然后选择你的自定义 class 然后重命名点赞 customitem 并记住此名称是自定义模板的名称,您可以按名称在 Add New Item 中搜索此名称。

3)当您完成此项目模板创建后,请关闭VS实例,然后您可以在其他项目中使用此项目模板。

4) 创建一个新项目,然后添加新项目并搜索其名称 customitem 然后给它一个新名称,然后你会得到你想要的想要它。

有关如何创建自定义项模板的更多详细信息,您可以查看this link