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

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

问题描述:

我想从cmd运行regasm.exe。这是在C语言中:\ WINDOWS \ Microsoft.net \框架\ 2.057如何从Visual Studio命令提示符以外的命令行运行regasm.exe?

我做这样的C:\ regasm.exe

它给regasm未被识别为内部或外部命令

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

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

在命令提示符:

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

更妙的是:SET PATH“%PATH%;%SYSTEMROOT%\ Microsoft.NET \ Framework \ v2.0.50727“ – Ries 2009-09-04 08:33:19

+3

@CharlieSomerville你可以修复原来的问题吗?对于别人来说编辑太小了。 – 2013-04-02 10:43:00

+0

我无法在没有添加等于的情况下使其工作。我试图编辑它,但是SO表示编辑太短。 `SET PATH ='%PATH%;%SystemRoot%\ Microsoft.NET \ Framework \ v2.0.50727` – KevM 2015-06-05 17:24:48

我用一个批处理文件如下:

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

你不需要您的路径上的目录。你可以把它放在你的道路上,但你不需要这样做。
如果你很少打电话regasm,或从一个批处理文件调用它,你会发现它是简单的通过完全合格的路径名只是调用regasm上的exe,如:

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

像Cheeso说:

您不需要路径上的目录。你可以把它放在你的道路上,但你不需要这样做。 如果你很少打电话regasm,或从一个批处理文件调用它,你会发现它是简单的通过完全合格的路径名只是调用regasm上的exe,如:

的%SystemRoot% \ Microsoft.NET \框架\ V2.0.50727 \ regasm.exe MyAssembly.dll程序

我用这个作为在Visual Studio生成后事件:

根据您的Visual Studio版本,使用THES Ë环境变量来代替:

  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

对于64位RegAsm。exe文件,你需要某个地方找到这样的:

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

,如果您使用.NET 4.5,复制并粘贴在CMD窗口此命令

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

请投票,如果你的作品的DLL 。 :D

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

我真的不喜欢硬编码的路径,当你安装一个新的.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