VisualC++2015でソリューション内の全てのプロジェクトに継承されるプロパティを設定する方法

 2015より前のバージョン等では出来たのですが、全てのプロジェクトに継承されるプロジェクトプロパティを、IDEから設定できません。
 しかし、全てのプロジェクトに継承されるデフォルトプロパティシート自体は存在し、それを直接編集することによって、ソリューション内の全てのプロジェクトにプロパティを継承させることが出来ます。

 「C:\Users\he\AppData\Local\Microsoft\MSBuild\v4.0」以下に有るプロパティファイルをVSのエディター等で開き、XMLを編集します。
 初期状態では以下のようになっています。

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup />
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

 それを、

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup />
  <PropertyGroup>
    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
    <IncludePath>D:\dev\lib\boost_1_65_1;$(IncludePath)</IncludePath>
    <ReferencePath>$(ReferencePath)</ReferencePath>
    <LibraryPath>$(LibraryPath)</LibraryPath>
    <SourcePath>$(SourcePath)</SourcePath>
    <ExcludePath>$(ExcludePath)</ExcludePath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

という風に、PropertyGroupをlabel属性なしで追加することで、インクルードファイルパス、ライブラリファイルパス等、おなじみの、いつもプロジェクトプロパティからいちいち設定していたプロパティが一括で設定できます。

 以下のようにも書けますが、ルールはいまいち把握していません。StackOverflowで見たものを参考に書いてみて、問題なく使えています。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup />
  <PropertyGroup>
    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
    <IncludePath>$(IncludePath)</IncludePath>
    <ReferencePath>$(ReferencePath)</ReferencePath>
    <LibraryPath>$(LibraryPath)</LibraryPath>
    <SourcePath>$(SourcePath)</SourcePath>
    <ExcludePath>$(ExcludePath)</ExcludePath>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>D:\dev\lib\boost_1_65_1;$(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <AdditionalLibraryDirectories>D:\dev\lib\boost_1_65_1\vc2015-32;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <AdditionalDependencies>something.lib;$(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>

 
 全てのプロジェクトに一括設定されるのは便利ですが、時にはそれが不都合になることも有り、そういう場合には個別で設定したほうが良いでしょう。いつも使い、プロジェクトごとにその使い勝手が変わらないようなものを全て設定しておくと良いでしょう。