繁体   English   中英

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

[英]How to run regasm.exe from command line other than Visual Studio command prompt?

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

像Cheeso说:

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

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

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

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

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

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

我在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

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

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

我真的不喜欢硬编码路径来解决问题,当你安装新的.Net或在不同版本的机器上运行时,你需要确保找到一个版本的regasm。 installed regasm. 这是从安装的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

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

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

通过将dll拖放到'regasm'上,您可以注册它。 您可以打开两个“Window Explorer”窗口。 一个将包含您要注册的DLL。 第二个窗口将是'regasm'应用程序的位置。 在两个窗口中向下滚动,以便您可以看到dll和'regasm'。 它有助于减小两个窗口的尺寸,使它们并排放置。 务必将dll拖到标有“application”的'regasm'上。 有几个'regasm'文件但你只想要应用程序。

仅执行以下1项
命令工作后,跳过其余/下面的内容:

正常:

%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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM