Cơ sở ngôn ngữ dùng chung hoặc Cơ sở hạ tầng ngôn ngữ dùng chung (Common Language Infrastructure - CLI) là một tiêu chuẩn kỹ thuật được phát triển bởi Microsoft và được tiêu chuẩn hoá bởi ISO và ECMA, mô tả mã thực thi và môi trường runtime cho phép nhiều ngôn ngữ lập trình cấp cao được sử dụng trên các nền tảng máy tính khác nhau mà không cần viết lại mã cho một nền tảng cụ thể. .NET Framework, .NET Core, Mono, DotGNU và Portable.NET là những ứng dụng của CLI. [1]
Đặc tả này mô tả bốn khía cạnh lớn sau đây:
Tất cả các ngôn ngữ tương thích được biên dịch sang Ngôn ngữ trung gian dùng chung trước khi thực thi. Khi mã được thực thi, VES cụ thể cho từng nền tảng sẽ biên dịch CIL sang ngôn ngữ máy theo phần cứng và hệ điều hành cụ thể.
Vào tháng 8 năm 2000, Microsoft, Hewlett-Packard, Intel và những tổ chức khác đã cùng nhau chuẩn hóa CLI, và đến tháng 12 năm 2001 thì CLI đã được ECMA phê chuẩn. Sau đó, ISO cũng cấp phép cho CLI vào tháng 4 năm 2003.
Microsoft và các đối tác của họ giữ bằng sáng chế cho CLI. ECMA và ISO yêu cầu tất cả các bằng sáng chế cần thiết để thực hiện được cung cấp theo "các điều khoản hợp lý và không phân biệt đối xử (RAND)". Thường thì việc cấp phép của RAND đòi hỏi một khoản thanh toán tiền bản quyền, điều này có thể là nguyên nhân gây quan ngại cho Mono. Do đó, đến tháng 1 năm 2013, cả Microsoft và các đối tác vẫn chưa có kế hoạch nào cho việc triển khai CLI tuân theo RAND.
Tính đến tháng 7 năm 2009, Microsoft đã bổ sung thêm C# và CLI vào danh sách các chi tiết kỹ thuật của Microsoft Community Promise, vì vậy bất cứ ai cũng có thể hiện thực hóa các phiên bản tiêu chuẩn một cách an toàn mà không sợ bản quyền bằng sáng chế của Microsoft. Tuy nhiên, mệnh đề tuân thủ của CLI cho phép mở rộng các profile được hỗ trợ bằng cách thêm các phương thức mới và các kiểu dữ liệu mới vào các lớp, cũng như bắt nguồn từ các namespace mới. Nhưng nó không cho phép thêm các thành viên mới vào các interface. Điều này có nghĩa là các tính năng của CLI có thể được sử dụng và mở rộng, miễn là việc triển khai hồ sơ phù hợp không làm thay đổi hành vi của các chương trình chạy trên profile đó, đồng thời vẫn cho phép các hành vi không xác định từ các chương trình được viết cụ thể cho việc triển khai đó.
Năm 2012, ECMA và ISO đã xuất bản ấn bản mới của tiêu chuẩn CLI, và ấn bản này không được đề cập trong Community Promise.