Правильный синтаксис команды gacutil для Azure под управлением Windows Server 2012

У меня есть проект, в котором используется Pkcs12ProtectedConfigurationProvider. Никогда не было проблем с использованием этой dll в лазури при нацеливании на Windows Server 2008 sp2 или r2. Однако, когда я попытался выполнить развертывание на Azure с помощью Windows Server 2012 (osFamily="3"), я получил исключение о том, что сборка не может быть найдена.

Я смутно припоминаю, что столкнулся с этим в эмуляторе, и решение состояло в том, чтобы добавить эту dll в GAC. Я поискал в Google и нашел эти инструкции о том, как для установки библиотеки DLL в GAC в качестве задачи запуска Azure. Все работает, пока у меня есть gacutil и связанный с ним файл .cmd в корне проекта веб-роли. Однако я хочу переместить это в папку приложения /startup, где у меня есть другие команды запуска.

До сих пор мне не удалось заставить это работать. gacutil также не очень полезен, так как я не смог заставить его отображать какой-либо вывод после запуска команд против него. Вот что я пробовал:

в файле csdef:

<Startup>
  <!-- other tasks, such as disabling the IIS idle timeout -->
  <Task commandLine="startup\gacRegistrations.cmd" executionContext="elevated" taskType="simple" />
</Startup>

в файле gacRegistrations.cmd:

gacutil /nologo /i ..\PKCS12ProtectedConfigurationProvider.dll
exit /b 0

Я думаю, что проблема связана с синтаксисом, ссылающимся на местоположение dll в файле cmd. Все соответствующие файлы настроены на действие сборки: нет и копирование в выходной каталог: всегда копировать. Однако файлы gacutil.exe и cmd копируются в папку webrole/bin/startup, тогда как файл PKCS12ProtectedConfigurationProvider.dll находится на 1 папку выше в папке webrole/bin.

Какой здесь правильный синтаксис? Должен ли я попробовать gacutil /nologo /i ..\.\PKCS12ProtectedConfigurationProvider.dll? Как я уже сказал, все работает нормально, когда файлы не вложены в каталог /startup.


person danludwig    schedule 19.11.2012    source источник


Ответы (1)


Текущим каталогом всегда является папка bin, поэтому вы должны попробовать следующее:

startup\gacutil /nologo /i PKCS12ProtectedConfigurationProvider.dll
exit /b 0
person Sandrino Di Mattia    schedule 19.11.2012
comment
Да, это сделало это. Спасибо за помощь. - person danludwig; 20.11.2012