【问题标题】:Need help converting Visual Studio 2008 MSBuild Script to VS2010需要帮助将 Visual Studio 2008 MSBuild 脚本转换为 VS2010
【发布时间】:2010-10-26 11:52:19
【问题描述】:

我有一个简单的 MSBuild 脚本,看起来像这样。

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

现在我将 propect 迁移到 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 路径的最佳方法是什么?

【问题讨论】:

    标签: visual-studio-2008 visual-studio-2010 msbuild


    【解决方案1】:

    我不知道这是否有任何用处,但您可以使用 msbuild 本身来代替使用 Visual Studion 进行构建,这里有任何示例:

     <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>
    

    【讨论】:

    • 没有解决问题,但看起来这正是我想要实现的,谢谢。
    • 该方法还允许如果你有一个大的构建,你可以使用“/m”开关之类的东西,它可以在多个核心上运行构建。
    • @SchlaWiener 实际上,当您在 Visual Studio 中执行构建时 - 发生反向转换 - Visual Studio 将 sln 文件转换为 MSBuild 构建文件并执行相应的目标。您可以在此处(或该博客上的其他文章)阅读更详细的信息:sedodream.com/2010/10/22/MSBuildExtendingTheSolutionBuild.aspx
    • @Alexey,我知道。但最初的问题是,$(VS90COMNTOOLS) 变量在 VS2010 中不存在,将其更改为 $(VS100COMNTOOLS) 也不起作用。由于我们的开发团队同时使用 x86 和 x64 操作系统,将 var 更改为 devenv.exe 的完整路径并不是一个好的解决方案。但是,无论如何,使用目标 CoreBuild 似乎是一个更好的解决方案,但还没有尝试过。
    猜你喜欢
    • 2018-11-09
    • 2021-12-14
    • 2019-10-16
    • 2023-03-03
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2018-11-24
    相关资源
    最近更新 更多