为多个.vdproj文件调用devenv.exe

时间:2013-04-03 15:47:10

标签: msbuild

我有一个包含多个vdproj文件的解决方案。 我在build.proj文件中创建了一个项目组:

<ItemGroup>
<SetupProjectFiles Include="$(MSBuildProjectDirectory\**\*.vdproj">
</SetupProjectFiles>

现在我想在每个上面调用devenv.exe吗?

<Exec Command="devenv.exe %(SetupProjectFiles)"></Exec>

不起作用......任何人都有指点吗?

1 个答案:

答案 0 :(得分:5)

有些事情值得仔细检查。请查看此列表,并查看下面的代码段以获取工作示例。

  1. 确保vdproj文件的路径正确无误。尝试为每个文件路径写一条消息到日志,这样就可以验证包含哪些vdproj文件。

  2. 确保vdproj包含在解决方案所需的构建配置中;如果要构建“Debug”配置,请确保在解决方案的build Configuration Manager中检查vdproj是否为“Debug”配置组合。您可以全局设置它,也可以为每个SetupProjectFiles项目的元数据中指定的每个vdproj设置它(例如,参见下面的代码段)。

  3. 确保使用完整的devenv.exe路径。您可以使用环境变量来帮助解决这个问题。

  4. 确保MSBuild Exec task syntaxdevenv.exe syntax正确无误,例如,使用/build开关并在带有空格字符的路径周围使用&quot;


  5. 编辑:修正了代码中的拼写错误


    <ItemGroup>
      <SetupProjectFiles Include="$(MSBuildProjectDirectory)\**\*.vdproj">
        <Configuration>Release</Configuration>
      </SetupProjectFiles>
    </ItemGroup>
    
    <PropertyGroup>
      <!-- VS110COMNTOOLS is for VS2012. VS100COMNTOOLS is for VS 2010. VS90COMNTOOLS is for VS2008 -->
      <DevEnvLocation>$(VS100COMNTOOLS)..\IDE\devenv.exe</DevEnvLocation>
    </PropertyGroup>
    
    <Message Text="vdproj file:  %(SetupProjectFiles.FullPath)" />
    
    <Exec Command="&quot;$(DevEnvLocation)&quot; &quot;%(SetupProjectFiles.FullPath)&quot; /build &quot;%(SetupProjectFiles.Configuration)&quot;" />