Как запустить regasm.exe из командной строки командной строки?

Я хочу запустить regasm.exe из cmd. который доступен в c:windowsMicrosoft.netframework2.057

Мне нравится этот c: regasm.exe

дает regasm не распознается как внутренняя или внешняя команда.

Так я понял, что мне нужно задать путь к regasm.exe в переменной окружения.

для какой переменной мне нужно установить путь для запуска regasm, как описано выше?

10 ответов


в командной строке:

SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727"

Как Cheeso сказал:

вам не нужен каталог на вашем пути. Вы можете поставить его на свой путь, но вам не нужно этого делать. Если вы вызываете regasm редко или вызываете его из пакетного файла, вы можете найти, что проще просто вызвать regasm через полное имя пути на exe, например:

%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm.exe Миассембли.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

Я использую это как событие после сборки в Visual Studio:

call "%VS90COMNTOOLS%vsvars32.bat"
regasm  $(TargetPath) /tlb

в зависимости от версии Visual Studio вместо этого используйте следующие переменные среды:

  1. Visual Studio 2008:VS90COMNTOOLS
  2. Visual Studio 2010:VS100COMNTOOLS
  3. Visual Studio 2012:VS110COMNTOOLS
  4. Visual Studio 2013:VS120COMNTOOLS
  5. Visual Studio 2015:VS140COMNTOOLS
  6. Visual Studio 2017: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 с самые актуальные .Сети установлен 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, которую вы хотите зарегистрировать. 2-е окно будет расположение приложения "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 только для 64bit, используйте путь "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