.net 如何从Visual Studio命令提示符以外的命令行运行regasm.exe?
我想从cmd运行regasm.exe。它在c:\windows\Microsoft.net\framework\2.057中提供 我确实喜欢这个c:\regasm.exe 它使regasm不被识别为内部或外部命令 所以我知道我需要在环境变量中设置regasm.exe的路径 对于哪个变量,我需要如上所述设置运行regasm的路径?在命令提示符下:.net 如何从Visual Studio命令提示符以外的命令行运行regasm.exe?,.net,c++,visual-c++,command-line,operating-system,.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的路径?在命令提示符下: SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" 我在批处理文件
SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727"
我在批处理文件中使用以下内容:
path = %path%;C:\Windows\Microsoft.NET\Framework\v2.0.50727
regasm httpHelper\bin\Debug\httpHelper.dll /tlb:.\httpHelper.tlb /codebase
pause
您不需要路径上的目录。您可以将它放在您的路径上,但不需要这样做。如果您很少调用regasm,或者从批处理文件调用它,您可能会发现通过exe上的完全限定路径名调用regasm更简单,例如:
c:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe MyAssembly.dll
正如奇索所说:
您不需要路径上的目录。你可以把它放在你的道路上,但你不需要这样做。
如果您很少调用regasm,或者从批处理文件调用它,您可能会发现通过exe上的完全限定路径名调用regasm更简单,例如:
c:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe MyAssembly.dll
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm.exe MyAssembly.dll我将此用作Visual Studio中的生成后事件:
call "%VS90COMNTOOLS%vsvars32.bat"
regasm $(TargetPath) /tlb
根据您的Visual Studio版本,请改用以下环境变量:
VS90COMNTOOLS
VS100COMNTOOLS
VS110COMNTOOLS
VS120COMNTOOLS
VS140COMNTOOLS
VS150COMNTOOLS
对于64位RegAsm.exe,您需要在如下位置找到它:
c:\Windows\Microsoft.NET\Framework64\version_number_stuff\regasm.exe
如果使用.net 4.5创建DLL,请在命令提示符下复制并粘贴此命令
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe MyAssembly.dll
通过将dll拖放到“regasm”上,您可以注册它。 您可以打开两个“窗口资源管理器”窗口。其中一个将包含您希望注册的dll。第二个窗口将是“regasm”应用程序的位置。在两个窗口中向下滚动,以便查看dll和“regasm”。 这有助于减小两个窗口的大小,使它们并排。
请确保将dll拖到标有“应用程序”的“regasm”上。有几个“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
仅执行以下一项命令工作后,请跳过下面的其余部分: 正常:
%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位平台上工作
所有选项:
请参见更好:设置路径“%PATH%”;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727“@CharlieSomerville您能修复原始路径吗?它太小了,其他人无法编辑。如果不添加一个等号,我无法让它工作。我试图编辑它,但是说编辑太短了
SET PATH=“%PATH%”;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727
问题在于,您的操作系统可能位于winnt或其他文件夹中,而不是Windows,因此最好使用%SystemRoot%,因为其他响应显示出对Cheeso的答案的微小更改值得单独使用吗?