2010-06-07 28 views
11

Tôi đang làm việc trên một dự án ASP.NET trong Visual Studio.NET 2010 và cố gắng tạo một trình cài đặt MSI bằng cách sử dụng một Dự án Thiết lập Web. Tôi đã thêm đầu ra Chính từ dự án (có vẻ như để kéo các phụ thuộc có liên quan) và các tệp nội dung từ dự án (mà kéo vào tệp Web.config và tệp .svc).Chuyển đổi ASP.NET Web.config sẽ không hoạt động trong trình cài đặt

Vấn đề là thay vì áp dụng biến đổi XDT và tạo Web.config bằng Web.Release.config, nó chỉ sao chép Web.config, Web.Release.config và Web.Debug.config vào trình cài đặt mà không thực hiện bất kỳ phép chuyển đổi nào.

Làm cách nào để áp dụng chuyển đổi Web.config trước khi tạo trình cài đặt?

Trả lời

1

Câu trả lời cuối cùng bị nằm trên một SO bài mà tôi đã bỏ lỡ khi tôi đang tìm kiếm thông qua trước khi hỏi vì nó không phải là chính xác những gì tôi muốn:

MSBuild Script and VS2010 publish apply Web.config Transform

Một đồng nghiệp đề nghị sử dụng mà để đặt Web.config được chuyển đổi trong thư mục bin của dự án và một Dự án Thiết lập Web được cấu hình để lấy Web.config ra khỏi thư mục bin và đặt nó vào trình cài đặt. Điều này đã trở thành giải pháp khả thi nhất mà không cần cài đặt bất kỳ add-on nào vào Visual Studio.

0

Bạn phải tạo một dự án triển khai (tôi nghĩ đây là một bản tải xuống riêng), sau đó dự án Thiết lập web của bạn lấy đầu ra biên dịch sẵn của dự án triển khai khi nó nhập. Một điều gọn gàng là bạn có thể thay đổi một phần của Web.config của bạn khi nó xây dựng.

+1

Đây có thể là câu trả lời; tuy nhiên, tôi không có đặc quyền của quản trị viên (vì đây là máy tính công việc) nên tôi không thể kiểm tra để chắc chắn. \ Tôi đã thêm mục nhập vào tệp .csproj để thực hiện chuyển đổi - Tôi sẽ đăng chi tiết sớm. –

17

Tôi tìm thấy một workaround mà làm việc cho tôi:

  1. Tạo cấu hình cần thiết (Dev, QA, Sản xuất vv) và biến đổi cấu hình web liên quan.

  2. Sử dụng notepad hoặc soạn thảo văn bản khác và bao gồm sau đây trong tập tin web dự án ứng dụng của bạn (csproj tập tin) trước khi thẻ (gần cuối hồ sơ dự án):

    <Target Name="AfterBuild"> 
        <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="Web.Transformed.config" /> 
    </Target> 
    

    Không bao gồm Web.Transformed .config trong dự án ứng dụng web - nếu bạn làm studio trực quan sẽ cảnh báo bạn về những thay đổi sau mỗi lần xây dựng mà khá khó chịu.

  3. Trong dự án thiết lập web: chọn Tệp nội dung -> Loại trừ bộ lọc và thêm Web.config (và tất cả các tệp. *. Cấu hình khác chứa quy tắc chuyển đổi).

  4. Trong dự án thiết lập web: chọn biểu tượng trình chỉnh sửa tệp hệ thống -> thư mục ứng dụng web -> Thêm tệp và chọn Web.Transformed.config trong thư mục gốc của thư mục dự án ứng dụng web của bạn.

  5. Trong cùng một màn hình: nhấp chuột phải Web.Transformed.config và đổi tên nó để web.config

Bây giờ bạn có thể tạo các file .msi với cấu hình được lựa chọn và rễ file web.config là đã biến đổi! Xin lưu ý rằng điều này không ảnh hưởng đến tệp web.config trong các thư mục phụ.

+0

Tôi có thể xác nhận rằng phương thức này hoạt động. Nó cũng chi tiết ở phần cuối của bài đăng này: http://forums.asp.net/p/1596387/4050004.aspx –

+0

+1 Làm việc một điều trị! –

+0

Trong điểm 2 bạn đang khuyên không nên thêm Web.Transformed.config nhưng trong điểm 4 bạn đang yêu cầu thêm tệp Web.Transformed.config. Cả hai điểm đều mâu thuẫn với nhau, nếu không tôi đang thiếu cái gì đó. Bất cứ ai có thể giúp tôi hiểu các bước chi tiết. –

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