编译 C# 程序时是否必须显式引用 SMO 程序集?

Do SMO assemblies have to be explicitely referenced when compiling a C# program?

我正在开发一个使用 Microsoft.SqlServer.Management.Smo 的 c# 程序。为了编译它,我需​​要明确引用相应的程序集:

csc -reference:"c:\Program Files\Microsoft SQL Server0\SDK\Assemblies\Microsoft.SqlServer.Smo.dll" ...

我想知道这是否符合预期。我假设这些程序集在安装 SQL 服务器时以某种方式 "registered"(如果这是正确的术语),以便编译器和运行时环境在需要时找到它们。

如果没有注册,是否可以注册?

在像 Visual Studio 这样的 IDE 中,通常会从“解决方案资源管理器”->“引用”->“添加引用”中添加引用,这些引用会在编译时自动传递给编译器。如果没有支持此功能的 IDE,您必须手动将它们作为命令行参数传递给 csc(就像您正在做的那样)。如果你买不起 VS,你可以选择 VS 的社区版,或者尝试另一个免费的 IDE,比如 MonoDevelop,或者使用像 CMake 这样的构建 script/system 来处理它。