2011-06-28 19 views
7

Chúng tôi có một giải pháp rất lớn (khoảng 300+) dự án và chúng tôi đang cố gắng xây dựng nó thông qua MSBuild trên TFS2010. Chúng ta có thể xây dựng nó thông qua MSBuild trên tất cả các máy phát triển, và đang trong quá trình áp dụng TFS.Vấn đề với MSBuild OutputPath và OutDir trong TFS2010

Cấu trúc của mã của chúng tôi là như vậy:

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

Mỗi dự án có một OutputPath tương đối trong đó xây dựng mã để Client bin hoặc thư mục Server. Vì vậy, ví dụ, Project1.csproj có một OutputPath của ".. \ .. \ bin \ Client".

Chúng tôi dường như có một vấn đề mà trong TFS MSBuild các OutDir được thiết lập để một con đường cố định:

C:\Builds\MyProject\Binaries\ 

Vì vậy, mọi thứ đang trở bối rối khi giải quyết các OutputPath tương đối trên đầu trang của OutDir

  • ClientFramework đi vào C: \ xây dựng \ MyProject \ Binaries \ .. \ bin \ khách hàng
  • Project1 đi vào C: \ xây dựng \ MyProject \ Binaries \ .. \ .. \ bin \ khách hàng
  • v.v.

Chúng tôi cũng có một số sự kiện xây dựng bài đăng sao chép một số dll của bên thứ ba vào thư mục bin, những đường dẫn này cũng không thể được giải quyết đúng cách.

Tôi nghĩ giải pháp mà chúng ta đang làm sau là xây dựng mọi thứ cho cấu trúc bin \ Client, bin \ Server hiện có của chúng ta và sau đó di chuyển các thư mục từ thùng rác sang Binaries.

Bất kỳ ý tưởng nào về cách thực hiện điều này hoặc cách chúng tôi nên làm việc, được đánh giá cao, nhưng việc cập nhật các dự án hiện tại của chúng tôi có thể gây ra vấn đề, vì tất cả đều hoạt động với VS, xây dựng dòng lệnh của nhà phát triển và với CC.net.

+0

Bài viết của Microsoft tại đây: Kiểm soát nơi hệ thống xây dựng đặt địa điểm nhị phân của bạn http://msdn.microsoft.com/en-us/library/ff977206.aspx –

Trả lời

6

Tôi tìm thấy câu trả lời trên MSDN: http://msdn.microsoft.com/en-us/library/ff977206.aspx

+8

Bạn có thể xây dựng? Chỉ cần đăng một liên kết không giúp khách truy cập trong tương lai; giải thích cách liên kết đó giải quyết cụ thể vấn đề của bạn như thế nào. –

+0

Đối với khách truy cập trong tương lai: bạn cần tùy chỉnh bản dựng của mình (về cơ bản tệp XML định nghĩa quy trình xây dựng của bạn) và chỉ cần xóa thông số "OutDir". Mở tệp XML dưới dạng văn bản thuần túy, tìm kiếm OutDir rồi xóa nó. Trong trường hợp của tôi, tôi vừa xóa 'OutDir =" [outputDirectory] "', bây giờ nó sử dụng hành vi mặc định của các tệp đầu ra sao chép vào OutputPath được chỉ định bởi mỗi dự án. Tính đến hôm nay (2016), với .Net 4.5 bạn cũng có một giải pháp khác, xem câu trả lời được bình chọn hàng đầu và tham số MSBuild 'GenerateProjectSpecificOutputFolder'. – ken2k

7

Do đây là liên kết đầu tiên bật lên với một tìm kiếm Google "TFS OutDir", tôi phải cung cấp một giải pháp mới hơn. Tôi đã dành cả ngày để chơi với OutDir, OutputPath và ghi đè chúng bằng TeamBuildOutDir. Một giải pháp tốt hơn là thiết lập thuộc tính MSBuild GenerateProjectSpecificOutputFolder. Nó đi kèm với .NET 4.5. Thông tin thêm tại đây: http://blog.codeassassin.com/2012/05/10/override-the-tfs-team-build-outdir-property-net-4-5/

+0

Điều này có giới hạn của một giải pháp cho mỗi thư mục ra, nhưng là một câu trả lời hợp lệ nếu đó là thiết lập của bạn. +1. – DaveShaw

+0

Liên kết của bạn bị hỏng. Bạn có thể sửa nó không? –

+0

Liên kết vẫn hoạt động. Có thể nó đã giảm xuống ngày hôm qua do các cuộc tấn công DDOS. –

Các vấn đề liên quan