Visual studio VS 2010:需要项目仅充当MSBUILD脚本的触发器,而不编译为程序集
我有一个包含多个web应用程序项目的解决方案。在所有项目构建完成后,我需要运行MSBUILD脚本 我过去所做的是从一个现有项目中调用脚本(通过.csproj文件中的Visual studio VS 2010:需要项目仅充当MSBUILD脚本的触发器,而不编译为程序集,visual-studio,visual-studio-2010,msbuild,Visual Studio,Visual Studio 2010,Msbuild,我有一个包含多个web应用程序项目的解决方案。在所有项目构建完成后,我需要运行MSBUILD脚本 我过去所做的是从一个现有项目中调用脚本(通过.csproj文件中的)。然而,我必须确保我使用了最后构建的项目,如果构建顺序发生变化,我将得到意想不到的结果 因此,我决定创建一个空的web应用程序项目,并设置项目依赖项,使其始终最后生成,然后将MSBUILD脚本附加到此项目 所以现在它总是在正确的时间运行,但是我得到了一个额外的(微小的)程序集,这是由于构建了一个假定为空的项目。项目中没有代码文件(A
)。然而,我必须确保我使用了最后构建的项目,如果构建顺序发生变化,我将得到意想不到的结果
因此,我决定创建一个空的web应用程序项目,并设置项目依赖项,使其始终最后生成,然后将MSBUILD脚本附加到此项目
所以现在它总是在正确的时间运行,但是我得到了一个额外的(微小的)程序集,这是由于构建了一个假定为空的项目。项目中没有代码文件(AssemblyInfo.cs除外),但始终生成程序集
那么,有没有一种方法可以停止正在生成的程序集,或者有没有一种方法可以将MSBUILD脚本作为一个整体附加到解决方案并完全避免这个虚拟项目?在MSBUILD 4.0中,有两个新的钩子可用于在生成解决方案之前和之后运行脚本。在解决方案文件上运行MSBuild时,它将在解决方案目录中查找两个目标文件:
- 之前.SolutionName.sln.targets
- 之后.SolutionName.sln.targets
另请参见:
<Target Name="RunPostBuildScripts" AfterTargets="Build">
<MSBuild Projects="PostBuild.targets" />
</Target>