MS从解决方案文件中构建项目

时间:2014-05-19 21:03:23

标签: msbuild

我正试图从RTC(Bui​​ldForge)使用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:是解决方案中的一个项目。我不明白我做错了什么。我在声明中有_。这应该是一个简单的构建?有什么想法吗?

1 个答案:

答案 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"