2013-05-01 36 views
30

Tôi đang cố gắng để có TFS Xây dựng của tôi tạo ra các biến đổi web.config kết hợp với cấu hình tôi đã chọn cho xây dựng của tôi. Khi tôi chạy xây dựng tôi kiểm tra các tập tin web.config không có biến đổi đã được áp dụng. Khi tôi xuất bản từ VS2012, biến đổi hoạt động chính xác.TFS 2012 và web.config chuyển đổi

Tôi đã thiết lập TFS 2012 (Bản cập nhật 2) và có máy chủ riêng để xây dựng. Tôi không có VS2012 được cài đặt trên máy chủ xây dựng, nhưng tôi đã sao chép các thư mục C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web và WebApplications và tệp từ máy dev của tôi vào máy chủ xây dựng.

Tôi đã tạo một số cấu hình trong dự án của mình và đã thêm một số biểu mẫu vào trang web được liên kết. {Configname} .config.

Tôi đã tạo một bản dựng và đặt Các mục để Xây dựng - Cấu hình để Xây dựng thành một trong các cấu hình trong dự án của tôi. Tôi nhận thấy rằng nó chỉ có Debug và Release, nó không có bất kỳ cấu hình nào tôi tạo ra. (Câu hỏi phụ: Có đúng không, hoặc nó có hiển thị tất cả các cấu hình tôi đã tạo không?)

Vì vậy, tôi chạy một bản dựng và kiểm tra thư mục đầu ra và web.config chưa áp dụng các biến đổi. Tôi có cần làm gì khác không?

Trả lời

2

Bạn có thể nhập tên cấu hình trong danh sách "Mục cần xây dựng-> Cấu hình để tạo".

Nếu điều đó không giúp đỡ, cố gắng thêm sau tranh luận MSBuild:/p: TransformConfigFiles = true (3. Advanced -> Arguments MSBuild)

37

Chỉ cần ném/p: TransformConfigFiles = true trên đó sẽ không thực sự làm bất cứ điều gì.

Bạn cũng cần phải thêm mục tiêu này để hồ sơ dự án:

<Target Name="TransformConfigFiles" AfterTargets="AfterBuild" Condition="'$(TransformConfigFiles)'=='true'"> 
    <ItemGroup> 
     <DeleteAfterBuild Include="$(WebProjectOutputDir)\Web.*.config" /> 
    </ItemGroup> 
    <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(WebProjectOutputDir)\Web.config" /> 
    <Delete Files="@(DeleteAfterBuild)" /> 
</Target> 

Đây là nguồn của tôi: http://blog.degree.no/2012/03/automatic-config-transformations/

+0

trình cho tôi! Và kudo, mẫu mã của bạn ở đây thậm chí còn khắc phục lỗi đánh máy từ bài đăng trên blog đó (để lại một \ out ở hai địa điểm). – Abacus

+1

Sau khi tôi thêm những dòng này vào tệp csproj trong khi xây dựng, tôi gặp lỗi: 'The "TransformXml" không tìm thấy.' Nếu ai đó sẽ có cùng bạn có thể thêm điều này trước khi mục tiêu này Vitalii

+0

tuyệt vời, điều này làm việc cho tôi (VS2015, TFS2015)! Rất cám ơn! Tuy nhiên, nó là rất lạ mà chỉ cần xác định cấu hình xây dựng là không đủ .... MS đôi khi làm cho việc triển khai lạ ... – Vladislav

1

Nhấp chuột phải vào tập tin giải pháp của bạn, đi đến tài sản, nhấp vào thuộc tính cấu hình, và nhấp vào Cấu hình Quản lý ở trên cùng. Đảm bảo cấu hình của bạn cho môi trường khác được đặt đúng cách. nếu nó không được đặt đúng, hãy đặt đúng và kiểm tra mã. Bây giờ hãy vào mẫu xây dựng của bạn và kiểm tra cấu hình để xây dựng thuộc tính trong tab quá trình, bạn phải có khả năng xem các cấu hình khác nhau của mình. nếu cấu hình đã được đặt đúng cách, bạn cũng có thể thêm tên cấu hình mới bằng cách nhập nó vào thuộc tính build.

Lưu ý: bạn cũng có thể nhấp chuột phải vào tệp chuyển đổi web.config của mình và chọn chuyển đổi xem trước và đảm bảo rằng cấu hình biến đổi đang hoạt động tốt.

bạn cũng có thể cung cấp cho các công bố tên của hồ sơ, nếu nó hoạt động đúng int ông MSBuild phần lập luận

/p:DebugSymbols=false;DebugType=None;DeployOnBuild=true;PublishProfile=Stage 
Các vấn đề liên quan