Auteur de questions
Création et utilisation en C#

Discussion générale
-
Bonjour,
Je souhaiterais créer et utiliser une dll développée en C#.
J'ai déjà développé des solutions en C# contenant des dll, mais là je souhaiterais juste avoir des dll dans mon projet, pour par exemple les utiliser dans Excel avec:Code Excel VBA:
Declare PtrSafe Function test Lib "testLib" Alias "testA" (ByVal a As integer) As integer
Code dll en C#:
namespace test_namespace{ public static class ClassTest { public static int test(int a) { return a * 2; } } }
Mon problème c'est que je ne connais pas tout les détails auxquels il faut être attentif ni comment bien paramétré mon projet: importance du namespace ou de la classe,inscrire au COM, référencer la dll avec regSrv (x32 ou x64), comment distribuer ma dll sur d'autre poste...
En gros, j'ai une vague idée de comment ça devrait fonctionner... mais ça ne fonctionne pas... Pouvez-vous m'aider?
- Type modifié Aurel Bera mercredi 22 mai 2013 14:09 Discussion
Toutes les réponses
-
Bonjour Nicoulou
Une solution reste de configure le dll comme COM:
Le code sera:
using System.Runtime.InteropServices; namespace TestDLL { public class Class1 { [ComVisible(true)] public string Test() { return "quelque chose"; } } }
Vous devez aussi cocher dans la configuration de projet comme dans l'image:
Maintenant vous devez ajouter la reference pour ce DLL et l'utiliser après:Dim tm As TestDLL.Class1 Dim foo As String Set tm = New TestDLL.Class1 foo = tm.testMethod
Cordialement, -
Merci pour cette réponse.
Je n'arrive cependant pas à référencer mon DLL:
- Lorsque j'utilise parcourir depuis Excel, j'ai un message d'erreur VBA : "Impossible d'ajouter une référence au fichier spécifié"
- Lorsque j'utilise RegAsm, j'ai le message suivant : "RegAsm : warning RA0000 : Aucun type n'était inscrit"
Quelle est la bonne méthode pour référencer et distribuer ma dll?
-
Si je me rappelle bien, vous devez utiliser regsvr32 pour enregistrer comme COM et après l’utiliser dans Excel/VBA.
Cordialement
-
-
J'ai réussi avec RegAsm à référencer ma dll en jouant avec les options /codebase et /tbm. J'ai donc pu faire dans Excel "Outils>Références" et choisir ma dll.
Mais en utilisant l'exemple, j'ai un message d'erreur au niveau de "Dim tm As TestDLL.Class1 ":
Erreur de compilation:
Type défini par l'utilisateur non défini
-
Bonjour
Executez regsvr32 comme administrateur.
Cordialement,
-
Bonjour
Avez-vous des nouvelles pour nous?
Merci
Cordialement,
-
Bonjour,
Nous changeons le type de votre question à « Discussion générale » parce que vous n’êtes pas revenu avec les informations sollicitées. Si vous avez plus de temps pour réexaminer la question et fournir plus d'informations, n'hésitez pas à modifier le type du thread à « Question ». Si le problème est résolu, s’il vous plaît partagez la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires.
Merci !
Cordialement,