我创建了一个项目,并添加了一个文件。我可以构建一个exe等等,工作正常。
问题是:如果我的项目中有多个文件,并且我想在一个文件中检查我的代码的语法,并且不想构建exe或dll,该怎么办?
编程c时,我在Visual Studio IDE中按ctrl + F7并编译我的代码。我知道c#中没有目标文件。 Microsoft c#reference states:"由于调用C#编译器,没有创建对象(.obj)文件;输出文件是直接创建的。"。
是否有一个csc.exe开关告诉我“你的代码看起来很好”,或者'第xx行的表达式没有意义'?
注意:请不要使用csc.exe提供命令行构建的链接。所有示例命令行都用于从一个或多个文件创建exe或dll。或者关于如何从建筑物中排除文件。我不想要那个。
答案 0 :(得分:2)
编译器是语法检查器。它将在编译时告诉您C#代码是否有效。在尝试编译结束时,将提供任何错误或警告。如果没有,那么它是有效的代码。
您可以随时单独编译任意一段C#代码。 然而,如果该代码依赖于其他代码,那么为了使其有效,其他代码也需要包含在编译中。使用其他未定义符号的代码(例如在其他代码文件中定义的类)无效。那些符号需要定义。
在上面的评论中,您表示担心整个项目的编译可能需要很长时间。这可以通过将代码组织成更小的组件来解决。如果你有一个庞大的C#项目需要很长时间来编译,那么你所拥有的就是一团糟。将它拆分成更小的组件。每个组件都可以在自己的项目中,可以单独编译。不同的项目将相互依赖,相关项目将包含在该编译中。但是那个依赖图也不应该太大而且不实用。如果是的话,你仍然有一个烂摊子,但只是在不同的规模。保持项目之间的依赖关系图浅,易于维护。
答案 1 :(得分:0)
回答我自己的问题。当我发布这个时,我不知道在c#中拆分定义和实现,就像在c或c ++中那样,是不可能的。 https://social.msdn.microsoft.com/Forums/en-US/64800602-4ff2-4747-8c42-a4e1980d4124/c-no-header-files-all-code-is-written-inline-why?forum=csharplanguage声明接口执行此操作,但不是我在原始帖子中提出的方式。看起来在多文件项目中,只有IDE为我提供了这条信息(语法检查),而不是构建整个项目。
单个文件(Visual Studio)上的ctrl + F7或者c#无法使用-c或-fsyntax-only开关(在gcc上)。