.NET framework konsol-app som en enda exefil?

Permalänk

.NET framework konsol-app som en enda exefil?

Jag sitter och leker lite med att bygga en konsollapp i .NET framework. När jag bygger den får jag dock med massa dll'er till mina beroenden, konfigfiler och annat. Går det att baka in allt sånt i exefilen istället på nått fiffigt vis för att bara få en enda standalone-exefil?

Visa signatur

Dator: MB: Gigabyte Z390 M GAMING mATX | CPU: Intel Core i9 9900K 3.6 GHz (Haswell) | RAM: Corsair 16GB (KIT) 3200Mhz Vengeance LPX | Grafikkort: ASUS GeForce RTX 3060 12GB PHOENIX V2 (LHR) | Chassi: Fractal Design Mini | PSU: Corsair RM750X 750W v2 | Optisk: ASUS BW-12B1ST Blu-Ray/DVD brännare | CPU-kylare: Noctua NH-U12S | Operativ: Windows 11 | Scanner: Canon Canoscan 9000F
Övrigt: Nintendo Switch, NES Mini, SNES Mini, Nintendo New 3DS, NES, Famicom AV, Famicom Disk System, PS3, PS5, AppleTV 4K, Synology NAS DS923+ (32GB), iPhone 14 Pro 128GB, LG OLED 55C2,

Permalänk
Permalänk

Jo förvisso, men jag vill inte ha en deploy-fil, utan kunna distribuera en exefil som är direkt körbar utan installation. Jag kanske uttryckte mig oklart.

Visa signatur

Dator: MB: Gigabyte Z390 M GAMING mATX | CPU: Intel Core i9 9900K 3.6 GHz (Haswell) | RAM: Corsair 16GB (KIT) 3200Mhz Vengeance LPX | Grafikkort: ASUS GeForce RTX 3060 12GB PHOENIX V2 (LHR) | Chassi: Fractal Design Mini | PSU: Corsair RM750X 750W v2 | Optisk: ASUS BW-12B1ST Blu-Ray/DVD brännare | CPU-kylare: Noctua NH-U12S | Operativ: Windows 11 | Scanner: Canon Canoscan 9000F
Övrigt: Nintendo Switch, NES Mini, SNES Mini, Nintendo New 3DS, NES, Famicom AV, Famicom Disk System, PS3, PS5, AppleTV 4K, Synology NAS DS923+ (32GB), iPhone 14 Pro 128GB, LG OLED 55C2,

Permalänk
Avstängd
Skrivet av oRBIT2002:

Jo förvisso, men jag vill inte ha en deploy-fil, utan kunna distribuera en exefil som är direkt körbar utan installation. Jag kanske uttryckte mig oklart.

Jo men det är ju precis vad artikeln handlar om. Gör de valen i VS, eller bygg med de inställningarna i projektfilen, så blir det en self contained single file application. Alltså ett program där allt är inbäddat i en exe-fil.

Permalänk

Okej.... Verkar inte stämma överens flödet riktigt hur det ser ut för mig (VS 2022 community om det spelar roll).. Kör jag "publish" får jag bara upp en sån filväljare var jag vill publicera min applikation, ser i princip inga inställningar alls förutom en path. Det verkar dessutom röra sig om ett installationspaket när jag klickar vidare i dialogen "How will users install this application"..

Visa signatur

Dator: MB: Gigabyte Z390 M GAMING mATX | CPU: Intel Core i9 9900K 3.6 GHz (Haswell) | RAM: Corsair 16GB (KIT) 3200Mhz Vengeance LPX | Grafikkort: ASUS GeForce RTX 3060 12GB PHOENIX V2 (LHR) | Chassi: Fractal Design Mini | PSU: Corsair RM750X 750W v2 | Optisk: ASUS BW-12B1ST Blu-Ray/DVD brännare | CPU-kylare: Noctua NH-U12S | Operativ: Windows 11 | Scanner: Canon Canoscan 9000F
Övrigt: Nintendo Switch, NES Mini, SNES Mini, Nintendo New 3DS, NES, Famicom AV, Famicom Disk System, PS3, PS5, AppleTV 4K, Synology NAS DS923+ (32GB), iPhone 14 Pro 128GB, LG OLED 55C2,

Permalänk
Medlem

Jag tror det är för att du kör .net framework.
Om du vill ha Single-file så måste du köra minst .net core 3.0.
Om du vill ha Self-contained så tror jag att du måste köra .net 6.0.

Visa signatur

Utvecklare (Technical Director) / Delägare - Björnmamman

Permalänk

Chat GPT tipsade om nugeten Costura.Fody som verkar göra jobbet. Jag envisas med att få med nån .config fil med dock men men, ett steg på vägen.

Visa signatur

Dator: MB: Gigabyte Z390 M GAMING mATX | CPU: Intel Core i9 9900K 3.6 GHz (Haswell) | RAM: Corsair 16GB (KIT) 3200Mhz Vengeance LPX | Grafikkort: ASUS GeForce RTX 3060 12GB PHOENIX V2 (LHR) | Chassi: Fractal Design Mini | PSU: Corsair RM750X 750W v2 | Optisk: ASUS BW-12B1ST Blu-Ray/DVD brännare | CPU-kylare: Noctua NH-U12S | Operativ: Windows 11 | Scanner: Canon Canoscan 9000F
Övrigt: Nintendo Switch, NES Mini, SNES Mini, Nintendo New 3DS, NES, Famicom AV, Famicom Disk System, PS3, PS5, AppleTV 4K, Synology NAS DS923+ (32GB), iPhone 14 Pro 128GB, LG OLED 55C2,

Permalänk
Medlem

En snabb googling ger:

Skrivet av stackOve:

If I understand you correctly, yes you can, but not under Visual Studio (from what I know). To force the compiler to generate a real, standalone executable (which means you use C# like any other language) you use the program mkbundle (shipped with Mono). This will compile your C# app into a real, no dependency executable.

https://stackoverflow.com/questions/2035083/compile-to-a-stan...

Permalänk
Avstängd

Den frågan är över tretton år gammal dock, så det stämmer inte alls längre. Det är bara att följa instruktionerna i den första länken jag skickade så får man en .exe som är körbar på Windows. Man kan lägga till växlar så att alla paket som krävs blir inbakade också, så man inte behöver någon runtime eller så, vilket också står beskrivet där.

Permalänk
Medlem
Skrivet av snajk:

Den frågan är över tretton år gammal dock, så det stämmer inte alls längre. Det är bara att följa instruktionerna i den första länken jag skickade så får man en .exe som är körbar på Windows. Man kan lägga till växlar så att alla paket som krävs blir inbakade också, så man inte behöver någon runtime eller så, vilket också står beskrivet där.

Din länk gäller .net core, frågan gäller .net framework
Motsvarande länk för framework är:
https://learn.microsoft.com/en-us/dotnet/framework/app-domain...

Och kräver en exporterad dll

Innan jag skickade min länk så sökte jag på svaret som döker upp i frameworktråden från stackove för att kontrollera om dessa paket fortfarande finns tillgängliga.

Permalänk
Avstängd
Skrivet av Jaevel:

Din länk gäller .net core, frågan gäller .net framework
Motsvarande länk för framework är:
https://learn.microsoft.com/en-us/dotnet/framework/app-domain...

Och kräver en exporterad dll

Innan jag skickade min länk så sökte jag på svaret som döker upp i frameworktråden från stackove för att kontrollera om dessa paket fortfarande finns tillgängliga.

Är det inte bara att uppgradera och bygga i vanliga .Net istället? Framework utvecklas inte längre utan får bara säkerhetsuppdateringar så det är väl inte så stor mening med att köra på det. Och för en konsollapplikation är det oftast trivialt att byta.

Permalänk
Medlem
Skrivet av snajk:

Är det inte bara att uppgradera och bygga i vanliga .Net istället? Framework utvecklas inte längre utan får bara säkerhetsuppdateringar så det är väl inte så stor mening med att köra på det. Och för en konsollapplikation är det oftast trivialt att byta.

Det beror ju på vad konsolapplikationen har för beroenden. På jobbet sitter jag med ett antal projekt som inte går att migrera till core för att de är kopplade till komplexa väldigt gamla system. Men absolut vore det mest önskvärt att migrera till core.

Permalänk
Avstängd
Skrivet av Jaevel:

Det beror ju på vad konsolapplikationen har för beroenden. På jobbet sitter jag med ett antal projekt som inte går att migrera till core för att de är kopplade till komplexa väldigt gamla system. Men absolut vore det mest önskvärt att migrera till core.

Så kan det absolut vara, men för ett hobbyprojekt, som jag tolkar att det handlar om här, så borde de ytterst få saker som inte fungerar (mer eller mindre) rakt av inte vara något man använder.

Sen är det inte Core längre utan bara .Net. Core var när de skilde på versionerna.

Permalänk
Medlem
Skrivet av snajk:

Så kan det absolut vara, men för ett hobbyprojekt, som jag tolkar att det handlar om här, så borde de ytterst få saker som inte fungerar (mer eller mindre) rakt av inte vara något man använder.

Sen är det inte Core längre utan bara .Net. Core var när de skilde på versionerna.

Vi har .net framework och .net core, jag är väl medveten om att det heter .net core men när man pratar om skillnaderna mellan dom tycker åtminstone jag det är onödigt att skriva hela namnet varje gång.

Permalänk
Avstängd
Skrivet av Jaevel:

Vi har .net framework och .net core, jag är väl medveten om att det heter .net core men när man pratar om skillnaderna mellan dom tycker åtminstone jag det är onödigt att skriva hela namnet varje gång.

Vad jag säger är att det inte heter .Net Core längre utan bara .Net. Från version 5 har jag för mig, vi är på 7 nu men 8 kommer snart.

Permalänk
Medlem
Skrivet av snajk:

Vad jag säger är att det inte heter .Net Core längre utan bara .Net. Från version 5 har jag för mig, vi är på 7 nu men 8 kommer snart.

Ah, då är jag med

Permalänk
Hedersmedlem
Skrivet av snajk:

Vad jag säger är att det inte heter .Net Core längre utan bara .Net. Från version 5 har jag för mig, vi är på 7 nu men 8 kommer snart.

Ja, .Net Core 3.1 och .Net Framework 4.8 samexisterade, men sedan satsade man helt på Core-spåret och kallade nästa version för .Net 5.