Comment exécuter regasm.exe à partir d’une ligne de commande autre que l’invite de commandes Visual Studio?

Je veux exécuter regasm.exe à partir de cmd. qui est disponible dans c: \ windows \ Microsoft.net \ framework \ 2.057

J’aime bien c: \ regasm.exe

Il donne regasm n’est pas reconnu comme commande interne ou externe .

J’ai donc compris que je devais définir le chemin de regasm.exe dans la variable d’environnement.

Pour quelle variable dois-je définir le chemin pour exécuter le programme tel que décrit ci-dessus?

Dans l’invite de commande:

SET PATH = "%PATH%;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" 

Comme Cheeso a dit:

Vous n’avez pas besoin du répertoire sur votre chemin. Vous pouvez le mettre sur votre chemin, mais vous n’avez pas besoin de le faire. Si vous appelez rarement regasm, ou si vous l’appelez depuis un fichier de commandes, vous pouvez trouver plus simple d’appeler simplement regasm via le chemin complet de l’exe, par exemple:

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

Vous n’avez pas besoin du répertoire sur votre chemin. Vous pouvez le mettre sur votre chemin, mais vous n’avez pas besoin de le faire.
Si vous appelez rarement regasm, ou si vous l’appelez depuis un fichier de commandes, vous pouvez trouver plus simple d’appeler simplement regasm via le chemin complet de l’exe, par exemple:

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

Si vous avez créé la DLL à l’aide de .net 4.5, copiez et collez cette commande à l’invite de commandes.

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

Je l’utilise comme événement post-construction dans Visual Studio:

 call "%VS90COMNTOOLS%vsvars32.bat" regasm $(TargetPath) /tlb 

Selon votre version de Visual Studio, utilisez plutôt ces variables d’environnement:

  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

J’utilise les éléments suivants dans un fichier de commandes:

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

Je n’aime vraiment pas le codage en dur des chemins d’access à regasm, lorsque vous installez un nouveau .Net ou que vous utilisez une machine avec une version différente, vous devez vous assurer de trouver une version de regasm. Voici une solution pour trouver le regasm.exe à partir du plus récent regasm installé .Net .

Dans un fichier 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 

En dehors d’un fichier bat (c.-à-d. Invite de commande), utilisez simplement %a au lieu de %%a

Pour le RegAsm.exe 64 bits, vous devrez le trouver quelque part comme ceci:

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

En faisant glisser le fichier dll sur «regasm», vous pouvez l’enregistrer. Vous pouvez ouvrir deux fenêtres “Windows Explorer”. On contiendra la dll que vous souhaitez enregistrer. La 2ème fenêtre sera l’emplacement de l’application ‘regasm’. Faites défiler vers le bas dans les deux fenêtres pour avoir une vue à la fois de la DLL et du «regasm». Cela permet de réduire la taille des deux fenêtres afin qu’elles soient côte à côte. Assurez-vous de faire glisser la DLL sur le “regasm” qui est étiqueté “application”. Il y a plusieurs fichiers ‘regasm’ mais vous ne voulez que l’application.

Exécuter seulement 1 des ci-dessous
Une fois qu’une commande fonctionne, ignorez le rest / ci-dessous:

Ordinaire:

 %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 

Seulement si vous rencontrez des problèmes, utilisez l’ancienne version ‘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 

Seulement si vous avez construit myTest.dll pour 64 bits seulement, utilisez le chemin d’access «Framework64»:

 %SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe myTest.dll %SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe myTest.dll 

Remarque: les DLL construites sur 64 bits ne fonctionneront pas sur une plate-forme 32 bits.

Toutes les options:

Voir https://docs.microsoft.com/en-us/dotnet/framework/tools/regasm-exe-assembly-registration-tool