復元出力パスはMSBuildProjectExtensionsPath
と同じである必要があります。これにより、生成されたナゲットとターゲットファイルが共通の小道具とターゲットによってインポートされます。パスをProjectAssetsFile
に設定する場合のデフォルトはBaseIntermediateOutputPath
です。
は、少なくともNuGetの輸入のために、SDK小道具ファイルがインポートされ前MSBuildProjectExtensionsPath
またはBaseIntermediateOutputPath
が設定されていることが重要です。
これらの問題をすべて解決する最も簡単な方法は、すべてのコンポーネントがデフォルトのベースパスとしてその値をとるように、プロジェクトの早い段階でBaseIntermediateOutputPath
を設定することです。これは実質的にobj
を別の場所にリダイレクトします。
SDKのpropsファイルの前にプロパティを設定する方法がないため、これは<Project SDK="...">
構文と競合します。この問題を回避するには、プロジェクトは次のように変更することができます:
<Project>
<!-- This needs to be set before Sdk.props -->
<PropertyGroup>
<BaseIntermediateOutputPath>obj\SomeSubDir\</BaseIntermediateOutputPath>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<!-- other content -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>
代替自動的に早期に十分にインポートされますDirectory.Build.props
ファイルを作成することですが、これはディレクトリ内のすべてのプロジェクトに値を適用すると、プロジェクトごとの価値を指定する能力を奪う。
BaseIntermediateOutputPathをDirectory.Build.propsの '$(MSBuildThisFileDirectory)artifacts \ obj \ $(MSBuildProjectName)'のように設定して、プロジェクトごとに一意のパスを取得することができます異なるパスの下で同じ名前)。 –