1

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

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

现在我想在其中的每一个上调用 devenv.exe?

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

不行。。。请问有大神指点一下吗?

4

1 回答 1

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;" />
于 2013-04-03T20:07:18.470 回答