4

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

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

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

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

谢谢。

4

2 回答 2

3

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

但在 GAC 中没有。您可以使用 csc /r:full_path_to_the_gac_file.dll 进行编译,它可以工作,但对用户不太友好。

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

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

于 2010-03-02T13:29:36.623 回答
0

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

<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 文档中被标记为已弃用。

于 2012-05-28T12:43:50.260 回答