7

Tôi có một vài tệp giấy phép (.lic) được yêu cầu bởi các thành phần bên thứ ba khác nhau, mỗi thành phần yêu cầu sự hiện diện của tệp giấy phép trong thư mục bin.Làm cách nào để bao gồm các tệp giấy phép (.lic) trong thư mục bin của tôi trong khi vẫn đảm bảo chúng được kiểm soát nguồn?

Vì tôi đã bỏ qua thư mục bin của mình khỏi điều khiển nguồn, tài liệu tham chiếu và tệp giấy phép được đặt trong bin không được kiểm soát nguồn. Theo số this answer, tôi đã chuyển các tham chiếu đã được biên dịch trước của mình sang một vị trí khác được kiểm soát nguồn và kiểm soát chúng trong dự án của tôi theo một đường dẫn tương đối. Khi tôi xây dựng, các tệp DLL đó được bao gồm đúng trong thư mục bin của tôi.

Theo như tôi biết, tôi không thể sử dụng cùng một phương pháp cho các tệp giấy phép của mình. Chúng phải được lưu trữ trong dự án Visual Studio của tôi. Trong Visual Studio, làm thế nào tôi có thể lưu trữ các tệp giấy phép của tôi ở một vị trí được kiểm soát nguồn và được phát hành vào thư mục bin của tôi tại thời gian xây dựng?

Trả lời

11

Cách tôi thực hiện điều này là đặt các tệp giấy phép của tôi trong thư mục gốc của dự án (tôi tưởng tượng bạn có thể đặt chúng ở bất kỳ đâu trong dự án). Sau đó, tôi đặt tài sản của họ (ctrl-click mỗi file .lic và nhấn Alt + Nhập, hoặc nhấp vào Thuộc tính tab):

Properties

Thiết Copy to output directory để "Copy luôn" nguyên nhân các tệp sẽ được chuyển đến thư mục bin lúc xây dựng.

Đặt Build action thành "Không" ngăn không cho các tệp được xuất bản ở vị trí ban đầu của chúng cùng với nội dung khác. Nếu không có cài đặt này, các tệp giấy phép sẽ được xuất bản ở gốc trang web và có thể được tải xuống.

+0

Lưu ý: Tôi thấy điều này không làm việc khi tập tin của tôi là trong 'thư mục App_Data'. Đã chuyển nó ra gốc trang và nó hoạt động như một sự quyến rũ. – theyetiman

0

Bạn có thể thêm vào dưới đây thiết lập trong file Web.config, điều này sẽ đảm bảo cho xuất bản tập tin lic của bạn

<configuration> 
    <system.web> 
    <compilation> 
     <buildProviders> 
     <remove extension=".lic"/> 
     <add extension=".lic" 
      type="System.Web.Compilation.ForceCopyBuildProvider"/> 
     </buildProviders> 
    </compilation> 
    </system.web> 
</configuration>