Hôm trước mình build 1 web application trên VSTS, gặp trường hợp lỗi là web.config không tự động transform sang chế độ release. Cách khắc phục là mình thực hiện việc transform web.config trước khi build solution.
Bạn có thể build, run, hoặc publish project. File Web.config sẽ được transformed.
Với các này, bạn có thể transform Web.config trên VSTS trong quá trình CI
Ví dụ: Bạn update NewtonSoft.Json. Lúc này Web.config đã được cập nhật
Copy toàn bộ Web.config sang file Web.Base.config. Sau đó bạn build. Mọi thay đổi trong Web.config được copy từ Web.Base.config + chế độ debug/release.
Chúc các bạn thành công.
Files trong project
Tạo mới 1 dự án Web API 2. Bạn sẽ có 3 file web config:- Web.config
- Web.Debug.config
- Web.Release.config
Web.Config
Bạn mở file <project-name>.csproj bằng notepad++, thêm vào đoạn code sau đây trước thẻ </project>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" />
<Target Name="BeforeBuild" Condition="'$(PublishProfileName)' == '' And '$(WebPublishProfileFile)' == ''">
<TransformXml Source="Web.Base.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>
Bạn có thể build, run, hoặc publish project. File Web.config sẽ được transformed.
Với các này, bạn có thể transform Web.config trên VSTS trong quá trình CI
Khuyết điểm
Đây là 1 cách hay nhưng nó có 1 khuyến điểm là khi bạn cài đặt nuget hay thêm 1 service endpoint nào đó, web.config của bạn bị thay đổi.Ví dụ: Bạn update NewtonSoft.Json. Lúc này Web.config đã được cập nhật
Copy toàn bộ Web.config sang file Web.Base.config. Sau đó bạn build. Mọi thay đổi trong Web.config được copy từ Web.Base.config + chế độ debug/release.
Tham khảo
ASP.NET: Transform Web.config with Debug/Release on BuildChúc các bạn thành công.
Nhatkyhoctap's blog
Nhận xét
Đăng nhận xét