不使用Visual Studio,是否有可能安装C#编译器?

77

我希望能够通过命令行构建项目。是否可以在不安装 Visual Studio 的情况下部署C#编译器?


5
我觉得有趣的是,人们常常将IDE与实际的开发平台和/或语言联系在一起。 - Soviut
这就是我喜欢保持我的构建机的方式。只需要编译器。当然,有些工具需要Visual Studio,但在构建机的情况下,我觉得这真的很烦人。你不应该必须安装Visual Studio才能构建任何东西。一些第三方工具提供商要求安装Visual Studio以授权组件,并且还有另一个原因,但我记不清是什么了。 - Aran Mulholland
确实,.NET框架的某些部分需要它。如果您观察生产机器上的进程,并且使用一些需要运行时代码生成的功能,例如XML序列化,那么您会注意到应用程序不时地启动csc.exe,即使未安装VS也是如此。 - Laurent LA RIZZA
11个回答

48
当然,这个框架包括一个编译器csc.exe。阅读 这篇文章 进行快速操作指南。重要的部分:

你可以从Microsoft网站获取命令行编译器(csc.exe) http://msdn2.microsoft.com/en-us/netframework/aa731542.aspx

下载.NET Framework的可再发行版本包,其中包括编译器和支持C# 2005语法的.NET Framework。

编译器位于以下目录: %windir%\Microsoft.NET\Framework\

同时查看 这篇MSDN文章 获得完整的指南和解释。

请注意,对于更新的版本,您需要查找MSBuild独立软件包而不是框架 - 参见@Vadzim的回答


能否编译整个解决方案而不仅仅是 .cs 文件? - Pavel Bastov
3
没错,这就是msbuild.exe的用途。(它肯定可以处理.csproj文件,而且我认为也可能支持.sln文件。) - Brian
1
MSBuild对.sln文件没有问题。 - DaveE
@200_success 谢谢。我已经更改了链接,让它指向 Wayback Machine,并包含了一些原始文本。 - lc.

47

当然可以。执行以下操作:

sudo apt-get install mono-gmcs

其他人都认为是Windows和MS .NET,但是......


大家都认为,因为桌面上只有一个适当的操作系统 - Windows。此外,人们会问“不安装VS”,这意味着他正在使用Windows,但不想安装VS(因为Linux没有VS)。 - Vincent

35

是的,如果你已经安装了.NET SDK,它就在那里。例如,

C:\WINDOWS\Microsoft.NET\Framework\v[your version number]\csc.exe

msbuild.exe应该也在那里,你可以使用它来构建项目(.csproj)文件。


19
csc.exe被包含在.NET框架中,这是大多数人所称的运行时。您无需SDK即可获取编译器。让我再说一遍:您不需要SDK即可获取C#编译器。VBC和CSC编译器随.NET框架一起提供。 - Cheeso
2
先生,你太厉害了。因为让我浏览电脑找到我需要的东西,我给你加1分。 - Sina

21
与其他回答者说的不同,你不需要SDK,只需要.NET Framework即可获得C#编译器csc.exe。
此外,考虑其他(免费)IDE,如MonoDevelop, #developVisual C# Express。(你说你不想要Visual Studio,并不意味着你不想要任何IDE ;) )

14

最新的Microsoft .NET Framework 4.7不再包括C#编译器。

但可以作为独立的MSBuild工具的一部分进行安装。

进入https://www.visualstudio.com/downloads/,向下滚动到“其他工具和框架”,选择“Visual Studio 2017生成工具”。

运行“Visual Studio Build Tools 2017”在线安装程序,切换到“各个组件”选项卡,并勾选“C#和Visual Basic Roslyn编译器”。 这也将检查MSBuild依赖项。总共少于100兆字节。

编译器会安装在C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn\csc.exe


1
这是2020年的正确解决方案。我只想指出 msbuild.exe 不在同一个文件夹中,而是在 Bin 文件夹上一层。 - Jay
那是最新版本吗?它显示的是3.9.0-6.21160.10,非常老旧。在C:\windows\Microsoft.NET\Framework中的版本是4.8.4084.0,但也很老了,并且显示有更新版本。.NET 5.0已经发布了,那么csc.exe在哪里呢? - Peter Quiring
好的,3.9是基于Roslyn的,而4.8是旧的C++版本。这个网站解释了它:https://blog.lextudio.com/the-rough-history-of-the-so-many-c-compilers-f3a85500707c - Peter Quiring
1
一个更正:现在“构建工具”位于“Visual Studio工具”部分,而且只是愚蠢的Web安装程序。 - Vincent

2

是的,甚至有一个开源的IDE——SharpDevelop。你可以将编译器设置为命令,使用UltraEdit(或其他编辑器)等。


1

我之前一直在寻找这样的解决方案,以便我可以使用C#创建小型控制台应用程序。

对我有用的方法是由Brian提出的,我所做的就是,在创建文件后简单地执行以下操作:

C:\WINDOWS\Microsoft.NET\Framework\v[your version number]\csc.exe myfile.cs

然后它将生成您可以使用的 .exe 文件 :)


1
每次重新编译时都要输入完整路径并不是很方便。您可以将此路径添加到PATH环境变量中,然后键入“csc.exe myfile.cs”。 - Pavel Bastov
我同意@PavelBastov的观点,我只是想为其他可能想要创建环境变量的用户展示实际路径。 - Carlos F

1

1
你不需要SDK,但它确实提供了命令行环境,使构建过程更容易。 - benPearce

1

你只需要安装.NET框架。你可以使用记事本编辑代码,使用CSC.exe编译。


1
假设您已安装了包含C#的Visual Studio。同时,假设您想要最新版本。
  1. 找到您的VS安装路径,将其称为VSPath。
  2. CSC编译器位于VSPath\MSBuild(MSBuild-Version)\Bin\Roslyn目录下。

你说的话太荒谬了!作者要求“在不安装Visual Studio的情况下部署C#编译器”。没有VS! - Vincent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接