Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何从Visual Studio命令提示符以外的命令行运行regasm.exe?_.net_C++_Visual C++_Command Line_Operating System - Fatal编程技术网

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

.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" 我在批处理文件

我想从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"

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

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版本,请改用以下环境变量:

  • Visual Studio 2008:
    VS90COMNTOOLS
  • Visual Studio 2010:
    VS100COMNTOOLS
  • Visual Studio 2012:
    VS110COMNTOOLS
  • Visual Studio 2013:
    VS120COMNTOOLS
  • Visual Studio 2015:
    VS140COMNTOOLS
  • Visual Studio 2017:
    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的答案的微小更改值得单独使用吗?