【发布时间】:2012-11-27 06:01:30
【问题描述】:
我很好奇 .net 如何解析类型。我知道有一个编译时组件,因为您无法编译具有不在当前程序集或引用程序集中的 using 语句或完全限定类型的程序。我想知道是编译器通过错误还是Visual Studio在proj文件中找不到引用时抛出构建错误?
我也想知道.net 如何在运行时找到程序集。我知道 .net 使用 JIT 编译器,它在第一次运行到该程序集中的类型时加载程序集。我很好奇它是如何查找类型和搜索顺序的。程序集清单是否准确地告诉运行时在哪里查找引用的程序集(如 ASP.NET web.config 文件)?任何指向博客文章、书籍、规格等的链接将不胜感激。
【问题讨论】:
-
嗯,Visual Studio 是本质上是你的编译器。
cl是VS执行编译的可执行文件。 -
@JonathonReinhart 好吧,C# 编译器和 VS 使用的其他组件之间有一个(偶尔有用的)区别。
-
同意,但他在这里询问是否是 VS 或编译器引发了构建错误。在这种情况下,
cl可能会打印它,VS 会选择它并将其显示在构建错误框中。 -
您可以配置 VS 以抛出与编译构建步骤无关的构建错误。例如,在运行单元测试后返回状态失败的构建步骤。当我说我不知道它是 VS 还是 csc.exe 编译器时,这就是我所说的(但现在我知道在这种情况下它是编译器)
标签: .net c#-4.0 compiler-construction types runtime