Vra

Hoewel die omskakeling van 'n projek wat SlimDX gebruik, en daarom het onbeheerde kode, NET 4.0 Ek hardloop na die volgende fout:

  

Gemengde modus vergadering is gebou teen weergawe 'v2.0.50727' van die runtime en kan nie in die 4.0 runtime sonder bykomende konfigurasie inligting gelaai word nie.

Googlen rondom my gegee het die oplossing, wat aan dié byvoeging tot die aansoeke config:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

My vraag is, wat is die useLegacyV2RuntimeActivationPolicy doen? Ek kan enige dokumentasie oor dit nie vind nie.

Was dit nuttig?

Oplossing

Na 'n bietjie van die tyd (en meer soek), het ek gevind hierdie blog inskrywing deur Jomo Fisher.

  

Een van die onlangse probleme wat ons gesien het, is dat, as gevolg van die ondersteuning vir side-by-kant Runtimes, NET 4.0 het die manier waarop dit bind aan ouer gemengde-mode gemeentes verander. Hierdie gemeentes is, byvoorbeeld, diegene wat saamgestel is uit C ++ \ CLI. Tans beskikbaar DirectX gemeentes is gemengde modus. As jy 'n boodskap soos hierdie te sien dan kan jy weet jy in die kwessie uit te voer:

     

Gemengde modus vergadering is gebou teen weergawe 'v1.1.4322' van die runtime en kan nie in die 4.0 runtime sonder bykomende konfigurasie inligting gelaai word nie.

     

[Snip]

     

Die goeie nuus vir aansoeke is dat jy die opsie van val terug na NET 2.0 era bindend vir hierdie gemeentes deur die oprigting van 'n app.config vlag soos so:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>
</startup>

Dit lyk asof die manier waarop die runtime vragte gemeng-mode gemeentes verander. Ek kan nie enige besonderhede te vind oor hierdie verandering, of waarom dit gedoen is. Maar die useLegacyV2RuntimeActivationPolicy kenmerk skakel terug na CLR 2.0 laai.

Ander wenke

Hier is 'n verduideliking wat ek geskryf het onlangs om te help met die leemte van inligting oor hierdie kenmerk. http://www.marklio.com/marklio/PermaLink,guid,ecc34c3c-be44-4422-86b7-900900e451f9.aspx (Internet Argief Wayback Machine skakel)

Om die mees relevante stukkies aanhaal:

  

[installering NET] v4 is "nie-treffende". Dit moet die gedrag van bestaande komponente nie verander wanneer dit geïnstalleer is.

     

Die useLegacyV2RuntimeActivationPolicy kenmerk kan basies jy sê, "Ek het 'n paar afhanklikhede op die nalatenskap shim APIs. Maak hulle werk die manier waarop hulle gebruik word om met betrekking tot die gekose runtime. "

     

Hoekom nie ons maak hierdie die standaard gedrag? Jy kan argumenteer dat hierdie gedrag is meer versoenbaar, en maak porting kode van vorige weergawes baie makliker. As jy onthou, kan dit nie die standaard gedrag, want dit installasie van v4 treffende sou maak, wat bestaande programme op jou rekenaar geïnstalleer kan breek nie.

Die volle post verduidelik dit in meer detail. Op RTM, moet die MSDN dokumente op hierdie beter wees.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top