可使用 MSBuild.exe 在解决方案中生成特定项目的特定目标。
在解决方案中生成特定项目的特定目标
在命令行中,将目录更改为解决方案文件夹并键入
MSBuild.exe <SolutionName>.sln
,但先不要按 Enter。 使用解决方案名称。指定 <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 解决方案的内部视图。 可检查此视图以确定可以生成的目标和其他配置详细信息。
除非需要此内部视图,否则不要使用此环境变量集进行生成操作。 此设置可能会在解决方案中生成项目时导致问题产生。 改为查看二进制日志 。