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

Я хочу запустить regasm.exe из cmd. который доступен в c: \ windows \ Microsoft.net \ framework \ 2.057

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

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

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

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


person Cute    schedule 10.06.2009    source источник


Ответы (10)


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

SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727"
person anonymous coward    schedule 10.06.2009
comment
Еще лучше: SET PATH% PATH%;% SystemRoot% \ Microsoft.NET \ Framework \ v2.0.50727 - person Ries; 04.09.2009
comment
@CharlieSomerville Не могли бы вы исправить оригинал? Он слишком мал, чтобы его мог редактировать кто-то другой. - person Carl Onager; 02.04.2013
comment
Я не мог заставить это работать, не добавив равных. Я попытался отредактировать его, но ТАК сказал, что редактирование было слишком коротким. SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727 - person KevM; 05.06.2015

Как сказал Чизо:

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

% SystemRoot% \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe MyAssembly.dll

person Ries    schedule 04.09.2009
comment
Стоит ли отдельное изменение в ответе Чизо? - person xehpuk; 11.02.2015

Вам не нужен каталог на вашем пути. Вы можете поместить его на свой путь, но вам НЕ НУЖНО этого делать.
Если вы вызываете regasm редко или вызываете его из командного файла, вы можете обнаружить, что проще просто вызвать regasm через полностью- квалифицированный путь к exe, например:

c:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe   MyAssembly.dll
person Cheeso    schedule 10.06.2009
comment
Проблема в том, что ваша ОС может быть в winnt или какой-либо другой папке вместо Windows, поэтому лучше использовать% systemroot%, как показывают другие ответы. - person Alex; 05.11.2010

Если вы создали DLL с помощью .net 4.5, скопируйте и вставьте эту команду в командную строку.

 %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe MyAssembly.dll
person Edwin O.    schedule 31.07.2014

Я использую это как событие после сборки в 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
person Unrumpf    schedule 05.03.2010

В пакетном файле я использую следующее:

path = %path%;C:\Windows\Microsoft.NET\Framework\v2.0.50727
regasm httpHelper\bin\Debug\httpHelper.dll /tlb:.\httpHelper.tlb /codebase
pause
person Patrick    schedule 10.06.2009

Мне очень не нравится жесткое кодирование путей для перехода к 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

person Scott C    schedule 28.02.2017

Выполните только одно из следующих:
Как только команда заработает, пропустите остальные / ниже:

Нормальный:

%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.

person Manohar Reddy Poreddy    schedule 27.07.2018

Для 64-битного RegAsm.exe вам нужно будет найти его где-нибудь вроде этого:

c:\Windows\Microsoft.NET\Framework64\version_number_stuff\regasm.exe
person Jiminion    schedule 02.06.2014

Путем перетаскивания dll на regasm вы можете зарегистрировать его. Вы можете открыть два окна Window Explorer. Один будет содержать DLL, которую вы хотите зарегистрировать. Во 2-м окне будет расположено приложение «регазм». Прокрутите вниз в обоих окнах, чтобы увидеть как dll, так и regasm. Это помогает уменьшить размер двух окон, чтобы они располагались рядом. Обязательно перетащите dll на «regasm» с надписью «application». Есть несколько файлов regasm, но вам нужно только приложение.

person OldProgrammer    schedule 18.09.2015