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

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

中可用

我喜欢这个 c:\regasm.exe

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

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

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

【问题讨论】:

    标签: .net c++ visual-c++ command-line operating-system


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

      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

      【讨论】:

        【解决方案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

                【讨论】:

                  猜你喜欢
                  • 2018-06-18
                  • 2018-11-08
                  • 1970-01-01
                  • 2010-11-30
                  • 2017-01-27
                  • 1970-01-01
                  • 2015-01-18
                  相关资源
                  最近更新 更多