C# Compiler Options

Below are the list of commands/options available for the Visual C# compiler. These options can be used through the csc.exe executable available along with the .NET framework.
In general case, the executable will be under %SystemRoot%\Microsoft.NET\Framework\<Framework-version>. In this path %SystemRoot% is the windows directory.


  • /out:<file> – Specify output file name (default: base name of file with main class or first file)
  • /target:exe – Build a console executable (default) (Short form: /t:exe)
  • /target:winexe – Build a Windows executable (Short form: /t:winexe)
  • /target:library – Build a library (Short form: /t:library)
  • /target:module – Build a module that can be added to another assembly (Short form: /t:module)
  • /target:appcontainerexe – Build an Appcontainer executable (Short form: /t:appcontainerexe)
  • /target:winmdobj – Build a Windows Runtime intermediate file that is consumed by WinMDExp (Short form: /t:winmdobj)
  • /doc:<file> – XML Documentation file to generate
  • /platform:<string> – Limit which platforms this code can run on: x86, Itanium, x64, arm, anycpu32bitpreferred, or anycpu. The default is anycpu.


  • /recurse:<wildcard> – Include all files in the current directory and subdirectories according to the wildcard specifications
  • /reference:<alias>=<file> – Reference metadata from the specified assembly file using the given alias (Short form: /r)
  • /reference:<file list> – Reference metadata from the specified assembly files (Short form: /r)
  • /addmodule:<file list> – Link the specified modules into this assembly
  • /link:<file list> – Embed metadata from the specified interop assembly files (Short form: /l)


  • /win32res:<file> – Specify a Win32 resource file (.res)
  • /win32icon:<file> – Use this icon for the output
  • /win32manifest:<file> – Specify a Win32 manifest file (.xml)
  • /nowin32manifest – Do not include the default Win32 manifest
  • /resource:<resinfo> – Embed the specified resource (Short form: /res)
  • /linkresource:<resinfo> – Link the specified resource to this assembly (Short form: /linkres), Where the resinfo format is <file>[,<string name>[,public|private]]


  • /debug[+|-] – Emit debugging information
  • /debug:{full|pdbonly} – Specify debugging type (‘full’ is default, and enables attaching a debugger to a running program)
  • /optimize[+|-] – Enable optimizations (Short form: /o)


  • /warnaserror[+|-] – Report all warnings as errors
  • /warnaserror[+|-]:<warn list> – Report specific warnings as errors
  • /warn:<n> – Set warning level (0-4) (Short form: /w)
  • /nowarn:<warn list> – Disable specific warning messages


  • /checked[+|-] – Generate overflow checks
  • /unsafe[+|-] – Allow ‘unsafe’ code
  • /define:<symbol list> – Define conditional compilation symbol(s) (Short form: /d)
  • /langversion:<string> – Specify language version mode: ISO-1, ISO-2, 3, 4, 5, or Default


  • /delaysign[+|-] – Delay-sign the assembly using only the public portion of the strong name key
  • /keyfile:<file> – Specify a strong name key file
  • /keycontainer:<string> – Specify a strong name key container
  • /highentropyva[+|-] – Enable high-entropy ASLR


  • @<file> – Read response file for more options
  • /help – Display this usage message (Short form: /?)
  • /nologo – Suppress compiler copyright message
  • /noconfig – Do not auto include CSC.RSP file


  • /baseaddress:<address> – Base address for the library to be built
  • /bugreport:<file> – Create a ‘Bug Report’ file
  • /codepage:<n> – Specify the codepage to use when opening source files
  • /utf8output – Output compiler messages in UTF-8 encoding
  • /main:<type> – Specify the type that contains the entry point (ignore all other possible entry points) (Short form: /m)
  • /fullpaths – Compiler generates fully qualified paths
  • /filealign:<n> – Specify the alignment used for output file sections
  • /pdb:<file> – Specify debug information file name (default: output file name with .pdb extension)
  • /errorendlocation – Output line and column of the end location of each error
  • /preferreduilang – Specify the preferred output language name.
  • /nostdlib[+|-] – Do not reference standard library (mscorlib.dll)
  • /subsystemversion:<string> – Specify subsystem version of this assembly
  • /lib:<file list> – Specify additional directories to search in for references
  • /errorreport:<string> – Specify how to handle internal compiler errors: prompt, send, queue, or none. The default is queue.
  • /appconfig:<file> – Specify an application configuration file containing assembly binding settings
  • /moduleassemblyname:<string> – Name of the assembly which this module will be a part of

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s