2010-07-23 46 views
15

在VC++中,我可以按CTRL + F7来编译单个文件,或者右键单击源文件进行编译。 是否有可能在C#中编译单个文件(或当前文件)?如何在c#中编译一个文件?

我想例如知道我的当前文件是否有任何错误,而无需编译所有内容。

+0

编译单个程序集时,C#编译器*非常快*,甚至包含大量代码的程序集。你确定你真的被这个问题困扰吗? – 2010-07-23 17:29:14

回答

6

不,这是不可能在C#中做到这一点。

与C++不同,C#文件无法自行合理编译以确定它是否有任何错误。 C++通过#include语句实现了这一点,它允许.cpp文件理解可用类型的声明。这些声明定义了当前文件依赖的类型的结构,并允许编译器确保它们按照规范使用。

此过程在C#中隐式处理。可用的声明集合就是所有编译文件中所有可以访问的声明的集合。无法以C++的方式转发声明依赖关系,因此无法确保它们在单个文件中正确使用。

+0

虽然理论上不能解析它所需的一切,并忽略除当前源文件中使用的类型之外的所有错误吗?所以它只报告需要的。 – Winforms 2010-07-23 17:17:41

+0

@Winforms,为什么不按文件名编译和排序错误列表并滚动到有问题的文件? – JaredPar 2010-07-23 17:19:03

+2

我想,当重构一大堆代码时,虽然我只想看到该文件的错误,但我明白了你的观点。自从转移到C#后,我的一个烦恼就是其中一个。 – Winforms 2010-07-23 17:21:36

3

像ReSharper这样的Visual Studio插件工具对于这种情况来说是非常好的投资。

ReSharper执行连续的后台解决方案范围代码分析,并通过在代码文件旁边方便地显示一个条来报告问题。\具有红色\橙色线条的文档滚动条表示任何有问题\错误的代码行。所显示的行是点击能够导航到有问题的线路,也有工具提示,详细说明确切的问题是什么:

http://www.jetbrains.com/resharper/features/code_analysis.html#Continuous_Code_Quality_Analysis

 
      http://www.jetbrains.com/resharper/features/screenshots/50/marker_bar.png 

的问题\警告,ReSharper的可检查可配置(但它具有出色的配置),并且可以表示任何错误,这些错误会导致代码不能编译为更微妙的问题,因为它检测到可能的空方法调用结果,该结果尚未明确检查。

0

Shift-F6会编译当前程序集,它是差不多你想要的。

+0

VS的哪个版本是这样的?我试过Shift + F6,什么都没有发生。 – 2015-07-06 19:30:00

+0

这可能是2008年,因为它是在2010年发布。 – 2015-07-07 13:58:46

1

在命令行: %WINDIR%\ Microsoft.Net \框架\ V3.5 \ CSC.EXE /目标:库File.cs

你可以合理地附加至该解决方案通过探险工具上下文菜单 - >外部工具

设置参数/目标:库$(ItemPath)

类似的东西可能会做你想要什么。尽管该文件不得不依赖项目中的其他文件或除了GAC中的引用二进制文件。

10

对于单cs文件编译+运行:

  1. 在VS 2008中,进入 “工具”> “外部工具”
  2. 点击 “添加”
  3. 标题:运行CSC(或无论你想要什么)
  4. 命令:C:\ Windows \ system32 \ cmd。EXE
  5. 参数:/ C C:\ WINDOWS \ Microsoft.NET \框架\ v3.5版本\ CSC.EXE /目标:winexe $(ItemPath)& & $(ItemFileName)
  6. 初始目录:$(ItemDir)
  7. 检查使用输出窗口
  8. 应用+ OK
  9. 转到工具,然后选择“运行CSC”

如果这不起作用,验证您的路径,cmdcsc匹配。

+0

出色的工作。 此外,如果您使用的是Visual Studio 2010,请在步骤5中将** v3.5 **替换为** v4.0.30319 **。 – 2014-08-08 03:17:17

0

是的,这是可能的。您可以使用命令提示符直接调用编译器。即

  1. 创建单个文件 'hello.cs中'
  2. 打开Visual Studio命令提示符
  3. 导航到具有 'hello.cs中'
  4. 运行csc hello.cs
  5. 执行你的单个文件的目录通过输入hello.exe

这将至少告诉你单个文件是否编译。你可以在这里找到更多的信息:https://msdn.microsoft.com/en-us/library/78f4aasd.aspx

相关问题