W jaki sposób kompilator C # decyduje się na emitowanie referencyjnych zestawów montażowych?

Wprowadzono odniesienia do ponownego montażu dla platformy .NET Compact Framework i są one teraz używane do obsługi przenośnych bibliotek klas.

Zasadniczo kompilator emituje następujący MSIL:

.assembly extern retargetable mscorlib
{
    .publickeytoken = (7C EC 85 D7 BE A7 79 8E )                         
    .ver 2:0:5:0
}

W jaki sposób kompilator C # rozumie, że musi wyemitować odniesienie do ponownego ładowania i jak zmusić kompilator C # do wysyłania takiego odniesienia nawet poza przenośną biblioteką klas?