如何从 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 解决方案