【问题标题】:Nant cant find assembly in the GACNant 在 GAC 中找不到程序集
【发布时间】:2010-03-02 12:15:20
【问题描述】:

我有一个 .Net 项目,它使用位于 GAC 中的 MySQL 连接器。

在我的 Nant 构建文件中似乎没有办法告诉 CSC 在 GAC 中查找此 dll(或类型信息)并且我的项目不会构建。

有没有办法告诉 Nant 这个引用确实存在并且它在 Gac 中。

它真的很奇怪,因为显然所有的 Microsoft 库,例如“系统”在 Gac 中,并且在构建任何引用这些内容时没有问题。我已经确认 Mysql 连接器也在 Gac 中。

谢谢。

【问题讨论】:

  • 我建议委托 msbuild 进行实际编译
  • 这正是我们所需要的。现在它使用 MSBuild 一切都很好。

标签: c# .net nant mysql-connector


【解决方案1】:

csc 在当前目录、框架目录、/lib 开关中提到的目录、LIB 环境变量中提到的目录中查找 DLL。

但在 GAC 中没有。你可以用 csc /r:full_path_to_the_gac_file.dll 编译,它可以工作,但不是很友好。

.NET 程序集安装在两个位置:GAC 和框架目录(这解释了为什么会找到它们)。

您应该将所需的 DLL 复制到给定目录中,并使用 /lib 开关引用它。当然,在运行时,它将从 GAC 获取。

【讨论】:

    【解决方案2】:

    另一个(更便携的)解决方案可能是:

    <csc output="../bin/output.dll" target="library">
     <references>
      <include name="\%windir%\assembly\AForge.dll" />
     </references>
     <sources>
      <include name="**/*.cs" />
     </sources>
    </csc>
    

    您也可以使用 lib 标签将 \%windir\assembly 添加到搜索路径,但它在 NAnt 文档中被标记为已弃用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多