我正试图从RTC(BuildForge)使用MSBuild启动.net Build。我一直得到以下例外:
错误MSB1009:项目文件不存在。切换:F:\ Program Files (86)\ IBM \构建 锻造\代理\ Captiva_Build_dotNET \ BUILD_117 \ XXXXXX \来源 代码\组件\ XXXXXX \ xxxxxxx.sln
构建命令如下
MSBuild.exe "xxxx.sln" /t:xxx_yyyy_zzzzzz_asdfasdf_base
其中/t:
是解决方案中的一个项目。我不明白我做错了什么。我在声明中有_
。这应该是一个简单的构建?有什么想法吗?
答案 0 :(得分:8)
msbuild.exe /t:target
用于执行解决方案或项目中的特定目标。
msbuild.exe MySolution.sln /t:Clean
要构建特定项目,您需要指定项目文件而不是解决方案。
msbuild.exe MyProject.csproj
编辑:
Eureka,你是绝对正确的,我使用了MsBuildEmitSolution
env变量来输出metaproj脚本,但之前从未见过。
所以在你到达之前:
MsBuild.exe MySolution.sln /t:ProjectName:TargetName
在命令行中,设置MsBuildEmitSolution:
set MsBuildEmitSolution=1
然后生成你的metaproj。
MsBuild.exe MySolution.sln /pp
在记事本中打开输出文件MySolution.sln.metaproj
并向下滚动并找到您要构建的相关<Target />
节点,并记下Name属性字符串。
<Target Name="Client_Test:Build">
<MSBuild Condition="'%(ProjectReference.Identity)' == '...Client_Test.csproj'" Projects="@(ProjectReference)" Targets="Publish" BuildInParallel="True" ToolsVersion="$(ProjectToolsVersion)" Properties="..." />
</Target>
和VOILA!
MsBuild.exe MySolution.sln /t:"Client_Test:Build"