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

Ber*_*ard 1 msbuild

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

<ItemGroup>
<SetupProjectFiles Include="$(MSBuildProjectDirectory\**\*.vdproj">
</SetupProjectFiles>
Run Code Online (Sandbox Code Playgroud)

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

<Exec Command="devenv.exe %(SetupProjectFiles)"></Exec>
Run Code Online (Sandbox Code Playgroud)

不行......任何人都有指点吗?

Mic*_*ael 5

有一些值得仔细检查的东西.查看此列表并查看下面的代码段以获取工作示例.

  1. 确保vdproj文件的路径正确.尝试在每个文件路径的日志中写入消息,以便验证包含哪些vdproj文件.

  2. 确保vdproj包含在解决方案的所需构建配置中; 如果要构建"调试"配置,请确保在解决方案的构建配置管理器中检查了"调试"配置组合的vdproj .您可以全局设置它,也可以为每个SetupProjectFiles项目的元数据中指定的每个vdproj设置它(例如,请参阅下面的代码段).

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

  4. 确保MSBuild Exec任务语法devenv.exe语法正确,例如,使用/build开关并使用&quot;带有空格字符的路径.


编辑:更正了代码中的拼写错误


<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;" />
Run Code Online (Sandbox Code Playgroud)