如何在终端中无需创建项目编译链接两个C# 10的.cs文件?
无IDE环境下C#跨文件类引用方案(附底层原理)
一、快速测试:直接编译多个源文件
你这两个同文件夹、同命名空间的.cs文件,完全不用折腾DLL,直接用C#编译器csc把两个文件一起编译就行:
- 打开CMD/PowerShell,切换到文件所在文件夹
- 执行命令:
csc Program.cs Supportive.cs
编译完成后会生成Program.exe,直接运行就能调用Supportive类了。
二、生成并引用DLL的正确操作
如果确实需要用DLL的方式,之前操作失败大概率是参数没加对,正确步骤是:
- 先把Supportive.cs编译成类库(DLL):
csc /target:library Supportive.cs
执行后会得到Supportive.dll文件 - 编译Program.cs时引用这个DLL:
csc /reference:Supportive.dll Program.cs
这样生成的Program.exe就能正常调用DLL里的Supportive类了。
三、底层工作原理
C#编译器(csc)在编译时,必须获取到所有用到的类的源代码或者已编译程序集(DLL/EXE):
- 直接编译多个.cs文件时,编译器会同时解析所有文件的代码,自动识别同一命名空间下的类,将它们合并到同一个程序集(EXE)中。
- 引用DLL时,编译器会读取DLL里的元数据(包含类的结构、方法签名等信息),编译阶段只需要这些元数据就能生成调用逻辑,程序运行时再加载DLL执行具体代码。
- Visual Studio里的“跨项目引用”,本质就是IDE帮你自动完成了上述步骤:先编译被引用项目生成DLL,再在主项目编译时自动添加
/reference参数引用该DLL,省去了手动敲命令的麻烦。
内容的提问来源于stack exchange,提问作者vy8
相关产品推荐
相关产品推荐

