Följ Black Week på SweClockers
Permalänk
Medlem

C# utveckling - Mac

Hej gänget,

Jag är sugen på att köpa den nya Mac Mini som arbetsdator, dock är jag inte speciellt Mac van ur ett utvecklingsperspektiv.
Så, jag skulle behöva svar på följande saker.

1. Såg att Visual Studio för mac inte längre fungerar, vilken programvara kan man använda? (Som stödjer .net core)
2. Hur fungerar det om man ska bygga en console app, går det fortfarande att kompilera och köra som .exe?
3. Hur fungerar det med att hosta och debugga webbapplikationer, i dagsläget använder vi helt enkelt en lokal IIS som vi anslutar VS mot för debugging osv.
4. Hur fungerar det med databaser, vi kör microsoft stacktrace så vi har mssql i botten, fungerar tex SQLExpress på Mac?
6. Har ni några erfarenheter av att köra Mac i en primärt Windows fokuserad organisation? Vad finns det för fallgropar?

Jag kommer köra Dualboot så jag även har windows, men, jag vill såklart i högsta möjliga mån undvika att hålla på hoppa fram och tillbaka mellan OS baserat på arbetsuppgift.

Mvh
Pär Pettersson

Permalänk
Medlem

Hej!

Jag är mestadels .Net utvecklare.
Jag har kört på mac de senaste åren och tycker det är helt underbart.

Du får bara ha i åtanke att du inte kommer kunna köra .net framework (det som var innan core).

Men allting efter det fungerar fint.

Du kan fortfarande bygga console-appar på en mac - MEN du kan inte köra dem då .exe tillhör windows.
Beroende på vilken Mac du köper så tror jag inte du kommer kunna dualboota windows med M-chipsen, inte på ett bra sätt i alla fall.

Som IDE kan jag starkt rekomendera JetBrains Rider - Har kört den innan jag gick över till Apple - Hästlängder bättre visual studio.

Nej du kan inte få MSQL att lira lokalt på en macbook - men du kan alltid koppla det mot en servertjänst eller liknande.

Hoppas jag svarade på några av dina frågor - om JAG får välja så kommer jag aldrig gå över till att jobba med windows igen.

/Daniel

Visa signatur

Rig: Ryzen 7 5800X - Crucial Ballistix Black 3200 Mhz 32 GB - MSI RTX 4060 TI OC 8 GB - Fractal Design Define C
Laptop: Macbook Pro M1 Max - 32GB - 14"
Media/Server: Raspberry PI 4 - 2 GB - Plex Media Server - KODI - PiHole - qBittorrent - HomeAssistant
Media/Server: NUC - i7-7567U - 32GB - Plex Media Server - Uptime Kuma - mineCraft - qBittorrent
NAS: Zyxel 325v2 - 5 TB - Qnap TS-464 - 40 TB

Permalänk
Skrivet av nawks:

Jag kommer köra Dualboot så jag även har windows, men, jag vill såklart i högsta möjliga mån undvika att hålla på hoppa fram och tillbaka mellan OS baserat på arbetsuppgift.

Du kan inte dualboota moderna Macar med Windows, bara med Linux (via Asahi). Du kan köra Windows i en VM, dock.

Permalänk
Medlem

Enklaste sättet att köra SQL Server på en Mac är nog via docker.

https://hub.docker.com/r/microsoft/mssql-server

Permalänk
Hedersmedlem
Skrivet av Ethnic:

Du kan fortfarande bygga console-appar på en mac - MEN du kan inte köra dem då .exe tillhör windows.

Just exe må vara windows-specifikt, men det går väl ändå att köra programmet man har byggt?

Permalänk
Medlem
Skrivet av nawks:

Hej gänget,

Jag är sugen på att köpa den nya Mac Mini som arbetsdator, dock är jag inte speciellt Mac van ur ett utvecklingsperspektiv.
Så, jag skulle behöva svar på följande saker.

1. Såg att Visual Studio för mac inte längre fungerar, vilken programvara kan man använda? (Som stödjer .net core)
2. Hur fungerar det om man ska bygga en console app, går det fortfarande att kompilera och köra som .exe?
3. Hur fungerar det med att hosta och debugga webbapplikationer, i dagsläget använder vi helt enkelt en lokal IIS som vi anslutar VS mot för debugging osv.
4. Hur fungerar det med databaser, vi kör microsoft stacktrace så vi har mssql i botten, fungerar tex SQLExpress på Mac?
6. Har ni några erfarenheter av att köra Mac i en primärt Windows fokuserad organisation? Vad finns det för fallgropar?

Jag kommer köra Dualboot så jag även har windows, men, jag vill såklart i högsta möjliga mån undvika att hålla på hoppa fram och tillbaka mellan OS baserat på arbetsuppgift.

Mvh
Pär Pettersson

Jag har ingen (modern) mac själv (än, M4 Mini ser ju väldigt intressant ut), men:
1. Jetbrains Rider.
2. Ja, det ska gå, rätt flaggor på dotnet publish bara. Annars kanske ni ska fundera på byggserver?

Skrivet av Elgot:

Just exe må vara windows-specifikt, men det går väl ändå att köra programmet man har byggt?

Ja, normalt sett är exe-filen i princip minsta möjliga för att anropa dll-filen där allt av intresse ligger.

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Datavetare
Skrivet av nawks:

Hej gänget,

Jag är sugen på att köpa den nya Mac Mini som arbetsdator, dock är jag inte speciellt Mac van ur ett utvecklingsperspektiv.
Så, jag skulle behöva svar på följande saker.

1. Såg att Visual Studio för mac inte längre fungerar, vilken programvara kan man använda? (Som stödjer .net core)
2. Hur fungerar det om man ska bygga en console app, går det fortfarande att kompilera och köra som .exe?
3. Hur fungerar det med att hosta och debugga webbapplikationer, i dagsläget använder vi helt enkelt en lokal IIS som vi anslutar VS mot för debugging osv.
4. Hur fungerar det med databaser, vi kör microsoft stacktrace så vi har mssql i botten, fungerar tex SQLExpress på Mac?
6. Har ni några erfarenheter av att köra Mac i en primärt Windows fokuserad organisation? Vad finns det för fallgropar?

Jag kommer köra Dualboot så jag även har windows, men, jag vill såklart i högsta möjliga mån undvika att hålla på hoppa fram och tillbaka mellan OS baserat på arbetsuppgift.

Mvh
Pär Pettersson

1. Som redan nämnts finns Rider.

Men föredrar personligen VS Code över både Rider och framförallt över Visual Studio, i alla fall om jag skriver console-appar med .NET.

Jobbar man däremot med WFP eller WinUI 3 gör specifika delar till dessa att Visual Studio är att föredra, men då bygger man specifikt för Windows ändå vilket gör detta till ett icke-problem.

2. Håller vi oss till konsol-appar och "moderna .NET" (det som tidigare hette .NET Core) så har man i praktiken full flexibilitet här. Det går att bygga en win-x64 versionen av programmet på en arm64-mac om man vill det (vilket kan vara fullt rimligt när jag releaser).

Specifikt kring .exe går det att bygga Windows-binärer även på Mac:en, finns 4 varianter av Windows-binärer som .NET stödjer

  • win-x64: Windows 64-bit

  • win-x86: Windows 32-bit

  • win-arm: Windows on (32-bit) ARM

  • win-arm64: Windows on (64-bit) ARM64

Alla dessa kommer generera en .exe binär. Det går inte att köra den binären från MacOS, däremot kan man använda "dotnet run <path-to-app.dll>" för att köra om man byggt med "CPU ANY".

  • osx-x64: macOS 64-bit for Intel (x64)

  • osx-arm64: macOS on Apple Silicon (ARM64)

  • linux-x64: (64-bit) x86_64 Linux

  • linux-arm: (32-bit) ARM Linux

  • linux-arm64: (64-bit) ARM64 Linux

Normalt bygger Windows till Windows, MacOS till MacOS och Linux till Linux. Så om man inte specifikt väljer runtime-plattform får man filerna "app" och "app.dll" på MacOS där man får "app.exe" och "app.dll" på Windows. "app" filen är körbara direkt.

3. Har tyvärr aldrig gjort detta, så vet ej. Kanske även det går att köra via Docker? Annars går det definitivt att köra via Windows som man kör via Parallels (kör själv ARM64 versionen av Windows 11 ovanpå MacOS via Parallels).

4. Som redan nämnts, Microsoft har en Docker-container för detta. Vidare om man kör Windows via Parallels är även det en möjlighet.

6. Gissningsvis lär inte IT-avdelningen kunna hjälpa dig speciellt mycket, men själva utvecklingsarbetet lär de väl ändå kanske inte lägga sig i så blir ingen skillnad. Lär ändå vara lättare än att köra Linux i en Windows-miljö (vilket jag gjorde under ca 15 år tidigare och det gick faktiskt lysande).

Skrivet av Elgot:

Just exe må vara windows-specifikt, men det går väl ändå att köra programmet man har byggt?

Exakt, se ovan. Man får ingen .exe "by-default" när man bygger på MacOS (eller Linux), däremot är det möjligt att bygga Windows .exe även från MacOS (och Linux). Går även att bygga win-x64 från mac-arm64

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Jaa hörni, det var verkligen inte ett dåligt val att gå över till Mac, efter lite konfigurationer osv så är det en dröm att använda.

Tusen tack för er input hörni!

Mvh
Pär

Permalänk

Det känns lite hobbyprojekt att utveckla x86 lokalt på en mac, liksom man vill ju testa av emot en så likt maskin som möjligt . Hur väl fungerar vanliga windows x86-64 i en virtuell maskin och sedan så behöver man inte det minsta fundera på att hostmaskinen råkar vara en mac?
Inte ens på en PC vill man ha all dritt på hostmaskinen, så man jobbar igentligen på exakt samma sätt. Skillnaden är att den datorn som drar igång hypervisorn är annorlunda.

Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Det känns lite hobbyprojekt att utveckla x86 lokalt på en mac. Hur väl fungerar vanliga x86 i en virtuell maskin och sedan så behöver man inte det minsta fundera på att hostmaskinen råkar vara en mac?
Inte ens på en PC vill man ha all dritt på hostmaskinen, så man jobbar igentligen på exakt samma sätt. Skillnaden är att den datorn som drar igång hypervisorn är annorlunda.

.net är inte x86

Visa signatur

AMD Ryzen 7 9800X3D | Titan X (Pascal) | ASUS ROG Strix B650E-I Gaming WIFI | Kingston 32GB (2x16GB) DDR5 6000MHz CL30 | Samsung 960 EVO 1TB

Permalänk
Skrivet av Nioreh83:

.net är inte x86

.Net core är absolut inte x86. Det andra så beror det på vad man gör, TS skrev: citat: "Hur fungerar det om man ska bygga en console app, går det fortfarande att kompilera och köra som .exe"
.exe tolkar jag som x86/x64 windows.

Nå oavsett vad ens klientdator råkar vara för något så vill man ofta inte installera en massa dritt där. Man kan köra VM på en PC och man kan köra VM på en Mac. Man kan även fjärrstyra en VM som körs någon annanstans och då jobba ifrån vad som helst som sin Samsung Tizen OS Tv om man så vill.

Min fråga är hur bra Windows x86/x64 fungerar på en mac, fungerar det bra. Så kan man jobba precis som det vore en pc man behöver inte göra någon ändring överhuvudtaget.

Permalänk
Datavetare
Skrivet av lillaankan_i_dammen:

.Net core är absolut inte x86. Det andra så beror det på vad man gör, TS skrev: citat: "Hur fungerar det om man ska bygga en console app, går det fortfarande att kompilera och köra som .exe"
.exe tolkar jag som x86/x64 windows.

Nå oavsett vad ens klientdator råkar vara för något så vill man ofta inte installera en massa dritt där. Man kan köra VM på en PC och man kan köra VM på en Mac. Man kan även fjärrstyra en VM som körs någon annanstans och då jobba ifrån vad som helst som sin Samsung Tizen OS Tv om man så vill.

Min fråga är hur bra Windows x86/x64 fungerar på en mac, fungerar det bra. Så kan man jobba precis som det vore en pc man behöver inte göra någon ändring överhuvudtaget.

Efter att jobbat med .NET 8 + Win11 körandes under Parallels på en Mac måste jag ändå säga att det fungerar långt bättre än jag trodde det skulle göra.

Nu kört jag normalt ARM64 versionen av .NET applikationen i Windows, men saker byggda med .NET verkar fungera riktigt bra via Windows Prism (motsvarigheten till Rosetta 2 i MacOS), d.v.s. att köra .NET applikationer explicit byggda för x86 eller x64 fungerar också väldigt bra att köra på ARM64 versionen av Windows.

Och i fallet Windows kanske man inte borde bli alltför förvånad. Det är direkt kritiskt att körande x86/x64 Windows-program fungerar riktigt bra då Windows varit så hårt bunden till det under alla år. När det handlar om program som bara har något år på nacken lär inte heller prestanda vara ett problem, det absurda är ju att M4 Mac:arna kör (binäröversatt) x86-kod lika snabbt eller snabbare än nuvarande laptop CPUer från Intel/AMD.

Sist: ".exe" i kontext av .NET handlar bara om man kör via den wrapper som byggs eller inte. En sådan wrapper byggs alltid, även på MacOS/Linux, enda skillnaden är att på Windows heter den "app.exe" och på de andra två får den namnet "app". Det verkliga programmet ligger som en eller flera .dll:er (assemblies), de kan köras på alla OS (om man inte länkat in OS-specifika "native" saker).

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer