2011-06-28 8 views
7

Mamy bardzo duże rozwiązanie (około 300+) projektów i staramy się go zbudować za pomocą MSBuild na TFS2010. Możemy go zbudować za pomocą MSBuild na wszystkich komputerach programistycznych i właśnie przechodzimy do TFS.Problemy z MSBuild OutputPath i OutDir w TFS2010

Struktura naszego kodu jest tak:

bin\Client 
bin\Server 
Framework\ClientFramework.csproj 
Modules\Module1\Project1 
Modules\Module2\Project2 
etc. 

Każdy projekt ma względną OutputPath która buduje kod do Klienta lub katalogu bin serwera. Na przykład Project1.csproj ma OutputPath ".. \ .. \ bin \ Client".

Wydaje się, że problem, który w TFS MSBuild OUTDIR jest ustawiony na stałą ścieżkę:

C:\Builds\MyProject\Binaries\ 

Więc rzeczy stają się kłopotliwe, gdy rozwiązanie stosunku OutputPath na górze OUTDIR

  • ClientFramework idzie do C: \ Buduje \ myproject \ Binaries \ .. \ bin \ Client
  • Project1 idzie do C: \ Buduje \ myproject \ Binaries \ .. \ .. \ bin \ client
  • itp.

Mamy również kilka zdarzeń budowania Post, które kopiują niektóre pliki DLL 3rd party do folderów bin, ścieżki te nie mogą być rozwiązane poprawnie.

Myślę, że naszym rozwiązaniem jest zbudowanie wszystkiego do istniejącej struktury bin \ Client, bin \ Server, a następnie przeniesienie folderów z bin na binaria.

Wszelkie pomysły na to, jak to osiągnąć lub jak powinniśmy pracować, są doceniane, ale aktualizacja istniejących projektów może okazać się problematyczna, ponieważ wszystko działa z VS, kompilacją wiersza poleceń dla programistów i CC.net.

+0

Artykuł firmy Microsoft: Sterowanie w miejscu, w którym system kompilacji umieszcza pliki binarne http://msdn.microsoft.com/en-us/library/ff977206.aspx –

Odpowiedz

6
+8

Czy mógłbyś opracować? Zamieszczanie linku nie pomaga przyszłym użytkownikom; wyjaśnienie, w jaki sposób ten link rozwiązałby twój problem. –

+0

Dla przyszłych odwiedzających: musisz dostosować kompilację (w zasadzie plik XML, który definiuje przepływ pracy twojego buildu) i po prostu usunąć parametr "OutDir". Otwórz plik XML jako zwykły tekst, wyszukaj OutDir, a następnie go usuń. W moim przypadku właśnie usunąłem 'OutDir =" [outputDirectory] "', teraz używa domyślnego zachowania kopiowania plików wyjściowych do OutputPath określonej przez każdy projekt. Na dzień dzisiejszy (2016), z .Net 4.5 masz również inne rozwiązanie, zobacz odpowiedź z najwyższym głosowaniem i parametr "GenerateProjectSpecificOutputFolder' MSBuild". – ken2k

7

Ponieważ jest to pierwszy link, który wyskakuje z wyszukiwarki Google z „TFS OUTDIR”, muszę dostarczyć nowsze rozwiązania. Cały dzień spędziłem bawiąc się OutDir, OutputPath i nadpisując je TeamBuildOutDir. Lepszym rozwiązaniem jest ustawienie właściwości MSBuild GenerateProjectSpecificOutputFolder. Pochodzi z .NET 4.5. Więcej informacji: http://blog.codeassassin.com/2012/05/10/override-the-tfs-team-build-outdir-property-net-4-5/

+0

Ma to ograniczenie jednego rozwiązania na każdy dzień, ale jest poprawną odpowiedzią, jeśli to jest twoja konfiguracja. +1. – DaveShaw

+0

Twój link jest uszkodzony. Czy możesz to naprawić? –

+0

Łącze nadal działa. Może być wczoraj z powodu ataków DDoS. –