title: How does the C# compiler decide to emit retargetable assembly references?
body: <p>Retargetable assembly references have been introduced for the .NET Compact Framework and are now used to support Portable Class Libraries.</p>
  
  <p>Basically, the compiler emits the following MSIL:</p>
  
  <pre><code>.assembly extern retargetable mscorlib
  {
      .publickeytoken = (7C EC 85 D7 BE A7 79 8E )                         
      .ver 2:0:5:0
  }
  </code></pre>
  
  <p>How does the C# compiler understand it has to emit a retargetable reference, and how to force the C# compiler to emit such reference even outside of a portable class library?</p>