5 ms·
Windows doesn't ship with C# out of the box. It ships with the runtime for .NET Framework 4.8, but not with the SDK.
by orthoxerox 3y ago
Windows doesn't ship with C# out of the box. It ships with the runtime for .NET Framework 4.8, but not with the SDK.
- anthk 3y agoI think it does since the Windows XP days, at least a CLI based compiler/interpreter.
- orthoxerox 3y agoWould you look at that, it does! C:\Windows\Microsoft.NET\Framework64\ has both MSBuild.exe and csc.exe, but only for .NET Framework up to 4.0. I was under the impression that 4.8 was installed on Win 10 machines via Windows Update.
- TeMPOraL 3y agoAs I understand it, PowerShell allows you, out of the box, to write some C# code in a string, and then run it. And by C# code I mean regular classes with all the bells and whistles.
- justsomehnguy 3y ago*wink* $code = @' using System; using System.Drawing; using System.Runtime.InteropServices; using Microsoft.Win32; namespace Background { public class Setter { [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] private static extern int SystemParametersInfo(int uAction, int uParm, string lpvParam, int fuWinIni); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError =true)] private static extern int SetSysColors(int cElements, int[] lpaElements, int[] lpRgbValues); public const int UpdateIniFile = 0x01; public const int SendWinIniChange = 0x02; public const int SetDesktopBackground = 0x0014; public const int COLOR_DESKTOP = 1; public int[] first = {COLOR_DESKTOP}; public static void RemoveWallPaper() { SystemParametersInfo( SetDesktopBackground, 0, "", SendWinIniChange | UpdateIniFile ); RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true); key.SetValue(@"WallPaper", 0); key.Close(); } public static void SetBackground(byte r, byte g, byte b) { RemoveWallPaper(); System.Drawing.Color color= System.Drawing.Color.FromArgb(r,g,b); int[] elements = {COLOR_DESKTOP}; int[] colors = { System.Drawing.ColorTranslator.ToWin32(color) }; SetSysColors(elements.Length, elements, colors); RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Colors", true); key.SetValue(@"Background", string.Format("{0} {1} {2}", color.R, color.G, color.B)); key.Close(); } } } '@ $null = Add-Type -TypeDefinition $code -ReferencedAssemblies System.Drawing.dll -PassThru Function Set-OSDesktopColor { param ( $r,$g,$b ) $null = [Background.Setter]::SetBackground($r,$g,$b) }
- alisonatwork 3y agoI'm not much of a PowerShell wiz so apologies if this is hideous, but I stuck this in my profile.ps1 a few years ago: $Csc = gci "$env:windir\Microsoft.NET\Framework64\*\csc.exe" -ea silent | select -last 1 if ($Csc) { Set-Alias -Name csc -Value $Csc $Csc = $null } It makes the csc that comes with .NET available out of the box on pretty much any Windows system. I'm not sure how good it is at building serious programs, but it's good enough for little static void Main thingys. I doubt it's useful for the same demographic that would be using VBA, though.
- justsomehnguy 3y agoif ($Csc = gci "$env:windir\Microsoft.NET\Framework64\*\csc.exe" -ea silent | select -last 1) { Set-Alias -Name csc -Value $Csc Remove-Variable Csc } Or even: gci "$env:windir\Microsoft.NET\Framework64\*\csc.exe" -ea silent | % { Set-Alias -Name csc -Value $_ }