【问题标题】:How to compile a C# DLL from command prompt that references additional assemblies?如何从引用其他程序集的命令提示符编译 C# DLL?
【发布时间】:2009-06-11 11:14:02
【问题描述】:

我创建了一个包含命名空间 SystemSystem.Data 的 C# 控制台应用程序

另外,我加了Microsoft.SqlServer.Smo

当我尝试从命令提示符编译时,错误显示为:

SqlSmoDiscovery.cs(3,27):错误 CS0234: 类型或命名空间名称 '管理' 命名空间“Microsoft.SqlServer”中不存在(是 你错过了 程序集参考?)SqlSmoDiscovery.cs(4,27):错误 CS0234: 类型或命名空间名称 '管理' 命名空间“Microsoft.SqlServer”中不存在(是 你错过了 程序集参考?)

但它是从 Visual Studio 编译的。

我正在从命令提示符编译以将输出作为纯 C# dll。

我在 g 中的项目:

然后我导航到 G:\SqlDisc:> csc /target:library /r Micrsoft.SqlServer.Smo.Dll

SqlSmoDiscovery.cs 但它显示错误为

错误 CS0006:找不到元数据文件“Microsoft.SqlServer.Smo.dll”

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    使用/r 标志从命令行引用其他程序集。

    csc /target:library /r:OtherAssembly.dll Foo.cs
    

    【讨论】:

    • 在此之前将程序集放在同一个文件夹中
    • 不必在编译时将程序集放在同一文件夹中。您可以通过完整路径引用程序集。在运行时,程序集需要可访问:通常在本地目录或 GAC 中。假设您引用了一个 GAC 程序集,那么您可以在 csc.exe 命令中将其指定为 c:\Windows\assembly\GAC\DataGridEx\1.0.1.0__852e0362e1c80f34\DataGridEx.dll 之类的内容。在运行时,GAC 的程序集将被很好地加载,无需将其复制到任何地方。
    【解决方案2】:

    有关详细信息,请参阅the reference for the csc.exe tool

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 2011-04-05
      • 2010-11-22
      • 1970-01-01
      相关资源
      最近更新 更多