C# 创建VisualStudio模板
我希望创建一个VisualStudio2008模板,该模板将创建一个基本项目,并基于用户输入的选项删除某些文件/文件夹 现在,我已经在线学习了一些教程,这些教程让我创建表单来查询用户并将数据传递到IWizard类中,但我不知道从那里可以做什么 这些教程提供了一个示例来进行一些简单的替换: 代码:C# 创建VisualStudio模板,c#,visual-studio,templates,C#,Visual Studio,Templates,我希望创建一个VisualStudio2008模板,该模板将创建一个基本项目,并基于用户输入的选项删除某些文件/文件夹 现在,我已经在线学习了一些教程,这些教程让我创建表单来查询用户并将数据传递到IWizard类中,但我不知道从那里可以做什么 这些教程提供了一个示例来进行一些简单的替换: 代码: Form1 form=new Form1(); DialogResult dlg=form.ShowDialog(); if(dlg==DialogResult.OK) { foreach(form.P
Form1 form=new Form1();
DialogResult dlg=form.ShowDialog();
if(dlg==DialogResult.OK)
{
foreach(form.Parameters中的KeyValuePair对)
{
如果(!replacementsDictionary.ContainsKey(pair.Key))
replacementsDictionary.Add(pair.Key,pair.Value);
其他的
replacementsDictionary[pair.Key]=pair.Value;
}
}
form.Close();
但是我希望根据用户设置有选择地包括文件,如果可能的话,根据设置有选择地包括文件中的代码部分
有没有一种聪明的方法可以做到这一点,或者我必须手动删除IWizard:projectFinishedGeneration()中的项目文件?如果我理解正确,您希望能够确定是否应该将项目项添加到项目中
如果是这样,您可以实现IWizard.ShouldAddProjectItem并返回是否要添加该文件。根据我的经验,
ShouldAddProjectItem
仅对模板项目中的文件夹调用。因此,它几乎毫无用处
相反,您需要将代码放入ProjectFinishedGenerating
实现中,该实现使用VSAPI删除项目项
在其中,您可以删除以下项目:
ProjectItem file = project.ProjectItems.Item("File.cs");
file.Remove();
通过使用带有替换项的
$if$
,可以有选择地包括文件的某些部分。例如,请参见默认C#类库模板中的此位:
<ItemGroup>
<Reference Include="System"/>
$if$ ($targetframeworkversion$ >= 3.5)
<Reference Include="System.Core"/>
<Reference Include="System.Xml.Linq"/>
<Reference Include="System.Data.DataSetExtensions"/>
$endif$
$if$($targetframeworkversion$>=3.5)
$endif$
…等等。这非常有用,但我也想知道是否可以根据设置选择性地包含文件的某些部分。你在这里给出的答案很好。非常感谢。
<ItemGroup>
<Reference Include="System"/>
$if$ ($targetframeworkversion$ >= 3.5)
<Reference Include="System.Core"/>
<Reference Include="System.Xml.Linq"/>
<Reference Include="System.Data.DataSetExtensions"/>
$endif$