2008-09-28 46 views
13

Làm cách nào để bạn chỉ định phiên bản khung mục tiêu cho csc.exe C# compiler thông qua lời gọi dòng lệnh (ví dụ: không có tệp .csproj và sẽ không thông qua công cụ MSBUILD)?nhắm mục tiêu phiên bản frawework cụ thể trong csc.exe

ví dụ: sử dụng trình biên dịch csc.exe C# 3.0, làm cách nào để biên dịch sang IL nhắm mục tiêu khuôn khổ 2.0 .net?

Trả lời

4

Trong trường hợp cụ thể của trình biên dịch C# 3, không có vấn đề gì miễn là bạn không sử dụng bất kỳ nhóm hoặc loại nào không có trong .NET 2.0 - IL là giống nhau (ngược với nhắm mục tiêu 1.1 chẳng hạn).

Ngoài ra, bạn có thể sử dụng/noconfig/nostdlib và sau đó tham chiếu rõ ràng các hội đồng .NET 2.0 (trong c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 chẳng hạn). Có vẻ như tùy chọn dòng lệnh/lib có thể làm cho việc này dễ dàng hơn một chút bằng cách cho phép bạn chỉ định một thư mục để tìm kiếm các tham chiếu, nhưng tôi chưa thử bản thân mình.

+0

Điều này dường như hoạt động (tham chiếu rõ ràng 2.0 libs) nhưng đề xuất đầu tiên chỉ dựa vào thực tế là IL giống nhau) dường như để tôi 'bị lộ' (ví dụ, không có cảnh báo thời gian biên dịch đã bị lạc khỏi hội đồng chỉ 2.0). – sbohlen

+0

Có, nó sẽ để bạn tiếp xúc với điều đó. Hãy cẩn thận về sự khác biệt giữa .NET 2.0 và 2.0SP1 (ví dụ: DateTimeOffset) - Tôi không biết liệu bạn có dễ dàng tìm thấy các cụm "vanilla" 2.0 để tham chiếu hay không. Tất nhiên, bạn có thể sao chép chúng từ máy không phải SP1 ... –

+0

Vâng, tôi nghĩ rằng theo như tôi có thể nói, đây là điều mà tôi sẽ phải xem xét lại: làm thế nào nó được thi hành khi MSBUILD bị sa thải tắt đối với tệp .csproj (trong đó tất nhiên có thể xác định phiên bản FW đích). Có vẻ như không có tùy chọn csc.exe chống đạn có sẵn cho tôi. – sbohlen

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