Visual studio 2008 如何使用MSBuild将另一个项目导出为Visual Studio模板项目?

Visual studio 2008 如何使用MSBuild将另一个项目导出为Visual Studio模板项目?,visual-studio-2008,templates,msbuild,msbuildcommunitytasks,Visual Studio 2008,Templates,Msbuild,Msbuildcommunitytasks,以下是我想要实现的目标。我有许多C#和VB中的项目,我希望将它们导出为模板项目,作为我的自动构建过程的一部分。以交互方式导出模板很容易,但我需要将其作为自动构建过程的一部分。此外,模板项目必须在导出之前实际构建,这样才能保证在最终用户使用模板时编译它们。[我知道模板项目通常不会编译,但我已经解决了这个问题,因此就这个问题而言,我们可以认为模板项目将成功编译] 我计划使用MSBuild社区任务来压缩最终导出的模板项目。但是,我不能将此操作放在模板项目本身中,因为该操作将作为模板的一部分导出,而这不

以下是我想要实现的目标。我有许多C#和VB中的项目,我希望将它们导出为模板项目,作为我的自动构建过程的一部分。以交互方式导出模板很容易,但我需要将其作为自动构建过程的一部分。此外,模板项目必须在导出之前实际构建,这样才能保证在最终用户使用模板时编译它们。[我知道模板项目通常不会编译,但我已经解决了这个问题,因此就这个问题而言,我们可以认为模板项目将成功编译]

我计划使用MSBuild社区任务来压缩最终导出的模板项目。但是,我不能将此操作放在模板项目本身中,因为该操作将作为模板的一部分导出,而这不是我希望发生的事情

所以我的想法是,我可以创建一个新的单独的MSBuild项目,它检查其他模板项目,发现其中的文件,添加一个预定义的MyTemplate.vstemplate文件,将这些文件压缩,然后“walla”,这就是我导出的模板

到目前为止还不错。唯一的问题是,我是一个完全的MSBuild noob,在开始时遇到了麻烦。请,我会重视任何关于如何做到这一点的建议

我痛苦地意识到,这几乎是一个“为我做我的工作”类型的问题,我的辩护是:(a)这不是我的工作,(b)我试着做我的MSBuild作业,但灵感没有流动。

除了“为你做”(doing it for you)),我向你展示一下其他地方是如何做的,怎么样?我在那边也做了同样的事:

具体来说,projecttemplates/webformsreyingparty web项目由build.proj文件的BuildProjectTemplates目标转换为项目模板

我的策略是拥有一个普通的(可编译的)C#web项目。我在该文件夹中还有一个.vstemplate文件,该文件没有添加到项目中,但已经存在,因此我可以进行更改。然后在生成过程中,我让MSBuild生成网站,将结果(不包括网站生成的大多数产品)复制到临时位置。在复制过程中,我有一个自定义MSBuild任务,该任务在所有源文件中用$safeprojectname$替换我的web应用程序名,因为VS项目模板创建者就是这样做的。它还会复制图标以用于模板。最后,它将其压缩并将.zip文件放在我的输出目录中