1

C# CSC.exe

如果我们给它一个 C# 文件,一个 .CS ,它是否能够编译它并说例如一个“;” 在您的代码的第 12 行缺少?在我的程序后面的表单中 - 这是 Java RCP 应用程序,我可以在电子表格中显示这些编译错误

MSBuild怎么样?这是否能够显示与我之前的示例相同的编译错误?

4

2 回答 2

4

将 MSBuild 视为一种美化make或类似的东西ANT- 它是一种用于描述编译/构建任务的语言。当您使用 MSBuild 构建您的 c# 程序时,您实际上是在使用csc.exe编译部分。

于 2012-06-06T15:21:47.667 回答
1

假设这是您的代码(program.cs):

namespace MyCustomBuild
{
     class Program
     {
         static void Main(string[] args)
         {
             System.Console.WriteLine("Hello World")
         }
     }
}

您可以调用csc program.cs并接收以下输出

Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.

program.cs(7,52): error CS1002: ; expected

或者,您可以使用 msbuild 来实现完全相同的结果!这里是内容build.msbuild

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Default">
     <Csc Sources="program.cs"/> 
  </Target>
</Project>

然后,您可以调用具有不同详细级别的 msbuild 文件,如图所示。

msbuild build.msbuild /verbosity:quietmsbuild build.msbuild /verbosity:minimal

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.269]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

program.cs(7,52): error CS1002: ; expected [<filePath>\build.msbuild]

msbuild build.msbuild /verbosity:normal

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.269]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 6/6/2012 12:13:00 PM.
Project "<filePath>\build.msbuild" on node 1 (default targets).
Default:
  C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /out:program.exe program.cs
program.cs(7,52): error CS1002: ; expected [<filePath>\build.msbuild]
Done Building Project "<filePath>\build.msbuild" (default targets) -- FAILED.

Build FAILED.

"<filePath>\build.msbuild" (default target) (1) ->
(Default target) -> 
  program.cs(7,52): error CS1002: ; expected ["<filePath>\build.msbuild]

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.28

其余两个详细级别是详细的和诊断性的,如果您需要,它们会提供更多信息。我不确定您想要为电子表格提供多少信息,但希望其中一种对您有用。

于 2012-06-06T16:18:28.303 回答