Diskuze: Obsah .exe souboru
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
A builduješ to jako Release nebo jako Debug?
Tak to ale ani fungovat nemá, podívej se sem:
http://www.itnetwork.cz/…6222592c07d2
Patrik: To je jedno, zkoušel jsem to u obou.
Petr Čech: Aha, ale přesto, nedalo by se to udělat bez té instalace? Prostě přímo exe soubor, který se hned otevře a neobsahuje žádnou cestu. Díval jsem se třeba na mé staré prográmky z Pascalu a ty tam nic takového nemají, jen čistě shluk písmenek a znaků.
Díky
ale on tu cestu nepotřebuje. Prostě žij s tím, že tam má něco co checkne jestli to existuje, pokud jo tak s tím možná něco dělá, pokud ne, nechá to být. Ten soubor pdb bude nějaká databáze, kterou něco používá, ale ona není potřebná. Když si to přebuilduješ, tak by v složce bin/Release mělo být exe, které tu cestu nebude obsahovat.
Jenže není .exe jako .exe
Ty prográmky z Pascalu jsou zkompilované přímo do strojového kódu, kdežto
C# se kompiluje do mezikódu, který je sám o sobě nezávislý na platformě a
běží na robustním .NET frameworku, zbytek je v tom odkazu, co jsem ti poslal
předtím.
Ve zkratce: nejde to, ale to přece nevadí, od toho právě
máme instalátor, který naklikáš za chvilku.
To, že v těch Pascalových .exe jsou jen ty znaky tak to je právě ten strojový kód, hexa kód, programy neběží na procesoru jako text, ale přímo jako ten hexa kód. U C# vytváří ten hexa kód právě .NET virtuální stroj z něčeho, co by se dalo ještě rozebrat (dekompilovat) zpátky na původní kód, co jsi napsal ty (snad i s komentáři), jen by byl optimalizovaný. U pascalového by to šlo také, ale téměř určitě by z toho vylezlo něco jiného.
Máš tam debug verzi, ta odkazuje na místo, kde k tomu máš .pdb soubor s
debugovacíma informacema.
Možná to tam bude i v releasu, ale možná to jde někde vypnout
Tyhle informace tě asi nemusí oslovovat. Pokud ti to z nějakého důvodu vadí, tak bude stačit nastavit. Build ->Advanced->Debug Info->None
Nicméně připrav se na to, že se to ještě rád vrátíš. Takový CallStack při hledání chyby v cizím prostředí je věc k nezaplacený a ušetří ti spoustu hodin práce.
Díky všem. Šlo mi jen o to, že když dám někde na internet mou C# aplikaci, která normálně všem funguje bez jakékoli instalace či dalších přiložených souborů, tak by obsahovala nějakou cestu k souboru na mém počítači, což mi samozřejmě přišlo divné
Zobrazeno 9 zpráv z 9.