解決策につながるいくつかのプロジェクトがあります。すべてのプロジェクトには独自のディレクトリ構造があり、csprojファイルはさまざまなレベルのフォルダ構造に配置されています。 すべてのcsprojにはOutputPathプロパティが指定されています。 OutputPath - 相対パスであり、すべてのプロジェクトが同じ出力ディレクトリを持つように、プロジェクトごとに異なります。 私は別のプロジェクトをビルドしても問題ありません。しかし、ソリューションファイルを作成しようとするとすべてが変わります。この場合、すべてのプロジェクト出力フォルダは異なります(そのプロジェクトのOutputPathの '.. \'の数によって異なります)。MSBuildプロジェクトとソリューションの相対パス
私は知っています、それは少し前にすべてがうまくいきました。誰も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は b.csprojは../「に設定された出力経路を有するa.csprojフォルダから数えた場合だけDIR1以上である」../../_bin'に設定された出力経路を有します。 ./../_bin 'これは同じです - b.csprojから数えた場合はちょうどdir1
a.slnには - a.csprojとb.csprojの両方が含まれています。
私はmsbuildを実行すると、 'dir1 /../../_ bin'へのプロジェクトビルドを行い、bプロジェクトは 'dir1 /../../../_ bin'へ - プロジェクトファイルの相対パスプロジェクトファイルではなく、ソリューションファイルの場所から数えられます。インポートされたプロジェクトで
+1000同じ根本原因($(OutputPath)を上書き)がありましたが、非常に異なる問題(* .designer.csファイルの再生成が中止されました) - MSBuild Explorerで5分で診断されました。 –