在我的C ++项目Test.wcxproj
中,我定义了以下配置:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
然后我有有问题的导入默认的C ++属性:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
当我的构建服务器构建我的MSBuild项目文件(配置为Release
且平台为Any CPU
)时,我收到此错误:
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
我的MSBuild
项目文件的相关部分如下所示:
<ItemGroup>
<ProjectFiles Include="$(MSBuildProjectDirectory)\**\*.csproj" />
<ProjectFiles Include="$(MSBuildProjectDirectory)\**\*.vcxproj" />
</ItemGroup>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>x64</Platform>
<OutputFolder>$(MSBuildProjectDirectory)\BuildOutput\$(Configuration)</OutputFolder>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)</SolutionDir>
</PropertyGroup>
...
<Target Name="Compile">
<MSBuild Projects="@(ProjectFiles)" Targets="Build" Properties="Configuration=$(Configuration);Platform=$(Platform);OutputPath=$(OutputFolder)\$(MSBuildProjectName);SolutionDir=$(SolutionDir)\" />
</Target>
在我的MSBuild
项目文件中,我使用的是ToolsVersion="12.0"
。确实安装了Visual Studio 2013
,所以我不明白它为什么选择使用v4.0\v110
。我的项目配置是否因某种原因被MSBuild
跳过?我想我可以使用/p
开关以某种方式覆盖此文件夹,但我希望我的.proj
文件是自包含的。
答案 0 :(得分:8)
尝试设置环境变量
VisualStudioVersion=12.0
或将其作为属性显式传递给命令行上的msbuild
msbuild.exe <project or solution to build> /p:VisualStudioVersion=12.0
我认为这是因为微软试图保持与旧版Visual Studio的兼容性。
请参阅Visual Studio project compatibility and VisualStudioVersion
答案 1 :(得分:3)
在我的情况下,我的构建定义被配置为构建我的.sln
文件而不是我的.proj
文件。我记得配置它来构建MSBuild项目,但不知何故它似乎已经恢复到解决方案。
无论如何,我找到了两个问题的解决方案:
.proj
文件(工具版本确实设置为12.0
)。