0

我想要一个用于 Visual Studio 的宏来设置程序集属性。有没有为此的代码模板?在 VS 内还是在互联网上?我正在寻找设置公司名称,商标等。

更新:

好的,这就是我刚刚用 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();
    }
}

用法:一个包含以下语句的批处理文件:

> 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
4

2 回答 2

1

您为什么不使用 assemblyinfo 文件并定义其属性的任何原因?

http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.applicationservices.assemblyinfo.aspx

于 2012-05-20T06:55:57.543 回答
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 似乎也可以在项目模板中工作。

于 2012-05-20T06:57:58.427 回答