Visual Studio:用于设置具有解决方案或目录根作用域的程序集属性的宏

时间:2012-05-20 06:50:26

标签: visual-studio-2010 visual-studio-macros

我想要Visual Studio的宏来设置程序集属性。在某处有代码模板吗?在VS内还是在互联网上?我想设置公司名称,商标等。

更新

O.k。这就是我刚刚用C#写的/黑客攻击。我以为可能会有一个片段。

  class Program
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="args"></param>
    static void Main(string[] args)
    {
        string rootDir = args[0];
        string qualifyingFileName = args[1];
        string disqualifyingPathNamePart = args[2];
        string assAttrib = args[3];
        string assAttribReplace = args[4];
        bool removeComments = bool.Parse(args[5]);
        bool removeEmptyLines = bool.Parse(args[6]);
        bool IsCSharp = false;

        IEnumerable<string> assFiles = Directory.EnumerateFiles(rootDir, qualifyingFileName, SearchOption.AllDirectories);
        foreach (string ass in assFiles)
        {
            try
            {
                if (ass.Contains(disqualifyingPathNamePart)) { continue; }
                IsCSharp = ass.EndsWith(".cs");
                List<string> assFileLines = new List<string>();
                assFileLines.AddRange(File.ReadAllLines(ass));

                for (int i = assFileLines.Count - 1; i >= 0; i--)
                {
                    if (assFileLines[i].Trim().StartsWith(IsCSharp ? "using" : "Imports")) { assFileLines.RemoveAt(i); continue; }
                    if (assFileLines[i].Trim().StartsWith("Option")) { assFileLines.RemoveAt(i); continue; }

                    if ((removeComments) && (assFileLines[i].Trim().StartsWith(IsCSharp ? "//" : "'"))) { assFileLines.RemoveAt(i); continue; }
                    if ((removeEmptyLines) && (assFileLines[i].Trim().Length == 0)) { 
                        assFileLines.RemoveAt(i); continue;
                    }
                    if (!assFileLines[i].Contains(assAttrib)) { continue; }
                    assFileLines[i] = assAttribReplace;
                }

                if (IsCSharp)
                {
                    assFileLines.Insert(0, "using System;");
                    assFileLines.Insert(1, "using System.Resources;");
                    assFileLines.Insert(2, "using System.Reflection;" );
                    assFileLines.Insert(3, "using System.Runtime.InteropServices;");
                    assFileLines.Insert(4, "");
                }
                else
                {
                    assFileLines.Insert(0, "Option Strict On");
                    assFileLines.Insert(1, "Option Explicit On");
                    assFileLines.Insert(2, "");
                    assFileLines.Insert(3, "Imports System");
                    assFileLines.Insert(4, "Imports System.Resources");
                    assFileLines.Insert(5, "Imports System.Reflection");
                    assFileLines.Insert(6, "Imports System.Runtime.InteropServices");
                    assFileLines.Insert(7, "");
                }
                File.WriteAllLines(ass, assFileLines);
            }
            catch { }
        }
        Console.WriteLine("Finito");
        Console.ReadLine();
    }
}

useage:一个包含如下语句的批处理文件:

> macros.exe D:\Devzone AssemblyInfo.cs 3PL AssemblyCompany
> "[assembly: AssemblyCompany(\"Your company name\")]" true true
> 
> macros.exe D:\Devzone AssemblyInfo.cs 3PL AssemblyCopyright
> "<Assembly: AssemblyCopyright(\"Copyright © 2003-2013. Your company
> name. All Rights Reserved.\")>" true true
> 
> macros.exe D:\Devzone AssemblyInfo.vb 3PL AssemblyCopyright
> "<Assembly: AssemblyCopyright(\"Copyright © 2003-2013. Your company
> name. All Rights Reserved.\")>" true true

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这是关于创建自己的模板的旧帖子。

http://devrants.blog.com/2006/09/19/visual-studio-template-beyond-the-basics/

模板是包含以下内容的zip文件:

.vstemplate

one or more custom files.

通过自定义这些,您可以节省大量的剪切和粘贴时间和精力。

此模板参数页面未完整。

$ safeitemrootname $ =这似乎是用户输入对话框的名称。

如果将此项与此处定义的多项目模板结合使用。这允许您使用提供的名称作为类的根。例如,您可以使用一个名称的模板,例如创建以下文件的Entity.cs:

EntityModel.cs
IEntityModel.cs
IEntityView.cs
IEntityController.cs
EntityController.cs

$ fileinputname $ =这也适用于模板

$ XmlConvert_itemname $ =这是做什么的?我认为这是一个向导填充的项目。

尽管有文档,但看起来WizardExtension似乎也可以在项目模板中使用。