Mam wiele projektów, które są połączone w rozwiązanie. Każdy projekt ma swoją własną strukturę katalogów, a pliki csproj znajdują się na innym poziomie struktury folderów. Każde csproj ma określoną właściwość OutputPath. OutputPath - jest ścieżką względną i różni się w zależności od projektu w taki sposób, że wszystkie projekty mają ten sam katalog wyjściowy. To działa dobrze, jeśli zbuduję oddzielny projekt. Ale wszystko się zmienia, jeśli próbuję zbudować plik rozwiązania. W tym przypadku każdy folder wyjściowy projektu różni się (zależy od liczby ".. \" w OutputPath tego projektu).Ścieżki względne z projektem MSBuild kontra rozwiązanie
Wiem, że przed chwilą wszystko działało dobrze. Nikt nie zmienił pliku build.cmd ani żadnych plików sln ani csproj. Ale teraz mam sytuację opisaną powyżej.
Moje pytanie brzmi: co wpływa na ocenę ścieżki względnej? Mam na myśli, jak mogę wymusić względną OutputPath do oceny począwszy od folderu, w którym znajduje się plik csproj tego konkretnego projektu. Nie z folderu, w którym znajduje się plik .sln.
Let's assume I have following directory structure:
dir1
a.sln
dir2
a.csproj
dir21
dir3
b.csproj
a.csproj ma ścieżkę wyjściową ustawioną na „../../_bin', która jest tuż nad dir1 jeśli liczy się od a.csproj folderze b.csproj ma ścieżkę wyjściową ustawioną na” ../. ./../_bin ', która jest taka sama - tylko około dir1, jeśli policzono z b.csproj
a.sln zawiera oba - a.csproj i b.csproj.
Po uruchomieniu msbuild uzyskuję kompilację projektu do "dir1 /../../_ bin", a b do "dir1 /../../../_ bin" - obie ścieżki względne plików projektów są liczone z lokalizacji pliku rozwiązania, a nie plików projektu.
+1000 Miałem tę samą główną przyczynę (nadpisanie $ (OutputPath)), ale bardzo odmienny problem (pliki .designer.cs przestały się regenerować) - zdiagnozowano MSBuild Explorer w 5 minut. –