在MsBuild文件中包含.sln文件?

时间:2014-01-26 14:55:00

标签: msbuild

我正在尝试从.msbuild文件构建Visual Studio项目。我们的想法是在构建之前做一些事情,然后从同一个地方执行.sln的构建。

这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="BuildClient" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <Tools>$(MSBuildProjectDirectory)\tools</Tools>
    <NugetExe>$(Tools)\nuget\nuget.exe</NugetExe>
    <ClientFolder>$(MSBuildProjectDirectory)\src\Client</ClientFolder>
    <ClientSolution>$(ClientFolder)\ClientProject.sln</ClientSolution>
  </PropertyGroup>

  <Target Name="BuildClient">
    <!--Restore Nuget-->
    <Message Text="Starting Restoring Nuget Packages" />
    <Exec Command=" $(NugetExe) restore $(ClientSolution)" />
    <Message Text="Finished Restoring Nuget Packages" />


    <Import Project="$(ClientSolution)" />

    <!--build project-->
  </Target>
</Project>

但在VS中标有<Import>的下划线,表示导入应该在级别上,而不是<Target>。当我按照建议移动<Import>级别时,我收到执行错误:

errorMSB4025: The project file could not be loaded. Data at the root level is invalid.

知道如何在没有重大改写的情况下构建整个项目吗?

1 个答案:

答案 0 :(得分:2)

傻傻的我!解决方案变得非常简单:

<MSBuild Projects="..\..\MySolution.sln" "/>

这样做可以在.sln文件

上执行构建

我从this answer得到了指针。