Visual studio 2008 需要将Visual Studio 2008 MSBuild脚本转换为VS2010的帮助吗
我有一个简单的MSBuild脚本,如下所示Visual studio 2008 需要将Visual Studio 2008 MSBuild脚本转换为VS2010的帮助吗,visual-studio-2008,visual-studio-2010,msbuild,Visual Studio 2008,Visual Studio 2010,Msbuild,我有一个简单的MSBuild脚本,如下所示 ... <Target Name="CompileSolution"> <Exec Command=""$(VS90COMNTOOLS)..\IDE\devenv.exe" ..\MyProject.All.sln /build" /> </Target> ... 我检查了环境变量“VS100COMNTOOLS”是否存在。如果我修改命令以使用devenv.
...
<Target Name="CompileSolution">
<Exec Command=""$(VS90COMNTOOLS)..\IDE\devenv.exe" ..\MyProject.All.sln /build" />
</Target>
...
我检查了环境变量“VS100COMNTOOLS”是否存在。如果我修改命令以使用devenv.exe的完整路径而不是变量,则一切正常。但这只是一个暂时的解决方案,因为我的同事的devenv路径不同
在Visual Studio 2010 MSBuild脚本中查询VS100COMNTOOLS
路径的最佳方法是什么?我不知道这是否有用,但您可以使用MSBuild本身,而不是使用Visual studion进行生成,例如:
<PropertyGroup>
<Configuration>Release</Configuration>
</PropertyGroup>
<Target Name="CoreBuild">
<Message text="Core Build"/>
<MSBuild Projects ="@(ProjectsToBuild)"
ContinueOnError ="false"
Properties="Configuration=$(Configuration)" >
<Output ItemName="OutputFiles" TaskParameter="TargetOutputs"/>
</MSBuild>
</Target>
<ItemGroup>
<ProjectsToBuild Include="**\*sln" Exclude="$(MSBuildProjectFile)"/>
</ItemGroup>
释放
无法解决问题,但这似乎正是我想要实现的,谢谢。该方法还允许如果您有一个大的构建,您可以使用“/m”之类的东西可以在多个核上运行生成的开关。@schlaviener实际上是在visual studio中执行生成时-发生向后转换-visual studio将sln文件转换为MSBuild生成文件并执行相应的目标。你可以在这里(或在该博客的其他文章中)阅读更详细的信息:@Alexey,我知道。但最初的问题是,VS2010中不存在$(VS90COMNTOOLS)
变量,将其更改为$(VS100COMNTOOLS)
也不起作用。由于我们的开发团队同时使用x86和x64操作系统,因此将var更改为devenv.exe
的完整路径不是一个好的解决方案。然而,使用目标CoreBuild似乎是一个更好的解决方案,但还没有尝试过。
<Exec Command="echo $(VS100COMNTOOLS)" />
<PropertyGroup>
<Configuration>Release</Configuration>
</PropertyGroup>
<Target Name="CoreBuild">
<Message text="Core Build"/>
<MSBuild Projects ="@(ProjectsToBuild)"
ContinueOnError ="false"
Properties="Configuration=$(Configuration)" >
<Output ItemName="OutputFiles" TaskParameter="TargetOutputs"/>
</MSBuild>
</Target>
<ItemGroup>
<ProjectsToBuild Include="**\*sln" Exclude="$(MSBuildProjectFile)"/>
</ItemGroup>