Вопрос

Я хотел бы надежно автоматически устанавливать мои прикладные сборки в GAC, когда я составляю мое приложение с помощью Visual Studio. Я настроил события до и после сборки в сборке моего веб-приложения.

Предварительное событие:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /ul Uninstall.Gac.txt

Событие Post Build:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /il Install.Gac.txt
%windir%\system32\inetsrv\appcmd.exe recycle apppool -apppool.name:"Sharepoint IIS WebApps"

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

Проблема у меня есть, это то, что это очень ненадежный процесс. Если мое веб-приложение не удается, моя следующая сборка не удастся, потому что удаление потерпит неудачу (после сборки не работает на предыдущем сборке) ... и т. Д.

Я хотел бы сделать этот процесс вспомогательной как можно более надежной. Я хотел бы условно удалить и сборки, если они присутствуют и насильственно устанавливают, независимо от того, есть ли они там или нет ... но событие предварительного сборки все еще важно для следующей причины:

Важный

Важно, чтобы все мои сборки полностью удаляются до того, как состоится сборка, в противном случае они не скопированы в мой выходной каталог (поскольку компилятор находит их в GAC), поэтому установка GAC не может найти сборки в папке «Выход» Bin.

Как я могу надежно сделать удаление GAC и установку в моем веб-приложении?

Это было полезно?

Решение

Вместо этого вспомогательно на инструмент Gacutil, не смог бы вы программировать GAC Install / Uninstall? С кодом вы можете, по крайней мере, полагаться на коды ошибок HResults и соответствующим образом реагируют.

Информация о API GAC можно найти здесь:

http://blogs.msdn.com/b/junfeng/archive/2004/09/14/229649.aspx.

Другие советы

Если сборка добивается успеха, скопируйте выходные сборки в другой каталог и установите в GAC оттуда. А в предварительном сборке используйте этот каталог, чтобы удалить эти сборки из GAC.

Таким образом, там никогда не должно быть никаких собраний в GAC во время компиляции. Вы можете настроить пост-сборку, чтобы скопировать бинары только в том случае, если все они были успешно созданы путем проверки в пакетном файле, если все выходные файлы существуют.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top