我有一个包含多个vdproj文件的解决方案。 我在build.proj文件中创建了一个项目组:
<ItemGroup>
<SetupProjectFiles Include="$(MSBuildProjectDirectory\**\*.vdproj">
</SetupProjectFiles>
现在我想在每个上面调用devenv.exe吗?
<Exec Command="devenv.exe %(SetupProjectFiles)"></Exec>
不起作用......任何人都有指点吗?
答案 0 :(得分:5)
有些事情值得仔细检查。请查看此列表,并查看下面的代码段以获取工作示例。
确保vdproj文件的路径正确无误。尝试为每个文件路径写一条消息到日志,这样就可以验证包含哪些vdproj文件。
确保vdproj包含在解决方案所需的构建配置中;如果要构建“Debug”配置,请确保在解决方案的build Configuration Manager中检查vdproj是否为“Debug”配置组合。您可以全局设置它,也可以为每个SetupProjectFiles
项目的元数据中指定的每个vdproj设置它(例如,参见下面的代码段)。
确保使用完整的devenv.exe路径。您可以使用环境变量来帮助解决这个问题。
确保MSBuild Exec task syntax和devenv.exe syntax正确无误,例如,使用/build
开关并在带有空格字符的路径周围使用"
。
编辑:修正了代码中的拼写错误
<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=""$(DevEnvLocation)" "%(SetupProjectFiles.FullPath)" /build "%(SetupProjectFiles.Configuration)"" />