5

Tôi đang sử dụng SlowCheetah để XML chuyển đổi một loạt các tệp cấu hình trong một dự án.Nhiều cấu hình xây dựng có thể chia sẻ một chuyển đổi cấu hình không?

Tuy nhiên, giải pháp tương tự này là một phần của thiết lập cân bằng tải, trong đó một số giá trị cấu hình khác nhau giữa các máy chủ khác nhau (hai, trong trường hợp này).

Tôi đã sau xây dựng configs

  • gỡ lỗi
  • phát hành
  • Release.Test
  • Release.Prod1
  • Release.Prod2

Hầu như tất cả mọi thứ trong phiên bản. Prod1 và Release.Prod2 giống hệt nhau, ngoại trừ một số giá trị i n một trong các tệp cấu hình. Có cách nào để tôi có thể có một tệp như Something.Release.Prod.Config để sử dụng trên cả hai cấu hình xây dựng này thay vì có hai tệp giống hệt nhau (Something.Release.Prod1.ConfigSomething.Release.Prod2.Config)?

... và để xây dựng: Trong trường hợp này tôi đang triển khai đến hai môi trường, do đó, một tệp trùng lặp không thực sự là một cuộc khủng hoảng lớn. Nếu bạn có mười hoặc một trăm máy chủ thì sao? Tôi thấy không có lý do tại sao một thiết lập với một CI-server (cụ thể TeamCity trong trường hợp này) sẽ không thể làm điều này, mặc dù tôi cho rằng nhiều thiết lập tùy chỉnh là phổ biến trong môi trường như vậy.

Cách này thường được xử lý?

Tôi cho rằng tôi có thể thực hiện một số phép sao chép các tập tin qua lại như một bước xây dựng trước khi sự biến đổi thực sự xảy ra, nhưng điều này có vẻ như một giải pháp lộn xộn và quá phức tạp.

+0

điều gì đó mà chúng tôi đang cố gắng tìm ra ở đây ... Mẫu T4 đang được khắc phục nhưng tôi không đặc biệt thích chúng. Tôi thích việc chuyển đổi cấu hình nhưng muốn mở rộng nó ra ngoài các phiên bản Debug & Release .. Cũng giống như bạn đang cố gắng tìm ra –

+1

Mở rộng ra ngoài gỡ lỗi và phát hành dễ dàng, đó chỉ là việc thêm nhiều cấu hình xây dựng từ menu Build => Build Configurations . Tuy nhiên, làm cho một số người trong số họ chia sẻ một tệp, ... –

Trả lời

1

Biến đổi cấu hình được xử lý bởi biến $ (Cấu hình) trong tệp TransformsFiles.targets.

<TransformXml Source="@(_FilesToTransformNotAppConfig->'%(FullPath)')" 
        Transform="%(RelativeDir)%(Filename).$(Configuration)%(Extension)" 
        Destination="@(_FilesToTransformNotAppConfig->'$(OutDir)%(RelativeDir)%(Filename)%(Extension)')" 
        Condition=" Exists('%(RelativeDir)%(Filename).$(Configuration)%(Extension)') " /> 

Tại đây, bạn có thể thay đổi $ (Cấu hình) thành bất kỳ giá trị nào khác, như "Môi trường". Sau đó, chỉ cần đặt biến "Môi trường" trong MSBuild args của bạn -

/p:Environment=Prod 

Điều này sẽ cho phép bạn duy trì cài đặt xây dựng và biến đổi độc lập.

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