我在使用rake构建脚本在本地工作时遇到了一些麻烦(它在我们的CI服务器上运行正常),因为它出于某种原因使用了不正确的msbuild
版本。我也可以在Visual Studio 2013中构建它。
当我开始处理此项目时,我的网络项目.csproj
文件中存在以下内容:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)'==''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<!--<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />-->
<!-- Above commented out because it fails - keep reading for why... -->
为了调试目的,我添加了以下目标:
<Target Name="ShowVersions">
<Message Text="VS version: $(VisualStudioVersion)" />
<Message Text="VSToolsPath: $(VSToolsPath)" />
</Target>
以及随附的rake
任务:
msbuild :debug_versions do |msb|
msb.solution = "src/NCVIB.WebMVC/NCVIB.WebMVC.csproj"
msb.targets :ShowVersions
end
现在,如果我直接使用ShowVersions
从终端运行MSBuild MyWebProject.csproj /t:ShowVersions
目标,它会将我的VS版本正确识别为12.0。如果我运行rake debug_versions
,则表示VS版本为11.0,因此导致WebApplications.targets
失败(路径不存在)。
如何使rake
任务选择与普通msbuild
相同的VS版本?