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

时间:2009-06-10 06:11:14

标签: .net c++ visual-c++ command-line operating-system

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

中找到

我喜欢这个c:\ regasm.exe

它使 regasm不被识别为内部或外部命令

所以我明白我需要在环境变量中设置regasm.exe的路径。

如上所述,我需要为哪个变量设置运行regasm的路径?

10 个答案:

答案 0 :(得分:40)

在命令提示符中:

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

答案 1 :(得分:36)

像切索所说:

  

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

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

答案 2 :(得分:16)

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

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

答案 3 :(得分:15)

如果使用.net 4.5创建DLL,则在命令提示符下复制并粘贴此命令。

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

答案 4 :(得分:7)

我在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

答案 5 :(得分:2)

我在批处理文件中使用以下内容:

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

答案 6 :(得分:1)

我真的不喜欢硬编码的路径,当你安装新的.Net或在不同版本的机器上运行时,你需要确保找到一个版本的regasm。这是从最新.Net 安装的regasm中找到regasm.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

答案 7 :(得分:0)

对于64位RegAsm.exe,您需要在以下位置找到它:

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

答案 8 :(得分:0)

通过将dll拖放到'regasm'上,您可以注册它。 您可以打开两个“Window Explorer”窗口。一个将包含您要注册的DLL。第二个窗口将是'regasm'应用程序的位置。在两个窗口中向下滚动,以便您可以看到dll和'regasm'。 它有助于减小两个窗口的尺寸,使它们并排放置。 务必将dll拖到标有“application”的'regasm'上。有几个'regasm'文件但你只想要应用程序。

答案 9 :(得分:0)

仅执行以下其中一项
命令生效后,跳过下面的其余部分:

正常:

%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 

仅当仅针对64位构建myTest.dll时,才使用“ 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