Camel Case Visual Studio项目模板的项目名称

时间:2016-08-22 19:57:11

标签: visual-studio visual-studio-2015 visual-studio-templates

我正在尝试制作Visual Studio项目模板。我可以使用import queue import threading def worker(): while True: item = q.get() if item is None: break do_work(item) q.task_done() q = queue.Queue() threads = [] for i in range(num_worker_threads): t = threading.Thread(target=worker) t.start() threads.append(t) for item in source(): q.put(item) # block until all tasks are done q.join() # stop workers for i in range(num_worker_threads): q.put(None) for t in threads: t.join()

轻松替换我想要与项目名称相同的名称

因此,如果我的项目名为$safeprojectname$并且我命名了一个文件WidgetHunter,那么在项目创建时它将被称为$safeprojectname$.js

但是,如果我想将文件命名为WidgetHunter.jswidgetHunter.js

,该怎么办?

是否需要创建一个没有静态值的新变量?(我需要对提供的项目名称执行字符串操作。)

1 个答案:

答案 0 :(得分:1)

所以这不会像你提到的那样直截了当。 Project Templating不是很强大,它是基本的替代品,你无法真正运行代码AFAIK。

然而,你可以轻松地"添加向替换字典添​​加其他键的向导步骤(IWizard)。例如,您可以添加具有受控值的$safeprojectnameforjs$

 public class ExampleWizard : IWizard
 {
     public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
    {
         replacementsDictionary.Add("safeprojectnameforjs",
            YourCustomMethodForManipulatingName(replacementsDictionary["safeprojectname"])
    }

    // there are a few other IWizard methods you'll need to 
    // implement but don't need to do anything in
 }

要在ExampleWizard中连接,您需要在.vstemplate中添加标记

<VSTemplate>
  <WizardExtension>
     <Assembly>ExampleWizard.ExampleWizard, Version=1.0.0.0, Culture=neutral,     
        PublicKeyToken=a76e3e75702e3ee4</Assembly>
      <FullClassName>ExampleWizard.ExampleWizard</FullClassName>
   </WizardExtension>
</VSTemplate>

注意:您需要在装配中使用向导。最简单的方法是创建一个新的类库项目。此外, 需要签名(至少,非常确定仍然需要)。

最后,您需要更新VSIX清单,以便将向导程序集连接为程序集依赖项:

<PackageManifest>
   <Assets>
      <Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="ExampleWizard.ExampleWizard" Path="|ExampleWizard.ExampleWizard|" AssemblyName="|ExampleWizard.ExampleWizard;AssemblyName|" />    
   </Assets>
</PackageManifest>