2

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

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

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

到目前为止,一切都很好。唯一的问题是,我是一个完整的 MSBuild 菜鸟,我在开始时遇到了麻烦。拜托,我会重视有关如何实现这一目标的任何建议。

我痛苦地意识到这几乎是一个“为我做我的工作”类型的问题,我的辩护是(a)这实际上不是我的工作,并且(b)我试图做我的 MSBuild 作业和灵感只是没有流动。

4

1 回答 1

2

没有“为你做”(),我告诉你它是如何在其他地方完成的?我自己也在那边做了同样的事情:

http://github.com/AArnott/dotnetopenid/commits

具体来说,projecttemplates/WebFormsRelyingParty web 项目通过 build.proj 文件的 BuildProjectTemplates 目标转化为项目模板。

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

于 2009-10-10T20:34:48.337 回答