使用 MSBuild.exe 生成解决方案中的特定目标

可使用 MSBuild.exe 在解决方案中生成特定项目的特定目标。

在解决方案中生成特定项目的特定目标

  1. 在命令行中,将目录更改为解决方案文件夹并键入 MSBuild.exe <SolutionName>.sln,但先不要按 Enter。 使用解决方案名称。

  2. 指定 <ProjectName> 格式的 -target: 开关后的目标:<TargetName>。 如果项目名称包含任何字符 %$@;.()',请将其替换为指定目标名称中的 _

如果不确定哪些目标可用,可以通过使用 -targets (-ts) 开关调用 MSBuild 来获取可用于单个项目的目标列表。 例如 MSBuild.exe -ts SomeProject.proj-targets-ts 选项仅适用于项目文件,而不适用于解决方案文件。

示例

以下示例执行 NotInSlnFolder 项目的 Rebuild 目标,然后执行位于 NewFolder 解决方案文件夹的 InSolutionFolder 项目的 Clean 目标。

msbuild SlnFolders.sln -target:NotInSlnfolder:Rebuild;NewFolder\InSolutionFolder:Clean

生成特定目标还会触发要生成的其他依赖目标。

注意

targets 开关中使用的路径不是文件系统路径。 它是解决方案内部表示形式的路径,在解决方案资源管理器中可见。 例如,不能在 targets 开关中使用 ... 等文件系统路径语法。 这就是为什么在像 NotInSlnFolder 这样的另一个文件系统位置引用的项目不需要显式路径,而解决方案文件夹 InSolutionFolder 内的项目却需要的原因。 解决方案也可以有通过 Visual Studio 中的添加>解决方案文件夹创建的文件夹。 在 Visual Studio 的解决方案资源管理器中查看时,这些文件夹用于组织解决方案中的项目。 文件系统中的布局可能与解决方案文件夹结构不同。 请参阅解决方案文件夹

故障排除

如果想检查解决方案项目,可使用 MSBuild 提供的调试选项来执行此操作。 设置环境变量 MSBUILDEMITSOLUTION=1 并生成解决方案。 此操作将生成一个名为 <SolutionName>.sln.metaproj 的 MSBuild 文件,该文件在生成时显示 MSBuild 解决方案的内部视图。 可检查此视图以确定可以生成的目标和其他配置详细信息。

除非需要此内部视图,否则不要使用此环境变量集进行生成操作。 此设置可能会在解决方案中生成项目时导致问题产生。 改为查看二进制日志