Нант не может найти сборку в GAC - PullRequest
4 голосов
/ 02 марта 2010

У меня есть проект .Net, в котором используется коннектор MySQL, расположенный в GAC.

В моем файле компоновки Nant, похоже, нет способа сказать CSC искать в GAC, чтобы найти эту dll (или информацию о типе), и мой проект не будет компилироваться.

Есть ли способ сообщить Нанту, что эта ссылка существует и находится в Гаке.

Это действительно странно, потому что, очевидно, все библиотеки Microsoft, например «Система» находится в GAC, и у нее нет проблем со сборкой любых ссылок на них. Я подтвердил, что Mysql Connector также находится в Gac.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 марта 2010

csc ищет библиотеки DLL в текущем каталоге, в каталоге framework, в каталогах, указанных в ключе / lib, в каталогах, указанных в переменной среды LIB.

Но не в GAC. Вы можете скомпилировать csc /r:full_path_to_the_gac_file.dll, это работает, но не очень удобно для пользователя.

.NET сборки устанавливаются в двух местах: в GAC и в каталоге framework (что объясняет, почему они находятся).

Вы должны скопировать нужные DLL-библиотеки в заданный каталог и ссылаться на них с ключом / lib. Конечно, во время выполнения он будет взят из GAC.

0 голосов
/ 28 мая 2012

Другое (более переносимое) решение может быть:

<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.

...