Miksi F # -kokoonpanon purkaminen tuottaa C # -koodia?
Ei. Se tuottaa IL-koodin, joka voidaan sitten tulkita C #, F # tai VB.NET. dotPeek ei salli sinun käyttää mitään muuta kieltä esikatseluun, mutta esimerkiksi dnSpy, ILSpy avulla voit valita suosikkikielesi. Mietin vain, onko olemassa työkaluja, jotka sallivat F #: n. Etkö ole varma / ei ole nähnyt sellaista.
Onko tästä huolimatta luotettavia menetelmiä erottaa C # -binaarit F #: stä staattisen analyysin avulla? Dynaaminen analyysi?
On joitain vihjeitä, jotka voivat ohjata sinua. Tarkista viitteet. Jos jokin viittaa kohtaan FSharp.Core
, se kirjoitettiin todennäköisesti F #: lla. Toisaalta, jos se ei todennäköisesti ole, se ei ollut :)
F #: n dll-tiedostoissa on yleensä paljon määritteitä, jotka on sijoitettu luokkiin, kuten [FSharpInterfaceDataVersion]
tai [CompilationMappingAttribute ]
käytetään. Tarkista ne.
On vielä yksi asia. F # kääntäjä pystyy käyttämään hännän rekursiota luomalla tailcall-opkoodin, mikä ei ole C #: n tapaus (ainakin toistaiseksi). Se voisi olla indikaattori. Mutta se voidaan myös muotoilla manuaalisesti käyttämään sitä sen jälkeen, kun se on kirjoitettu kokonaan C #: ään.