2016-06-16 2 views
1

В каждом компиляторе выходная dll изменяется в моей программе, и после каждой компиляции я должен снова зарегистрировать dll. Я могу зарегистрировать его через Командная строка Visual Studio как regasm mydll.dll. Но я не хочу делать это каждый раз, и я хочу, чтобы это было автоматически. После некоторого исследования я обнаружил, что с Visual Studio можно использовать События сборки (проект> свойства). Но я никогда не использовал Build Events раньше, и я действительно не могу понять, как это будет. Должен ли я писать свой путь к dll до командной строки для построения событий?Как зарегистрировать DLL с RegAsm в Build EventS VS2013

Моя длл местоположение: C: \ Program Files (x86) \ Onur \ Client \ Bin \ client.dll

Мой Regasm местоположение: C: \ Windows \ Microsoft.NET \ Framework64 \ v4. 0.30319 \ RegAsm.exe

Что следует писать для команд предварительной сборки и пост-сборки в разделе «События сборки»?

Я попробовал их, но даже не скомпилировал в нем. VS Post Build Event

+1

Более важная деталь, которую вы должны позаботиться, - это * отмена регистрации * старой версии. Если вы этого не сделаете, вы можете сделать довольно большой беспорядок в вашем реестре. Учитывая общую потребность, все это позаботится о вас с помощью простого флажка. Project> Properties> вкладка Build> отметьте «Регистрация для COM-взаимодействия». В любом случае эти ключи реестра могут быть изменены только с помощью повышенной программы, поэтому вы * должны * поднять VS. Щелкните правой кнопкой мыши ярлык и выберите «Запуск от имени администратора». –

+0

Привет, Ханс, Спасибо за ответ. Я проверил эту коробку, и я понимаю, что я должен отменить регистрацию - зарегистрировать dll в каждой сборке проекта. Я последую за вашим ответом и дам вам знать результат в ближайшее время – onur

ответ

1

Исполняемый файл RegAsm находится в папке версии .Net Framework, но по умолчанию это не по умолчанию.

К счастью, существуют две переменные среды, а именно FrameworkDir и FrameWorkVersion, которые вы могли бы использовать в своем событии Post-build. Документация MSDN объясняет, как использовать Environment Variables.

Для вашего конкретного случая, следующий делает работу в случае после сборки (потому что ваша новая потребность длл быть скомпилирован и готов):

$(frameworkdir)\$(frameworkversion)\regasm.exe "$(TargetPath)" 

Обратите внимание, как $(TargetPath) заключена в двойные кавычки, чтобы предотвратить любые ошибки в случае, если на вашем пути есть место.

Имейте в виду, что RegAsm требует повышенных привилегий, поэтому вам нужно будет запустить Visual Studio, уже повышенную, чтобы в первую очередь выполнить выполнение RegAsm.

Используйте панель «Сборка вывода» для диагностики ошибок.

+0

Привет Рене Спасибо за ответ. Я написал в раздел PostBuild: ** $ (frameworkdir) \ $ (frameworkversion) \ regasm.exe "$ (C: \ Program Files (x86) \ Onur \ Client \ Bin \ client.dll)" ** Но он не компилируется. Но в списке ошибок визуальной студии нет ошибки. Результат вывода -> https://snag.gy/vJ8uxK.jpg Где я могу пропустить? Спасибо – onur

Смежные вопросы