2012-06-06 70 views
2

C# CSC.exe有關命令行編譯器和MSBuild的

有些混亂。如果我們給它一個C#文件,.CS,是它能夠編譯它,比方說一「」缺少你的代碼的第12行?在一個稍後在我的程序中的表單中 - 這是Java RCP應用程序,我可以在電子表格中顯示這些編譯錯誤

MSBuild如何?它能夠顯示與我以前的例子相同的編譯錯誤嗎?

+0

你問是否csc.exe會編譯一些東西,即使有編譯錯誤?答案是否定的。或者你問如果csc.exe可以返回一個錯誤列表?答案是肯定的。你的問題有點混亂。 – Crisfole

回答

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 

剩下的兩個詳細級別詳細,診斷,如果你想要他們目前甚至更多的信息。我不確定您的電子表格需要多少信息,但希望這些信息對您有用。

4

把MSBuild看作是美化make或者更像ANT這是一種描述編譯/編譯任務的語言。當您使用MSBuild構建C#程序時,實際上是使用csc.exe作爲編譯部分。

+0

謝謝。 「它能夠編譯它並說例如在你的代碼的第12行中缺少」;「在稍後在我的程序中的表單中 - 這是Java RCP應用程序,我可以在電子表格中顯示這些編譯錯誤」? – Bohn