我正在尝试为解决方案中的所有项目设置默认位置OutDir
并供其使用。IntDir
如:<OutDir>$(SolutionDir)bld\$(Platform)\$(ProjectName)\$(Configuration)\</OutDir>
当我在Directory.Build.props
文件中设置它时,它在 Visual Studio 属性对话框中看起来没问题;但是当我构建时,该$(ProjectName)
部分是空的。这告诉我,在 Directory.Build.props 中读取 OutDir 时,此宏不可用。
我尝试将其添加到Directory.Build.targets
文件中,但它似乎完全被忽略了。
另一个目标是在初始更改后不修改任何 vcxproj 文件。新项目会自动继承这些设置。
这可能吗?也许我将设置放置在文件中的错误位置/顺序...?
这是 Directory.Build.props 的片段:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets">
</ImportGroup>
<!-- Define macros for easy and consistent access to various parts of the tree -->
<PropertyGroup Label="UserMacros">
<GslInclude>$(SolutionDir)packages\Microsoft.Gsl.0.1.2.1\build\native\include</GslInclude>
<mySrcDir>$(SolutionDir)src\</mySrcDir>
<myBldDir>$(SolutionDir)bld\</myBldDir>
<myBldIntDir>$(SolutionDir)bld_int\</myBldIntDir>
</PropertyGroup>
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="GslInclude"> <Value>$(GslInclude)</Value> </BuildMacro>
<BuildMacro Include="mySrcDir"> <Value>$(mySrcDir)</Value> </BuildMacro>
<BuildMacro Include="myBldDir"> <Value>$(myBldDir)</Value> </BuildMacro>
<BuildMacro Include="myBldIntDir"> <Value>$(myBldIntDir)</Value> </BuildMacro>
</ItemGroup>
<!-- Platform Toolset, Windows SDK -->
<PropertyGroup Label="Globals">
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<!-- Default Compiler settings -->
<ItemDefinitionGroup>
<ClCompile>
<!-- .... -->
</ClCompile>
</ItemDefinitionGroup>
<!-- Default Folders for target output -->
<PropertyGroup>
<OutDir>$(myBldDir)$(Platform)\$(ProjectName)\$(Configuration)\</OutDir>
<IntDir>$(myBldIntDir)$(Platform)\$(ProjectName)\$(Configuration)\</IntDir>
</PropertyGroup>
</Project>
当然,我只是删除了 proj 文件中的所有<OutDir>
设置<IntDir>
。
我也希望能够根据 Visual Studio 的版本对设置设置条件。我们的一些开发人员正在使用带有旧版 ToolSet 的 VS2017;有些人正在使用最新的VS2019....