将MSBuild的工作划分为项目

将MSBuild的工作划分为项目,msbuild,Msbuild,我开始为我的产品创建MSBuild脚本,但遇到了一个难题 代码分为大约25个项目,有些wll需要模糊处理,有些需要强名称签名;其他文件则需要链接到单个文件中 所有这些项目应产生3个产品,3个设置 目前的问题如下:如何划分MSBuild脚本以使其最有意义 我是否为每个产品创建脚本?我是否为每个项目创建脚本?我有一个用于构建的脚本,另一个用于模糊处理等吗?我认为每个产品都有脚本是个好主意。 为了减少重复应用,创建可重用的“子脚本”并将它们导入主脚本(这可以通过指令完成) 每个产品的脚本听起来像是一条

我开始为我的产品创建MSBuild脚本,但遇到了一个难题

代码分为大约25个项目,有些wll需要模糊处理,有些需要强名称签名;其他文件则需要链接到单个文件中

所有这些项目应产生3个产品,3个设置

目前的问题如下:如何划分MSBuild脚本以使其最有意义


我是否为每个产品创建脚本?我是否为每个项目创建脚本?我有一个用于构建的脚本,另一个用于模糊处理等吗?

我认为每个产品都有脚本是个好主意。 为了减少重复应用,创建可重用的“子脚本”并将它们导入主脚本(这可以通过指令完成)


每个产品的脚本听起来像是一条路要走。您可能需要考虑使用任意数量的共享或基础脚本,以便导入常见的构建步骤。如前所述,您可以在产品的构建脚本中使用:

<Import Project="..\Shared\Base.proj" />

您可能还希望利用的另一个优势是目标和属性重写。它类似于重写.Net类中的虚拟方法。有关更多详细信息,请参阅和。我知道我经常利用这一点,在包含的脚本中设置默认值,然后在产品构建脚本中根据需要覆盖它们,以便自定义构建行为。例如,我经常在构建之前生成所需的文件,因此我将这些目标挂接到BuildDependsOn属性组中。这样,每当我从IDE执行
F5
、从命令行调用构建目标或以其他方式构建项目或解决方案时,都会生成生成的文件。显然,如果您有任何构建步骤需要运行很长时间,或者只需要在特殊情况下运行(如构建安装程序),那么您需要注意到底是什么被钩住了

<Import Project="..\Shared\Base.proj" />