在Visual Studio 2010中创建多项目(解决方案)模板之关键步骤【四】
第一步. 在文件夹 ERPTemplate 下面分别创建各个项目模板所对应的文件夹 第二步. 将Properties 文件夹下的AssemblyInfo.cs 和所有 *.cs 文件 右击属性编译方式(Build Action)改为 None,否则将出现编译错误 第三步. 修改项目模板所对应的文件夹下的 xxx.csproj 文件 重命名 ERP.BizService.Implements.csproj 为 BizService.Implements.csproj 修改RootNamespace和AssemblyName,将其改为$safeprojectname$.BizService.Implements 修改后如下: <RootNamespace>$safeprojectname$.BizService.Implements</RootNamespace> <AssemblyName>$safeprojectname$.BizService.Implements</AssemblyName>
修改项目引用:
<ProjectReference Include="..\$safeprojectname$.ClassLibrary1\$safeprojectname$.ClassLibrary1.csproj">
<Project>{D091A58B-B640-4716-BAC3-4301E6C7E6D9}</Project>
<Name>$safeprojectname$.ClassLibrary1</Name>
</ProjectReference>
注意:这里的$safeprojectname$是项目模板的一个内置的 宏,表示一个“安全”的项目名称(也就是由Visual Studio处理过的,用户在 New Project对话框中输入的那个项目名称)。此外,对于单一项目模板而言,直接使用这个$safeprojectname$是没有问题的,但如果是多 项 目解决方案的模板,那么要在各个项目中使用这个宏,就需要一些额外操作,这部分内容会在后面介绍。有关项目模板所使用的宏,请参 见:模板参数(MSDN) 第四步. 修改项目模板所对应的文件夹下的 MyTemplate.vstemplate 文件 将第一个Project节点的File属性改为 BizService.Implements.csproj; TargetFileName属性改 为$safeprojectname$.BizService.Implements.csproj; 第五步. 修改解决方案目录下的 ERPProjectTemplate.vstemplate文件 在ProjectCollection节点中添加如下代码: <ProjectTemplateLink ProjectName="$safeprojectname$.BizService.Implements"> ERPTemplate\BizService.Implements\MyTemplate.vstemplate </ProjectTemplateLink> 第六步. 将ERPTemplate\BizService.Implements目录下BizService.Implements.csproj以及所有C#文件中的 ERP改为$safeprojectname$宏 第七步. 用以上相同的步骤,将其他项目导出成模板并添加到 ERPProjectTemplate 解决方案
以下是自定义的多项目解决方案模板配置文件 ERPTemplate.vstemplate
<?xml version="1.0" encoding="utf-8"?> <VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> <TemplateData> <Name>ERPProjectTemplate</Name> <Description>A project for creating an application of ERP.</Description> <Icon>ERPProjectTemplate.ico</Icon> <ProjectType>CSharp</ProjectType> <RequiredFrameworkVersion>2.0</RequiredFrameworkVersion> <SortOrder>1000</SortOrder> <TemplateID>b420f0f7-ef24-4de9-81a4-8f7ddd486648</TemplateID> <CreateNewFolder>true</CreateNewFolder> <DefaultName>ERPProjectTemplate</DefaultName> <ProvideDefaultName>true</ProvideDefaultName> </TemplateData> <TemplateContent> <ProjectCollection> <ProjectTemplateLink ProjectName="$safeprojectname$.BizService.Implements"> ERPTemplate\BizService.Implements\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.BizService.Interfaces"> ERPTemplate\BizService.Interfaces\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.Core"> ERPTemplate\Core\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.Dao.Implements"> ERPTemplate\Dao.Implements\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.Dao.Interfaces"> ERPTemplate\Dao.Interfaces\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.Database"> ERPTemplate\Database\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.Domain"> ERPTemplate\Domain\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.Utilities"> ERPTemplate\Utilities\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.Web.Core"> ERPTemplate\Web.Core\MyTemplate.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="$safeprojectname$.Web.MVC2"> ERPTemplate\Web.MVC2\MyTemplate.vstemplate </ProjectTemplateLink> </ProjectCollection> </TemplateContent> </VSTemplate>
在手动添加对任何 EnvDTE 命名空间(EnvDTE、EnvDTE80、EnvDTE90、EnvDTE90a 或 EnvDTE100)的引用时,请在“属性”窗口中将引用的“嵌入互操作类型”属性设置为“False”。
将此属性设置为“True”可能会导致生成问题,因为某些 EnvDTE 属性是不能嵌入的。
有关更多VSTemplate 元素(Visual Studio 模板)配置请参阅:http://msdn.microsoft.com/zh-cn/library/31cdwx28%28v=vs.100%29.aspx
如何:创建多项目模板 http://msdn.microsoft.com/zh-cn/library/ms185308%28v=vs.100%29.aspx