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

Posted

技术标签:

【中文标题】如何从 Visual Studio 命令提示符以外的命令行运行 regasm.exe?【英文标题】:How to run regasm.exe from command line other than Visual Studio command prompt? 【发布时间】:2010-11-01 17:11:37 【问题描述】:

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

中可用

我喜欢这个 c:\regasm.exe

它给出了 regasm 不被识别为内部或外部命令

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

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

【问题讨论】:

【参考方案1】:

在命令提示符下:

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

【讨论】:

更好的是:SET PATH "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" @CharlieSomerville 你能修复原件吗?它太小,其他人无法编辑。 如果不添加等号,我无法让它工作。我试图编辑它,但 SO 说编辑太短了。 SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

问题在于您的操作系统可能位于 winnt 或其他文件夹而不是 Windows,因此最好使用 %systemroot% 作为其他响应显示【参考方案4】:

就像 Cheeso 说的:

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

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

【讨论】:

对 Cheeso 的回答的微小改动值得单独修改吗?【参考方案5】:

我在 Visual Studio 中将此用作构建后事件:

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

根据您的 Visual Studio 版本,请改用以下环境变量:

    Visual Studio 2008:VS90COMNTOOLS Visual Studio 2010:VS100COMNTOOLS Visual Studio 2012:VS110COMNTOOLS Visual Studio 2013:VS120COMNTOOLS Visual Studio 2015:VS140COMNTOOLS Visual Studio 2017:VS150COMNTOOLS

【讨论】:

【参考方案6】:

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

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

我真的不喜欢硬编码路径来获得 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

【讨论】:

【参考方案10】:

仅执行以下其中一项 一旦命令起作用,请跳过下面的其余部分:

正常:

%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

【讨论】:

以上是关于如何从 Visual Studio 命令提示符以外的命令行运行 regasm.exe?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Visual Studio 2019 开发人员命令提示符禁用 /Qspectre

如何在命令行中使用 Visual Studio 编译 x64 代码?

gnuplot Makefile 找不到从 Visual Studio 2010 命令提示符编译的 gd.h

如何在 Windows 10 中从命令行构建 Visual Studio 2015 vb 解决方案

将PowerShell用于Visual Studio命令提示符

将 PowerShell 用于 Visual Studio 命令提示符