使用專案範本建立屬於自己的入門套件(下)
文/沈炳宏
==========程式=========
程式1
包含多專案的範本
包含多專案的範本
Icon.ico
VisualBasic
ClassLibrary1\MyTemplate.vstemplate
ClassLibrary2\MyTemplate.vstemplate
==========程式=========
==========程式=========
程式2
包含多項目的範本
Icon.ico
包含多項目的範本
VisualBasic
Form1.vb
Form1.Designer.vb
Resource.resx
==========程式=========
==========程式=========
程式3
using Microsoft.VisualStudio.TemplateWizard;
using VSLangProj;
using EnvDTE;
using EnvDTE80;
using System.Windows.Forms;
internal class WizardImplementation : IWizard
{
private EnvDTE._DTE dte;
private UserInputForm inputForm;
private bool shouldAddClassItem;
private string exeName;
private string consoleMessage;
EnvDTE._DTE DTE { get { return dte; } }
void IWizard.RunStarted(object application,
Dictionary replacementsDictionary,
WizardRunKind runKind, object[] customParams)
{
dte = (EnvDTE._DTE)(application);
inputForm = new UserInputForm();
inputForm.ShowDialog();
if ((inputForm.get_ExeName() == null) |
(inputForm.get_ConsoleMessage() == null))
{
throw new WizardCancelledException();
}
shouldAddClassItem = inputForm.
get_ShouldAddClassItem();
exeName = inputForm.get_ExeName();
consoleMessage = inputForm.get_ConsoleMessage();
replacementsDictionary.Add("$consolemessage$",
consoleMessage);
}
void IWizard.ProjectFinishedGenerating(
EnvDTE.Project project)
{
if (shouldAddClassItem)
{
Solution2 soln2 = (Solution2)DTE.Solution;
string classTemplate = soln2.
GetProjectItemTemplate("Class", "csproj");
project.ProjectItems.
AddFromTemplate(classTemplate, "Class.cs");
}
EnvDTE.Property p = project.Properties.Item
("AssemblyName");
p.Value = exeName;
}
}
==========程式=========
==========程式=========
程式4
IWizardSample,
Version=1.0.0.0, Culture=Neutral,
PublicKeyToken=0fee70639e08613f
WizardImplementation
==========程式=========
==========程式=========
程式5
StarterKitSample.zip
入門套件範例
入門套件範例
VSTemplate
1.0
==========程式=========