关于命令行编译器和MSBuild的一些混淆
本文关键字:MSBuild 命令行 编译器 | 更新日期: 2023-09-27 18:36:21
C# CSC.exe
如果我们给它一个 C# 文件,一个 .CS ,它是否能够编译它并说例如代码第 12 行缺少";"?在我的程序后面的形式 - 即Java RCP应用程序,我可以在电子表格中显示这些编译错误
MSBuild怎么样?这是否能够显示与我之前的示例相同的编译错误?
将
MSBuild 视为一个美化的make
或更像ANT
的东西 - 它是一种用于描述编译/构建任务的语言。使用 MSBuild 生成 c# 程序时,实际上是在编译部分使用 csc.exe
。
假设这是你的代码(程序.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:quiet
和msbuild 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
其余两个详细级别是详细的和诊断性的,如果需要,它们会提供更多信息。 我不确定您想要为电子表格提供多少信息,但希望其中之一对您有用。