我正在创建一个VSIX扩展,生成一个要分发的多项目解决方案。我想对每个项目vstemplate中包含的单个项目做几件事,但我想我可能采取了错误的方法。我创建了一个IWizard,并且能够调试解决方案。我在vstemplate中为项目项添加了一个自定义项类型,以便识别我要标记的项。然后我执行以下操作将ProjectItems Build Action从Content更改为Compile。我仍然在学习Visual Studio Extensability并且使用这些对象的经验非常有限,所以如果下面的内容很可怕我会道歉!
public void ProjectFinishedGenerating(Project project)
{
var myproject = (VSProject)project.Object;
foreach (ProjectItem pi in myproject.ProjectItems)
{
var myBuildAction = pi.Properties.Item("ItemType").Value;
if myBuildAction == "CompileContent")
pi.Properties.Item("ItemType").Value = "Compile";
}
}
这是我在vstemplate中的项目
<VSTemplate Version="3.0.0" Type="Project" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
<ProjectItem TargetFileName="MyFolder\$ext_safeprojectname$\$ext_safeprojectname$_CodeFile.cs" ReplaceParameters="true" ItemType="CompileContent">CodeFile.cs</ProjectItem>