Подтвердить что ты не робот

Как я могу профилировать подписанные сборки с VS 2010 или VS 2013

У меня есть сайт, который использует AjaxControlToolkit.dll и Log4Net.dll.

Когда я пытаюсь запустить инструмент профилирования производительности в VS 2010, он дает мне следующее предупреждение:

AjaxControlToolkit.dll подписал и установил, что это приведет к аннулированию его подписи. Если вы продолжите без события после инструмента, чтобы повторно подписать двоичный файл, он может неправильно загрузиться.

Теперь, если я выберу вариант для продолжения без повторной подписи, начинается профилирование, но сборка не загружается и дает исключение ASP.NET.

4b9b3361

Ответ 1

Если вы делаете это на машине разработки, вы можете полностью отключить проверку имени с помощью sn -Vr *. Если вы это сделаете, вам не нужно ничего уходить. Этот подход может представлять угрозу безопасности, но если вам это удобно, это проще, чем уйти в отставку.

В частности, из MSDN говорится:

Регистрирует сборку для пропуска проверки. При желании вы можете указать список имен пользователей, разделенных запятыми. Если вы укажете infile, проверка остается включенной, но открытый ключ в infile используется в операциях проверки. Сборка может быть указана в форме *, strongname для регистрации всех сборок с указанным сильным именем. Строковое имя должно быть указано как строка шестнадцатеричных цифр, представляющих символическую форму открытого ключа. См. Опции -t и -T для отображения токена открытого ключа.

И риск безопасности:

Внимание: используйте этот параметр только во время разработки. Добавление сборки в список проверки пропуска создает уязвимость безопасности. В вредоносной сборке может использоваться полностью указанное имя сборки (имя сборки, версия, культура и токен открытого ключа) сборки, добавленной в список проверки пропуска, чтобы подделать ее идентификатор. Это позволит злоумышленнику также пропустить проверку.

Ответ 3

Ответ описан здесь. Вы должны использовать событие после инструмента для каждой подписанной сборки.

Мне не удалось заставить его работать "как есть" с моей установкой VS 2010. Мне пришлось вызывать эту командную строку как событие post-build для каждой dll:

"C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"   & sn -Ra [pathOfDll] [pathOfSNK]

Обратите внимание, что [pathOfDll] находится в каталоге obj\Debug, связанном с проектом.

Ответ 4

Самый простой способ получить инструментальную работу над подписанными двоичными файлами, которые не были повторно подписаны, заключается в том, чтобы полностью отключить проверки подписи. Это настраиваемая машина, которую вы можете активировать, зарегистрировав исключение для шаблона *:

sn.exe -Vr *

Эта команда должна быть выполнена из командной строки с повышенными правами. Вы найдете sn.exe в SDK (в моем случае я нашел его в C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin).

Когда вы закончите тестирование, вы должны отменить регистрацию исключения:

sn.exe -Vu *

иначе ваш компьютер может быть уязвим для вредоносного кода, поскольку сборкам будет доверять, даже если они были подделаны.

См. также Доступ запретил запуск sn.exe в Windows 7.

Ответ 5

Профилировщик, вероятно, изменяет сборку и потому что она была ранее подписана. По-видимому, вам нужно добавить действие после инструмента, которое повторно подписывает сборку.

Это может быть проблемой, потому что у вас нет файла sn, который использовался для подписывания сторонних сборок.

Ответ 6

Возможно, вы взяли ленивый путь обучения, но ничего не изменили, но я решил решить эту проблему, написав powershell script, чтобы отладить все проекты в моем решении - работал отлично. Как часть script, я сохраняю исходные файлы csproj, поэтому я могу их вернуть. (вы также можете просто отменить изменения в управлении источником).

http://pastebin.com/UbABvz7d

должен иметь возможность вернуться, вызвав его передачу переключателя -revert.