Sử dụng plugin SlowCheetah . Để biết thêm tùy chọn và chi tiết về cách sử dụng SlowCheetah, hãy đọc tiếp.
Như bạn đã nhận thấy, không có cách mặc định và dễ dàng để sử dụng các tệp cấu hình khác nhau cho dự án kiểu Thư viện (.dll) . Nguyên nhân là do tư duy hiện nay là: "Bạn không cần"! Các nhà phát triển khung cho rằng bạn cần cấu hình cho tệp thực thi: có thể là bảng điều khiển, máy tính để bàn, web, ứng dụng di động hoặc thứ gì đó khác. Nếu bạn bắt đầu cung cấp cấu hình cho một dll , bạn có thể kết thúc với một thứ mà tôi có thể gọi là địa ngục cấu hình . Bạn có thể không còn hiểu (dễ dàng) tại sao biến này và biến đó có những giá trị kỳ lạ đến như vậy dường như không biết từ đâu.
"Chờ đã", - bạn có thể nói, "nhưng tôi cần cái này để thử nghiệm tích hợp / đơn vị của mình, và nó là một thư viện!". Và đó là sự thật và đây là những gì bạn có thể làm (chỉ chọn một, không trộn lẫn):
1. SlowCheetah - chuyển đổi tệp cấu hình hiện tại
Bạn có thể cài đặt SlowCheetah - một trình cắm thêm Visual Studio thực hiện tất cả các chuyển đổi (hoặc chuyển đổi) XML cấp thấp cho bạn. Cách nó hoạt động, ngắn gọn:
- Cài đặt SlowCheetah và khởi động lại Visual Studio (Visual Studio> Công cụ> Tiện ích mở rộng và Cập nhật ...> Trực tuyến> Thư viện Visual Studio> tìm kiếm "Slow Cheetah")
- Xác định cấu hình giải pháp của bạn ( Gỡ lỗi và Bản phát hành ở đó theo mặc định), bạn có thể thêm nhiều hơn nữa (nhấp chuột phải vào giải pháp trong Giải pháp Explorer > Trình quản lý Cấu hình ... > Cấu hình Giải pháp Hoạt động > Mới ...
- Thêm tệp cấu hình nếu cần
- Nhấp chuột phải vào tệp cấu hình> Thêm chuyển đổi
- Thao tác này sẽ tạo các tệp Chuyển đổi - một tệp cho mỗi cấu hình của bạn
- Các tệp chuyển đổi hoạt động như bộ chèn / bộ biến đổi, chúng tìm thấy mã XML cần thiết trong tệp cấu hình ban đầu và đưa vào các dòng mới hoặc biến đổi giá trị cần thiết, bất cứ điều gì bạn yêu cầu nó làm
2. Làm quen với tệp .proj - sao chép-đổi tên một tệp cấu hình hoàn toàn mới
Ban đầu được lấy từ đây . Đó là một nhiệm vụ MSBuild tùy chỉnh mà bạn có thể nhúng vào tệp Visual Studio .proj . Sao chép và dán đoạn mã sau vào tệp dự án
<Target Name="AfterBuild">
<Delete Files="$(TargetDir)$(TargetFileName).config" />
<Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config"
DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
Bây giờ, tạo một thư mục trong dự án có tên Config
và thêm tập tin mới có: App.Debug.config , App.Release.config và vân vân. Bây giờ, tùy thuộc vào cấu hình của bạn, Visual Studio sẽ chọn tệp cấu hình từ một Config
thư mục và sao chép-đổi tên tệp đó vào thư mục đầu ra. Vì vậy, nếu bạn đã chọn dự án PatternPA.Test.Integration và cấu hình Gỡ lỗi , trong thư mục đầu ra sau khi xây dựng, bạn sẽ tìm thấy tệp PatternPA.Test.Integration.dll.config đã được sao chép Config\App.Debug.config
và đổi tên sau đó.
Đây là một số lưu ý bạn có thể để lại trong các tệp cấu hình
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- This file is copied and renamed by the 'AfterBuild' MSBuild task -->
<!-- Depending on the configuration the content of projectName.dll.config
is fully substituted by the correspondent to build configuration file
from the 'Config' directory. -->
</configuration>
Trong Visual Studio, bạn có thể có một cái gì đó như thế này
3. Sử dụng các tệp kịch bản bên ngoài Visual Studio
Mỗi công cụ xây dựng (như NAnt , MSBuild ) sẽ cung cấp khả năng chuyển đổi tệp cấu hình tùy thuộc vào cấu hình. Điều này hữu ích nếu bạn xây dựng giải pháp của mình trên máy xây dựng, nơi bạn cần kiểm soát nhiều hơn về những gì và cách bạn chuẩn bị sản phẩm để phát hành.
Ví dụ: bạn có thể sử dụng tác vụ của dll xuất bản web để chuyển đổi bất kỳ tệp cấu hình nào
<UsingTask AssemblyFile="..\tools\build\Microsoft.Web.Publishing.Tasks.dll"
TaskName="TransformXml"/>
<PropertyGroup>
<!-- Path to input config file -->
<TransformInputFile>path to app.config</TransformInputFile>
<!-- Path to the transformation file -->
<TransformFile>path to app.$(Configuration).config</TransformFile>
<!-- Path to outptu web config file -->
<TransformOutputFile>path to output project.dll.config</TransformOutputFile>
</PropertyGroup>
<Target Name="transform">
<TransformXml Source="$(TransformInputFile)"
Transform="$(TransformFile)"
Destination="$(TransformOutputFile)" />
</Target>