When referencing COM types in your C# application previously it would look for the Primary Interop Assembly (PIA) at runtime.
This was problematic as they can often be missing and overwritten but was required so that two different assemblies would treat the object in the same way.
C# 4.0 added a new /L switch to the compiler that embeds these interop types at compile time so they do not need to be independently managed and also changed the runtime so that two structurally-identical interop that may be embedded in two different assemblies can still be considered the same type.
Code
C#
// COM types are embedded at compile time — no PIA needed at runtime
var app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
Workbook workbook = app.Workbooks.Add();C#
// Required the Primary Interop Assembly (PIA) to be present at runtime
// Missing or mismatched PIAs caused runtime failures
var app = new Microsoft.Office.Interop.Excel.ApplicationClass();
app.Visible = true;
Workbook workbook = app.Workbooks.Add(Type.Missing);