2013-07-17 33 views
5

Tôi đang cố triển khai dự án hai trang web trong giải pháp Visual Studio 2012 qua TFS như một phần của bản dựng. Chúng tôi đang ở thời điểm chúng tôi có hai máy chủ web khác nhau, WIP (đang hoạt động) và DEV.TFS/MSBuild xây dựng/xuất bản triển khai web không chuyển đổi các tệp web.config

Chúng tôi muốn triển khai các chuỗi kết nối khác nhau cho một trong hai máy chủ để chúng có thể kết nối với các cơ sở dữ liệu khác nhau. Chúng tôi đã thử nghiệm giải pháp của chúng tôi trên một máy phát triển với Visual Studio và cho tất cả các cấu hình, khi bất kỳ dự án web nào được xuất bản, chuỗi kết nối web.config được chuyển đổi như mong đợi khi chúng tôi kiểm tra máy chủ web.

Bản dựng đang hoạt động tốt trên máy chủ WIP sử dụng cấu hình giải pháp Gỡ lỗi mặc định. Cấu hình trong TFS Build là bất kỳ CPU | Debug.

Đối với cấu hình tiếp theo (DEV), chúng tôi chắc chắn rằng các dự án web đều xuất bản qua Visual Studio 2012 tới máy chủ web và chuyển đổi tệp web.config.

Tuy nhiên, khi chúng tôi chạy DEV xây dựng sử dụng các đối số MSBuild, chúng tôi nhận thấy rằng không có chuyển đổi nào xảy ra. Chúng tôi đã gửi cấu hình trong phần Items to Build của bản dựng lên: Bất kỳ CPU nào | Dev.

/p:VisualStudioVersion=10.0 /p:DeployOnBuild=True;PublishProfile=app.ui.dev.pubxml /p:DeployTarget=MsDeployPublish /p:MsDeployServiceUrl=https://server-dev-hrtech:8172/MSDeploy.axd /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=WMSVC /p:AllowUntrustedCertificate=True /p:Username=username /p:Password=password /p:_WPPCopyWebApplication=True /p:PipelineDependsOnBuild=False 

Khi chúng ta nhìn vào các thư mục build log và đầu ra - chúng ta có thể thấy cụm biên soạn trong obj/Debug thư mục và không phải là obj/Dev thư mục như chúng tôi mong đợi. Trong nhật ký, chúng tôi có thể thấy rõ ràng /p:Configuration="Dev" như chúng tôi mong đợi.

Dòng dưới cùng là web.config được xuất bản kết thúc trên máy chủ web là tệp web.config mặc định từ cấu hình Gỡ lỗi (có nghĩa là, không được thay đổi). Nó giống như MSBuild không thể thấy tham số cấu hình được truyền trong các đối số cho giải pháp.

Tôi hiện đã thử chạy msbuild từ dòng lệnh trên máy phát triển của mình để thử và hiểu tại sao điều này lại xảy ra.

By tước lại các thông số MSBuild được gửi thông qua xây dựng TFS, tôi có thể thấy rằng điều này không thay đổi cấu hình web:

msbuild "app-no database.sln" /t:app_ui:Rebuild /P:TransformConfigFiles=true /p:Configuration=Dev /p:Platform="Any CPU" /p:MSDeployServiceUrl=https://app-dev-hrtech:8172/MSDeploy.axd /p:Username=username /p:Password=password /p:DeployOnBuild=True /p:PublishProfile=app.ui.dev.pubxml /p:VisualStudioVersion=11.0 > build.log 

tôi có thể sửa đổi này và sử dụng MSBuild để xây dựng hồ sơ dự án trực tiếp. Tôi đã phát hiện ra rằng các lệnh dưới đây không chuyển đổi các tập tin web.config cho ứng dụng xuất bản:

msbuild app.ui\app.ui.csproj /p:Configuration=Dev /p:MSDeployServiceUrl=https://app-dev-hrtech:8172/MSDeploy.axd /p:Username=username /p:Password=password /p:DeployOnBuild=True /p:PublishProfile=app.ui.dev.pubxml /p:VisualStudioVersion=11.0 /p:AllowUntrustedCertificate=True > build.log 

Vấn đề là điều này sẽ khó có thể chạy như một phần của TFS xây dựng mà họ đang có nhiều dự án mà một số cho các trang web và những người khác cho máy chủ Windows, v.v.

Làm cách nào để sử dụng lệnh đầu tiên, nhưng sửa đổi nó để nó biến đổi đúng dự án web?

Như bạn có thể thấy tôi đã tạo một số tiểu sử xuất bản, do đó có khả năng chúng có thể được sử dụng trong các đối số MSBuild cũng như trong TFS Build.

PS: chúng tôi đang sử dụng Visual   Studio   2012, TFS 2010, Windows 2008R2 cho máy chủ và Windows   7 cho máy phát triển.

Trả lời

0

Dường như TFS 2010 Build không gọi nhiệm vụ Chuyển đổi MSBuild theo mặc định. Bạn cần chỉnh sửa hoặc xây dựng TFS defintion của bạn để thêm một hoạt động mới gọi nó hoặc chỉnh sửa tập tin dự án của bạn để làm điều này.

Stack Overflow câu hỏi TFS Build not transforming web.config as expected sẽ giúp bạn có thêm acitivty và blog mới bài Integrating Web Config Transformations with TFS Build để làm thay đổi hồ sơ dự án.

1

Tôi đã gặp sự cố này, về cách xuất bản một trang web thông qua tệp Hồ sơ xuất bản, điều này là article là điều tốt nhất mà tôi từng thấy.

Đối với trường hợp của bạn, có vẻ như bạn cần đặt tên tiểu sử giống với tên cấu hình, ví dụ: sử dụng Dev.pubxml và Web.Dev.config.

+0

Lạ. Vâng điều này cố định vấn đề của tôi! Tôi đã có một hồ sơ có tên "Triển khai" và tên cấu hình của tôi là "Phát hành". –

0
/p:DeployOnBuild=True;PublishProfile=app.ui.dev.pubxml 

Tôi không nghĩ rằng .pubxml nên ở cuối tiểu sử. Phải như thế này

/p:DeployOnBuild=True;PublishProfile=app.ui.dev 
0

Tôi vừa gặp sự cố này. Kiểm tra các bản ghi MSBuild, kiểm tra việc tạo một gói ZIP cục bộ, kiểm tra Web Deploy đẩy tới IIS từ xa và nó luôn sử dụng tệp cấu hình mặc định!

Đã tắt rằng một lần XML tôi đang xem để kiểm tra cài đặt QA của tôi thiếu thuộc tính xdt:Transform="Replace"!

Hy vọng điều này sẽ giúp ai đó.

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