【问题标题】:Do SMO assemblies have to be explicitely referenced when compiling a C# program?编译 C# 程序时是否必须明确引用 SMO 程序集?
【发布时间】:2019-10-24 15:28:08
【问题描述】:

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

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

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

如果没有注册,可以注册吗?

【问题讨论】:

  • AFAIK,通常会将引用添加到项目中,并且所有此类引用都在命令行上传递给csc。除非程序集在 GAC 中,否则需要这样做。
  • 如果系统上安装的所有DLL都被自动引用,编译时间会飞涨,想想版本问题。为什么要使用命令行编译器开始?
  • @CodeCaster 我认为你的论点意味着如果我必须引用程序集,我的机器上一切正常。我使用命令行是因为我还没有找到可行的替代方案。
  • 使用 Visual Studio Code 还是 Visual Studio Community?然后,您可以制作一个项目文件,在其中组织您的参考资料。所以是的,必须手动告诉编译器您要引用哪些非标准库是正常的。 :)
  • 有许多可用的构建系统。例如:MSBuild、Cake。为什么这些不是可行的解决方案?

标签: c# sql-server .net-assembly


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-11-25
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多