我们有一个包含多个项目的解决方案,并且需要在所有代码编译完成后运行一个工具。该工具必须以所有从解决方案构建的.dll和.exe文件作为输入(因此对于增量构建,仅提供刚刚重建的二进制文件不足够),并且所有这些二进制文件必须是最新的。
目前我们使用一个MSBuild .proj文件来完成这项任务,我们从命令行中运行该文件,其中包括所有项目,并使用MSBuild的Output元素查找解决方案中二进制文件的路径。
这种方法存在两个问题,使得它不完全符合我们的需求。该工具不需要实际运行在所有项目上,只需要在其中一些项目上运行即可。而且我们需要能够在Visual Studio中进行构建。
看起来我需要在某些项目的.csproj文件中定义一些东西,比如“在我上面运行该工具”,以收集这些项目的路径,并在这些路径上运行该工具。
但我不知道怎么做。当我从Visual Studio中进行构建时,似乎无法在项目构建之间共享状态,并且似乎没有钩子可以在解决方案构建之后运行。
在命令行中,有before.*.sln.targets和after.*.sln.targets,但这些无法在Visual Studio中使用。
看起来我想要的东西非常简单,我只需要一个工具在构建后自动查看解决方案的二进制文件,所以我认为这不应该是不可能的。但是从文档中我找不到如何做到这一点。我对MSBuild很陌生,所以我可能错过了一些显而易见的东西。
目前我们使用一个MSBuild .proj文件来完成这项任务,我们从命令行中运行该文件,其中包括所有项目,并使用MSBuild的Output元素查找解决方案中二进制文件的路径。
这种方法存在两个问题,使得它不完全符合我们的需求。该工具不需要实际运行在所有项目上,只需要在其中一些项目上运行即可。而且我们需要能够在Visual Studio中进行构建。
看起来我需要在某些项目的.csproj文件中定义一些东西,比如“在我上面运行该工具”,以收集这些项目的路径,并在这些路径上运行该工具。
但我不知道怎么做。当我从Visual Studio中进行构建时,似乎无法在项目构建之间共享状态,并且似乎没有钩子可以在解决方案构建之后运行。
在命令行中,有before.*.sln.targets和after.*.sln.targets,但这些无法在Visual Studio中使用。
看起来我想要的东西非常简单,我只需要一个工具在构建后自动查看解决方案的二进制文件,所以我认为这不应该是不可能的。但是从文档中我找不到如何做到这一点。我对MSBuild很陌生,所以我可能错过了一些显而易见的东西。