Có ai biết về một tiện ích để xử lý trước một tệp nguồn C# mà không biên dịch nó, theo cách tương tự để sử dụng cờ -E trong GCC không? Tôi đã thử sử dụng GCC - nó xử lý thành công các chỉ thị #if
, nhưng nó xử lý các chỉ thị #region
...Công cụ xử lý trước C# có tồn tại không?
Lý tưởng nhất, tôi muốn có thể chạy công cụ trên tệp .cs để xóa bất kỳ #if
khối đánh giá nào thành false và tùy chọn có thể gắn cờ để xóa/để lại các nhận xét còn nguyên vẹn, #region
, #pragma
chỉ thị, v.v.
Để đặt điều này trong ngữ cảnh, tôi muốn có thể xuất bản một số mã nguồn là một phần của (nhiều) dự án lớn hơn, trong khi loại bỏ các phần chỉ liên quan đến dự án lớn hơn. Như một ví dụ, có những khối mã mà trông như thế này:
#if (SUBPROJECT)
namespace SubProject
#else
namespace CompleteProject
#endif
{
public class SomeClass()
{
#if (!SUBPROJECT)
// This might call a method contained in an assembly that potentially
// won't be available to the sub-project, or maybe a method that hooks
// into a C library via P/Invoke...
string result = CallSomeCleverMethod();
#else
// This might call a method that performs a simplified version of the
// above, but does so without the above's assembly or P/Invoke
// dependencies...
string result = CallSomeSimpleMethod();
#endif
}
}
Hãy nhớ tôi không cố gắng để làm xây dựng ở đây - đây là thuần túy về xuất bản chỉ là một tập hợp con của mã nguồn một dự án lớn hơn của.
Bất kỳ ý tưởng/trợ giúp nào được đánh giá cao.
Tôi có thể nhận được tệp thi hành ở đâu? – NightOwl888
Đó là một phần của bộ sưu tập trình biên dịch GNU - nó có thể đã được cài đặt nếu bạn đang chạy OS X hoặc Linux. Nếu bạn đang chạy Windows, MinGW có lẽ là những gì bạn cần. –
Tôi đã tìm thấy một ứng dụng hoạt động tại đây: http://mcpp.sourceforge.net/download.html, nhưng tệp thực thi là mccp chứ không phải là cpp. – NightOwl888