2009-06-24 4 views
11

Chúng tôi đang sử dụng PublicResXFileCodeGenerator để tạo tệp * .Designer.cs từ tệp * .resx. Hiện tại, chúng được tạo bất cứ khi nào .resx được lưu hoặc khi chúng tôi nhấp chuột phải và chọn "Chạy công cụ tùy chỉnh".Chạy PublicResXFileCodeGenerator tại thời gian biên dịch

Tôi muốn có thể chạy công cụ này tự động tại thời gian xây dựng, thay vì phải thực hiện thủ công. Các tệp Designer.cs không được giữ dưới sự kiểm soát nguồn, do đó, nó gây khó chịu khi phải tạo chúng theo cách thủ công mỗi khi có ai đó thay đổi tài nguyên hoặc lần đầu tiên thanh toán đầu tiên. Đó là tất cả các quyền nếu các tập tin được tạo ra trên mỗi xây dựng, vì chúng không phải là rất lớn, nhưng làm nó chỉ khi họ đang lạc hậu sẽ thậm chí còn mát mẻ hơn.

Lưu ý: Đây sẽ là một phần của Visual Studio build chứ không phải là xây dựng dòng lệnh. Tôi đã tìm thấy câu trả lời cho một câu hỏi khác nói rằng có thể từ trong VS, không phải dòng lệnh: Run a Visual Studio custom tool at build time

Trả lời

3

Bạn có thể viết một Vĩ mô VS mà chỉ cần chạy công cụ tùy chỉnh khi bạn cần. Phương pháp tự động hóa là VSProjectItem.RunCustomTool. Hãy xem câu trả lời này trên SO cho một vấn đề tương tự: Run Custom Tool for entire solution

Nếu không, PublicResXFileCodeGenerator chỉ là vỏ bọc VS trên StronglyTypedResourceBuilder Class, bạn có thể tự động hóa theo cách mình muốn. Tôi không biết nếu có một nhiệm vụ Msbuild trên đầu trang của nó, nhưng bạn cũng có thể viết một, hoặc bạn chỉ có thể viết một chương trình tùy chỉnh trong một bước xây dựng trước. Dưới đây là ví dụ về cách sử dụng lớp này: Strongly typed resources in ASP.NET

+0

Tôi đã làm việc này. Tôi tạo ra một Visual Studio Add-In chạy công cụ xây dựng tùy chỉnh trên mỗi tệp resx khi dự án của tôi được xây dựng. – Sjoerd

+0

Tôi đã viết về điều này: [Chạy công cụ tùy chỉnh trên mỗi tệp resx khi xây dựng] (http://linuxonly.nl/docs/49/145_Run_custom_tool_on_each_resx_file_when_building.html) – Sjoerd

1

Hãy xem Code Project Article này. Có vẻ như đó là một điểm khởi đầu tốt để giúp bạn có được những gì bạn muốn.