ソリューションに参加している多くのプロジェクトがあります。すべてのプロジェクトには独自のディレクトリ構造があり、csproj ファイルはフォルダー構造の異なるレベルにあります。すべての csproj には OutputPath プロパティが指定されています。OutputPath - 相対パスであり、プロジェクトごとに異なるため、すべてのプロジェクトが同じ出力ディレクトリを持ちます。別のプロジェクトをビルドすれば問題ありません。しかし、ソリューション ファイルをビルドしようとすると、すべてが変わります。この場合、すべてのプロジェクト出力フォルダーが異なります (そのプロジェクトの OutputPath の「..\」の数によって異なります)。
私は、ある瞬間まではすべてがうまく機能していたことを知っています。誰も build.cmd も sln または csproj ファイルも変更しませんでした。しかし今、私は上記の状況にあります。
だから私の質問は - 相対パスの評価方法に影響を与えるものは何ですか? 特定のプロジェクトの csproj ファイルが配置されているフォルダーから開始して、相対的な OutputPath を強制的に評価する方法を意味します。.sln ファイルがあるフォルダーからではありません。
Let's assume I have following directory structure:
dir1
a.sln
dir2
a.csproj
dir21
dir3
b.csproj
a.csproj の出力パスは「../../_bin」に設定されています。これは、a.csproj フォルダーから数えた場合、dir1 のすぐ上にあります。b.csproj の出力パスは「../../../_bin」に設定されています。同じです-b.csprojから数えた場合、dir1について
a.sln には、a.csproj と b.csproj の両方が含まれます。
msbuild を実行すると、「dir1/../../_bin」へのプロジェクト ビルドと「dir1/../../../_bin」への b プロジェクトが取得されます。プロジェクト ファイルの両方の相対パスがソリューションからカウントされます。プロジェクト ファイルではなく、ファイルの場所。