2010-10-26 73 views
0

我有一个看起来像这样的简单MSBuild脚本。需要帮助将Visual Studio 2008 MSBuild脚本转换为VS2010

... 
    <Target Name="CompileSolution"> 
    <Exec Command="&quot;$(VS90COMNTOOLS)..\IDE\devenv.exe&quot; ..\MyProject.All.sln /build" /> 
    </Target> 
    ... 

现在我迁移到前景展望Visual Studio 2010和该命令将失败。

... 
    <Target Name="CompileSolution"> 
    <Exec Command="&quot;$(VS100COMNTOOLS)..\IDE\devenv.exe&quot; ..\MyProject.All.sln /build" /> 
    </Target> 
    ... 

因为变量$(VS100COMNTOOLS)是空的。我核实,与

<Exec Command="echo $(VS100COMNTOOLS)" /> 

我检查了环境变量“VS100COMNTOOLS”存在。如果我修改该命令以使用devenv.exe而不是变量的完整路径,则一切正常。但这只是一个临时解决方案,因为我的同事们的devenv路径不同。

什么是在Visual Studio 2010 MSBuild脚本中查询VS100COMNTOOLS路径的最佳方法?

回答

2

我不知道这是任何使用,但使用的视觉studion打造你可以只使用一个MSBuild本身,这里的任何例子:

<PropertyGroup> 
    <Configuration>Release</Configuration> 
    </PropertyGroup> 

<Target Name="CoreBuild"> 
    <Message text="Core Build"/> 
    <MSBuild Projects ="@(ProjectsToBuild)" 
      ContinueOnError ="false" 
      Properties="Configuration=$(Configuration)" > 
     <Output ItemName="OutputFiles" TaskParameter="TargetOutputs"/> 
    </MSBuild> 
</Target> 

    <ItemGroup> 
    <ProjectsToBuild Include="**\*sln" Exclude="$(MSBuildProjectFile)"/> 
    </ItemGroup> 
+0

不解决这个问题,但看起来这正是我想要的,谢谢。 – 2010-10-27 05:54:07

+0

该方法还允许如果你有一个大的构建,你可以像“/ m”开关那样可以在多个内核上运行构建。 – Iain 2010-10-27 08:24:38

+0

@SchlaWiener实际上,当你在visual studio中执行构建 - 发生反向转换时 - visual studio将sln文件转换为MSBuild构建文件并执行相应的目标。你可以在这里阅读更详细的信息(或者在该博客的其他文章中):http://sedodream.com/2010/10/22/MSBuildExtendingTheSolutionBuild.aspx – 2010-11-03 08:31:33