有没有办法从项目文件中覆盖$(VCTargetsPath)?

时间:2014-01-14 00:45:32

标签: visual-studio visual-c++ msbuild projects-and-solutions

我需要使用Microsoft Visual C ++ 2010和MSBuild为几个不同的平台构建我的软件。我将平台添加到$(VCTargetsPath)目录并创建.props和.targets文件。然后,我将文件复制到配置管理存储库,为复制的文件定义了父目录的路径:$(CM_REPO_PATH),并希望重定向visual studio以使用存储库中的文件。

当我在我的机器上创建名为%MSBuildExtensionsPath%的环境变量并将其指向$(CM_REPO_PATH)\ MSBuild时,我能够使项目正常工作。但我想要的是在visual studio项目中设置$(VCTargetsPath)和/或$(MSBuildExtensionsPath),而不是在每个开发人员的机器上设置环境变量。

当我添加属性组来执行​​此操作时...

<PropertyGroup>
  <VCTargetsPath>$(CM_REPO_PATH)\MSBuild\Microsoft.Cpp\v4.0</VCTargetsPath>
  <MSBuildExtensionsPath>$(CM_REPO_PATH)\MSBuild</MSBuildExtensionsPath>
  <MSBuildExtensionsPath32>$(CM_REPO_PATH)\MSBuild</MSBuildExtensionsPath32>
</PropertyGroup>

...新平台不可用(好像项目仍在使用默认的$(VCTargetsPath),而不是指定的那个)。有没有办法从项目文件中覆盖$(VCTargetsPath)?

1 个答案:

答案 0 :(得分:0)

您的最初声明是,您想为许多不同的平台构建项目。

https://docs.microsoft.com/en-us/visualstudio/extensibility/visual-cpp-project-extensibility?view=vs-2017非常详细地描述了如何在Visual Studio 2017中实现这一点。希望对于所使用的版本也是如此。

这样做的好处是,您根本不需要更改$(VCTargetsPath)。