Ответ 1
В командной строке:
SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727"
Я хочу запустить regasm.exe из cmd. который доступен в c:\windows\Microsoft.net\framework\2.057
Мне нравится это c:\regasm.exe
Это дает regasm не распознается как внутренняя или внешняя команда.
Итак, я понял, что мне нужно установить путь для regasm.exe в переменной среды.
Для какой переменной мне нужно установить путь для запуска regasm, как описано выше?
В командной строке:
SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727"
Как сказал Cheeso:
Вам не нужен каталог на вашем пути. Вы можете поместить его на свой путь, но вам НЕ НУЖНО это сделать. Если вы редко вызываете regasm или вызываете его из командного файла, вы можете обнаружить, что проще просто вызвать regasm через полностью квалифицированный путь на exe, например:
% SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm.exe MyAssembly.dll
Вам не нужен каталог на вашем пути. Вы можете поместить его на свой путь, но вам НЕ НУЖНО сделать это.
Если вы редко вызываете regasm или вызываете его из командного файла, вы можете обнаружить, что проще просто вызвать regasm через полностью квалифицированный путь на exe, например:
c:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe MyAssembly.dll
Если вы создали DLL с помощью .net 4.5, скопируйте и вставьте эту команду в командную строку.
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe MyAssembly.dll
Я использую это как событие post-build в Visual Studio:
call "%VS90COMNTOOLS%vsvars32.bat"
regasm $(TargetPath) /tlb
В зависимости от вашей версии Visual Studio вместо этого используйте эти переменные среды:
VS90COMNTOOLS
VS100COMNTOOLS
VS110COMNTOOLS
VS120COMNTOOLS
VS140COMNTOOLS
VS150COMNTOOLS
Я использую следующее в пакетном файле:
path = %path%;C:\Windows\Microsoft.NET\Framework\v2.0.50727
regasm httpHelper\bin\Debug\httpHelper.dll /tlb:.\httpHelper.tlb /codebase
pause
Мне очень не нравится жесткое кодирование путей, чтобы добраться до regasm, когда вы устанавливаете новую .Net или запускаете на машине с другой версией, вам нужно убедиться, что вы найдете версию regasm. Здесь находится решение найти regasm.exe из самой текущей .Net установленной regasm.
В файле bat:
for /f %%a in ('dir %windir%\Microsoft.Net\Framework\regasm.exe /s /b') do set currentRegasm="%%a"
%currentRegasm% "full\path\to\your.dll" /options
Вне файла bat (т.е. командной строки) просто используйте %a
вместо %%a
Для 64-разрядного RegAsm.exe вам нужно будет найти его в таком месте:
c:\Windows\Microsoft.NET\Framework64\version_number_stuff\regasm.exe
Перетаскивая dll на "regasm" , вы можете зарегистрировать его. Вы можете открыть два окна Window Explorer. Один будет содержать dll, который вы хотите зарегистрировать. Второе окно будет расположением приложения "regasm" . Прокрутите вниз в обоих окнах, чтобы вы могли видеть как dll, так и "regasm" . Это помогает уменьшить размер двух окон, чтобы они были бок о бок. Обязательно перетащите DLL поверх "regasm" , помеченного как "приложение". Существует несколько файлов "regasm" , но вы хотите только приложение.
Выполнить только 1 из следующих
Как только команда сработает, пропустите остальные/ниже:
Нормальный:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe myTest.dll
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe myTest.dll /tlb:myTest.tlb
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe myTest.dll /tlb:myTest.tlb /codebase
Только если у вас возникли проблемы, используйте старую версию v2.0.50727:
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe myTest.dll
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe myTest.dll /tlb:myTest.tlb
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe myTest.dll /tlb:myTest.tlb
Только если вы создали myTest.dll только для 64-битной версии, используйте путь Framework64:
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe myTest.dll
%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe myTest.dll
Примечание: 64-битные dll не будут работать на 32-битной платформе.
Все варианты:
См. Https://docs.microsoft.com/en-us/dotnet/framework/tools/regasm-exe-assembly-registration-tool