MSBuild 15 の新機能What's New in MSBuild 15

MSBuild は現在 .NET Core SDK の一部として利用でき、Windows、macOS、Linux で .NET Core プロジェクトをビルドできます。MSBuild is now available as part of the .NET Core SDK and can build .NET Core projects on Windows, macOS, and Linux.

変更されたパスChanged path

MSBuild は Visual Studio の各バージョンのフォルダーにインストールされます。MSBuild is now installed in a folder under each version of Visual Studio. たとえば、C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild のようにします。For example, C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild. 次の PowerShell モジュールを使用して MSBuild を検索することもできます: vssetup.powershellYou can also use the following PowerShell module to locate MSBuild: vssetup.powershell.

MSBuild は、グローバル アセンブリ キャッシュにインストールされなくなりました。MSBuild is no longer installed in the Global Assembly Cache. MSBuild をプログラムで参照するには、NuGet パッケージを使用します。To reference MSBuild programmatically, use NuGet packages.

変更されたプロパティChanged properties

新しいバージョン番号に伴い、次の MSBuild プロパティが更新されました。The following MSBuild properties have been updated due to the new version number.

  • MSBuildToolsVersion: このバージョンのツールでは 15.0 になります。MSBuildToolsVersion for this version of the tools is 15.0. アセンブリのバージョンは です。The assembly version is

  • MSBuildToolsPath: 固定の場所はなくなりました。MSBuildToolsPath no longer has a fixed location. 既定では、Visual Studio のインストール場所に相対的な MSBuild\15.0\Bin フォルダーにありますが、Visual Studio のインストール場所はインストール時に変更できます。By default, it is located in the MSBuild\15.0\Bin folder relative to the Visual Studio installation location, but the Visual Studio installation location can be changed at install time.

  • ToolsVersion: 値はレジストリで設定されなくなりました。ToolsVersion values are no longer set in the registry.

  • SDK35ToolsPathSDK40ToolsPath: これらのプロパティは、このバージョンの Visual Studio に含まれている .NET Framework SDK を指しています (たとえば、4.X ツールの場合は 10.0A など)。The SDK35ToolsPath and SDK40ToolsPath properties point to the .NET Framework SDK that's packaged with this version of Visual Studio (for example, 10.0A for the 4.X tools).


  • Project 要素には新しい SDK 属性があります。Project Element has a new SDK attribute. Xmlns 属性も省略できます。Also the Xmlns attribute is now optional.
  • ターゲットの外部の Item 要素には新しい Update 属性があります。Item Element outside targets has a new Update attribute. また、Remove 属性に対する制限も排除されました。Also, the restriction on the Remove attribute has been eliminated.
  • Directory.Build.props は、ディレクトリの下のプロジェクトをカスタマイズできるようにする、ユーザー定義のファイルです。Directory.Build.props is a user-defined file that provides customizations to projects under a directory. ImportDirectoryBuildTargets プロパティを false に設定しない限り、このファイルは Microsoft.Common.props から自動的にインポートされます。This file is automatically imported from Microsoft.Common.props unless the property ImportDirectoryBuildTargets is set to false. Directory.Build.targets は Microsoft.Common.targets によってインポートされます。Directory.Build.targets is imported by Microsoft.Common.targets.
  • 現行の属性リストと競合しない名前のメタデータを任意で属性として表現できます。Any metadata with a name that doesn't conflict with the current list of attributes can optionally be expressed as an attribute. 詳しくは、Item 要素に関する記事をご覧ください。For more information, see Item Element.

新しいプロパティ関数New property functions

  • EnsureTrailingSlash は、まだ存在しない場合に末尾のスラッシュをパスに追加します。EnsureTrailingSlash adds a trailing slash to a path if one doesn't already exist.
  • NormalizePath はパス要素を結合し、出力文字列に現在のオペレーティング システムの適切なディレクトリ区切り文字が含まれることを確認します。NormalizePath combines path elements and ensures that the output string has the correct directory separator characters for the current operating system.
  • NormalizeDirectory はパス要素を結合し、末尾のスラッシュを確認し、出力文字列に現在のオペレーティング システムの適切なディレクトリ区切り文字が含まれることを確認します。NormalizeDirectory combines path elements, ensures a trailing slash, and ensures that the output string has the correct directory separator characters for the current operating system.
  • GetPathOfFileAbove は、直前のファイルのパスを返します。GetPathOfFileAbove returns the path of the file immediately preceding this one. その機能は <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" /> の呼び出しと同じですIt is functionally equivalent to calling <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />

関連項目See Also