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.
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". –