J'ai créé un simple projet de bibliothèque de classes dans Visual Studio 2008 qui a une classe comme indiqué ci-dessous. J'essaie de faire en sorte que cette classe s'inscrive pour COM interop afin que je puisse l'utiliser via des scripts non gérés comme vbscript ou jscript.J'ai du mal à enregistrer l'assemblage pour COM
Dans mon projet, construire des propriétés que j'ai coché la case qui dit « Enregistrer pour COM Interop ».
Dans les paramètres d'assemblage, j'ai coché "Rendre cet ensemble COM visible" et j'ai confirmé que l'attribut [assembly: ComVisible(true)]
est présent dans le fichier assembly.cs.
Chaque fois que je compile ce projet j'obtiens une erreur qui lit "projectname.dll ne contient aucun type qui peut être enregistré pour COM Interop .En outre, je n'ai pas réussi à créer une instance de classe 1 en utilisant un vbscript. est-ce que quelqu'un sait que cela n'enregistrait correctement?
Mon vbscript ne parvient pas à créer un objet activex sur cette ligne ... Set F = CreateObject("64BitCLTest.Class1")
.
Enfin, comment puis-je VS pour vous inscrire cela dans la zone 64bit le registre au lieu de la zone 32 bits afin que les processus 64 bits peut l'utiliser?
-- The Test Class--
namespace _64BitCLTest
{
[Guid("BBAA06EF-CA4C-4fe2-97CD-9B1D85ADA656")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
[ProgId("64BitCLTest.Class1")]
public class Class1
{
Class1()
{
// do nothing
}
public string Method1()
{
return "This is a return string from method 1";
}
public int Property1
{
get {return 777;}
}
}
}
Cela a fonctionné, mais savez-vous comment l'obtenir pour enregistrer cette assemblée afin que les processus 64 bits peut appeler ainsi que 32 processus de bits? Actuellement, je ne peux que créer à l'aide du cscript dans le dossier SysWOW64 – PICyourBrain
Vous devez vous enregistrer avec la version 64 bits de RegAsm:%% SYSTEMROOT \ Microsoft.NET \ Framework64 \ v2.0.50727 \ RegAsm.exe Honnêtement, je ne sais pas comment faire cela avec les paramètres de csproj. – ConsultUtah
Je sais comment faire des actions personnalisées du programme d'installation. Est-il possible d'appeler ce RegAsm du code C# dans une méthode que j'utilise comme une action personnalisée? – PICyourBrain