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

Msbuild 为多个.vdproj文件调用devenv.exe,msbuild,Msbuild,我有一个解决方案,其中包含多个vdproj文件。 我已在build.proj文件中创建了一个项目组: <ItemGroup> <SetupProjectFiles Include="$(MSBuildProjectDirectory\**\*.vdproj"> </SetupProjectFiles> 现在我想对每一个调用devenv.exe <Exec Command="devenv.exe %(SetupProjectFiles)"><

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

<ItemGroup>
<SetupProjectFiles Include="$(MSBuildProjectDirectory\**\*.vdproj">
</SetupProjectFiles>
现在我想对每一个调用devenv.exe

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

不起作用…有人有什么建议吗?

有一些东西值得仔细检查。查看此列表,并查看下面的代码片段以了解工作示例

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

确保vdproj包含在解决方案所需的构建配置中;如果您正在构建调试配置,请确保在解决方案的构建中为调试配置组合选中vdproj。您可以全局设置此项,也可以为每个SetupProjectFiles项的元数据中指定的每个vdproj设置此项。有关此项的示例,请参见下面的代码段

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

确保和正确,例如使用/build开关和使用带空格字符的环绕路径

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


有几件事值得仔细检查。查看此列表,并查看下面的代码片段以了解工作示例

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

确保vdproj包含在解决方案所需的构建配置中;如果您正在构建调试配置,请确保在解决方案的构建中为调试配置组合选中vdproj。您可以全局设置此项,也可以为每个SetupProjectFiles项的元数据中指定的每个vdproj设置此项。有关此项的示例,请参见下面的代码段

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

确保和正确,例如使用/build开关和使用带空格字符的环绕路径

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


它到底怎么“不起作用”?它到底怎么“不起作用”?那也不起作用。我们的vdproj文件称为blah.blah.vdproj,有时也称为blah.blah.setup。vdproj@Bernard,我在上面的代码中发现了一个缺少的括号,因此,如果您试图使用它而不捕获该问题,我可以理解为什么找不到vdproj文件。除此之外,我不确定为什么代码或示例中显示的通配符不起作用;他们将各自找到blah.blah.vdproj或blah.blah.setup.vdproj文件。你有错误吗?您是否已完成我建议答案中的第2项,以验证是否找到了vdproj文件?@Bernard,我还在Exec任务中发现了一个拼写错误…现在已更正。这也不起作用。我们的vdproj文件称为blah.blah.vdproj,有时也称为blah.blah.setup。vdproj@Bernard,我在上面的代码中发现了一个缺少的括号,因此,如果您试图使用它而不捕获该问题,我可以理解为什么找不到vdproj文件。除此之外,我不确定为什么代码或示例中显示的通配符不起作用;他们将各自找到blah.blah.vdproj或blah.blah.setup.vdproj文件。你有错误吗?您是否已完成我建议答案中的第2项,以验证是否找到了vdproj文件?@Bernard,我还在Exec任务中发现了一个拼写错误……现在已更正。
<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;" />