1

我不知道如何将文件编译在一起,似乎没有相互引用。我刚刚启动了 Visual Studio 2012 并启动了一个新项目,然后单击了 Windows 窗体应用程序。该解决方案包括以下文件:据我所知,Form1.Designer.cs、AssemblyInfo.cs、Settings.Designer.cs 和 Resources.resx。那将是四个文件,它们都被执行,但似乎没有任何相互引用。C# 是否只执行与包含 Main() 的文件位于同一目录中的所有文件?如果是这样,那么它如何确定顺序?我无法在其他地方找到此信息。

4

2 回答 2

2

如果您检查项目文件的原始内容(使用外部编辑器打开它),您会发现它不是任意的。该项目“将这些文件联系在一起”。它将与名为 project_name.csproj 的其他文件位于同一文件夹中(对于 C#)

为了更深入地研究编译在 .NET 中的工作原理,我建议尝试使用命令行编译器。csc 用于 C#,vbc 用于 VB。

格式是 XML,开头看起来像这样:(即使是非常小的应用程序也会有一个相当大的 prj 文件。)

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.50727</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{37482A08-A668-45C7-A650-37EA2248B1F6}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>

    etc.
于 2013-05-14T00:34:07.137 回答
-1

还有一个名为Program.cs它的文件有一个 main 方法,这个方法决定了应用程序应该首先运行什么,并且它有一个默认运行Form1.cs见该行:

Application.Run(new Form1());

所以现在您知道要首先编译哪个类,然后将您的第一个编译表单与另一个表单或其他任何内容链接,并使用诸如按钮单击之类的动作事件处理程序启动它。

于 2013-05-14T00:55:35.737 回答