Microsoft.Common.targetsファイルを確認します
質問に対する答えは、Microsoft.Common.targets
ターゲットフレームワークバージョンのファイルにあります。
.Net Frameworkバージョン4.0(および4.5!)の場合、AssemblySearchPaths要素は次のように定義されます。
<!--
The SearchPaths property is set to find assemblies in the following order:
(1) Files from current project - indicated by {CandidateAssemblyFiles}
(2) $(ReferencePath) - the reference path property, which comes from the .USER file.
(3) The hintpath from the referenced item itself, indicated by {HintPathFromItem}.
(4) The directory of MSBuild's "target" runtime from GetFrameworkPath.
The "target" runtime folder is the folder of the runtime that MSBuild is a part of.
(5) Registered assembly folders, indicated by {Registry:*,*,*}
(6) Legacy registered assembly folders, indicated by {AssemblyFolders}
(7) Resolve to the GAC.
(8) Treat the reference's Include as if it were a real file name.
(9) Look in the application's output folder (like bin\debug)
-->
<AssemblySearchPaths Condition=" '$(AssemblySearchPaths)' == ''">
{CandidateAssemblyFiles};
$(ReferencePath);
{HintPathFromItem};
{TargetFrameworkDirectory};
{Registry:$(FrameworkRegistryBase),$(TargetFrameworkVersion),$(AssemblyFoldersSuffix)$(AssemblyFoldersExConditions)};
{AssemblyFolders};
{GAC};
{RawFileName};
$(OutDir)
</AssemblySearchPaths>
.Net Framework 3.5の場合、定義は同じですが、コメントが間違っています。2.0の定義は少し異なり、$(OutDir)の代わりに$(OutputPath)を使用します。
私のマシンには、Microsoft.Common.targetsファイルの次のバージョンがあります。
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets
C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Microsoft.Common.targets
C:\Windows\Microsoft.NET\Framework64\v3.5\Microsoft.Common.targets
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets
これは、Windows 7にインストールされたVisual Studio 2008、2010、および2013を使用した場合です。
(元の投稿者が指摘しているように)出力ディレクトリが検索されるという事実は、不適切なHintPathを隠す可能性があるため、少しイライラすることがあります。ソリューションはローカルマシンで正常にビルドされますが、クリーンなフォルダー構造(ビルドマシンなど)でビルドすると壊れます。