如何从Visual Studio命令提示符以外的命令行运行regasm.exe?

我想从cmd运行regasm.exe。 它在c:\ windows \ Microsoft.net \ framework \ 2.057中可用

我喜欢这个c:\ regasm.exe

它给予regasm不被认可为内部或外部命令

所以我明白,我需要在环境variables中设置regasm.exe的path。

对于哪个variables,我需要设置path来运行regasm,如上所述?

在命令提示符下:

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

像切索一样说:

你不需要path上的目录。 你可以把它放在你的道路上,但你不需要这样做。 如果您很less调用regasm,或者从batch file中调用regasm,则可能会发现通过exe上的全限定path名调用regasm会更简单,例如:

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

你不需要path上的目录。 你可以把它放在你的道路上,但你不需要这样做。
如果您很less调用regasm,或者从batch file中调用regasm,则可能会发现通过exe文件上的全限定path名调用regasm会更简单,例如:

 c:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe MyAssembly.dll 

如果使用.net 4.5创buildDLL,请将该命令复制并粘贴到CMD窗口

  %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe MyAssembly.dll 

请投票,如果它适合你。 :d

我在Visual Studio中将其用作生成后事件:

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

根据您的Visual Studio版本,请改用这些环境variables:

  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

我在batch file中使用以下内容:

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

我真的不喜欢硬编码的path,当你安装一个新的.Net或运行在不同版本的机器上时,你需要确保你find一个版本的regasm。 这里有一个解决scheme,从最新的.Net安装的regasm中findregasm.exe。

在一个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,你需要find这样的地方:

 c:\Windows\Microsoft.NET\Framework64\version_number_stuff\regasm.exe 

通过将DLL拖放到“regasm”上,您可以注册它。 您可以打开两个“窗口资源pipe理器”窗口。 一个将包含你想注册的DLL。 第二个窗口将是“regasm”应用程序的位置。 在两个窗口中向下滚动,以便您可以看到dll和“regasm”。 这有助于减小两个窗口的大小,使它们并排。 一定要将DLL拖到标有“应用程序”的“regasm”上。 有几个“regasm”文件,但你只需要应用程序。