Nant无法在全局程序集缓存中找到程序集

4
我有一个使用MySQL连接器的.NET项目,该连接器位于GAC中。
在我的Nant构建文件中,似乎没有办法告诉CSC在GAC中查找此dll(或类型信息),因此我的项目无法构建。
是否有一种方法告诉Nant这个引用确实存在,并且它在Gac中。
真的很奇怪,因为显然所有Microsoft库,例如“System”,都在Gac中,而它没有问题构建任何引用这些库的内容。我已确认Mysql Connector也在Gac中。
谢谢。

2
我建议委托给msbuild进行实际编译。 - Mauricio Scheffer
这正是所需的。现在使用MSBuild一切都构建得很好。 - Remotec
2个回答

3

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

但不会在GAC中查找。您可以使用csc /r:full_path_to_the_gac_file.dll进行编译,但这并不是很用户友好的方法。

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

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


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接