Küsimus:
Kuidas teada saada, kas konkreetne .NET-assamblee on kirjutatud C # või F # tähega?
Samantha
2018-04-06 14:13:20 UTC
view on stackexchange narkive permalink

Selle küsimuse ajendiks on see, et kasutasin JetBrains dotPeeki F # -ga kirjutatud .exe dekompileerimiseks, kuid väljundprojekti kataloog tekitas C #-koodi.

Miks F # -koostu dekompileerimine tekitab C #-koodi?

Ma tean, et mõlemad keeled saavad JIL-i kompileeritud MSIL-st emakeeleks, mis võib raskendada algkeele lõplikku ütlemist.

Kas sellest hoolimata on olemas usaldusväärseid meetodeid eristades C # kahendfaile F # üksustest staatilise analüüsi kaudu? Dünaamiline analüüs?

üks vastus:
Paweł Łukasik
2018-04-06 15:01:43 UTC
view on stackexchange narkive permalink

Miks F # komplekti dekompileerimine tekitab C # koodi?

See pole nii. See toodab IL-koodi, mida saab seejärel tõlgendada kui C #, F # või VB.NET. dotPeek ei luba teil eelvaate jaoks kasutada ühtegi muud keelt, kuid näiteks dnSpy, ILSpy võimaldab teil valida oma lemmikkeele. Lihtsalt mõtlen, kas on F-i lubavaid tööriistu. Pole kindel / pole veel näinud.

Kas sellest hoolimata on olemas usaldusväärseid meetodeid C # binaarfailide eristamiseks F # üksustest staatilise analüüsi abil? Dünaamiline analüüs?

On mõned näpunäited, mis võivad teid suunata. Kontrollige viiteid. Kui miski viitab FSharp.Core -ile, siis kirjutati tõenäoliselt F # -ga. Teisest küljest, kui see pole nii, siis ilmselt ei olnud see :) ] kasutatakse. Kontrollige neid.

On veel üks asi. F # kompilaator on võimeline kasutama saba-rekursiooni, genereerides tailcalli opkoodi, mida C # puhul pole (vähemalt praegu). See võiks olla näitaja. Kuid selle saab ka käsitsi koostada, et seda pärast täielikku C # -sse kirjutamist kasutada.



See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...