Ошибки строгого имени при запуске Roslyn из исходного кода в Azure

Я пытаюсь запустить веб-роль Azure, которая использует библиотеку Microsoft.CodeAnalysis "Roslyn". Из-за того, что требуются функции, которые были добавлены с момента последней сборки RC, доступной в NuGet, я создаю код из репозитория GitHub, на который я ссылаюсь. Я выполняю сборку, запуская прилагаемый скрипт cibuild.cmd.

Код отлично работает при запуске из программы командной строки, но когда я запускаю веб-роль локально или в Azure, я получаю сообщение об ошибке, например

Не удалось загрузить файл или сборку «Microsoft.CodeAnalysis.CSharp.Features» или одну из ее зависимостей. Не удалось проверить подпись строгого имени. Возможно, сборка была подделана или она была подписана с задержкой, но не полностью подписана правильным закрытым ключом. (Исключение из HRESULT: 0x80131045)

Что имеет смысл... за исключением того, что sn.exe сообщает, что проверка отключена для этого открытого ключа. (EDIT: я проверил записи реестра, чтобы убедиться, что это верно как для 64-битного, так и для 32-битного кода.) Я также пытался использовать утилиту Roslyn FakeSign.exe безрезультатно.

Как заставить последнюю сборку Roslyn работать в контексте веб-роли?


person perelman    schedule 11.06.2015    source источник


Ответы (1)


Убедитесь, что вы используете как 32-битную, так и 64-битную версию sn.exe.

Вероятная проверка пропускается для 32-разрядных процессов, но роль веб-работника выполняется как 64-разрядный процесс.

person Kevin Pilch    schedule 11.06.2015
comment
Я это проверил, но список в реестре под Wow6432Node идентичен обычному. Я обновил вопрос, чтобы так сказать. - person perelman; 11.06.2015
comment
Попробуйте запустить FakeSign -u, чтобы удалить поддельный бит подписи во всех ваших встроенных двоичных файлах. В этот момент у вас будут двоичные файлы с отложенной подписью, и должен сработать пропуск проверки. - person pharring; 13.06.2015