Bonjour à tous,
Ma question est vraiment simple : comment fait-on pour créer une assembly en Delphi .Net car je dois vraiment mal m'y prendre...
Fred
Bonjour à tous,
Ma question est vraiment simple : comment fait-on pour créer une assembly en Delphi .Net car je dois vraiment mal m'y prendre...
Fred
Salut,
sous BDS 2006, Fichier->Nouveau->Autres->Projet pour Delphi.NET->Library.
Mais en tenant compte de ceci :
Dans Developer Studio 2006, un fichier projet (program, library ou package) introduit implicitement son propre espace de nommage, appelé espace de nommage par défaut du projet.
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
Je ne suis pas assez "calé" pour répondre complètement à ta question, mais peut-être trouveras-tu un début de réponse sur ce même forum à la question que j'ai posée.."Problème sous Vista".Envoyé par pinson
Merci Laurent, sauf que maintenant je veux exporter une fonction qui renvoie COUCOU, et là on me dit :
Procédure non protégée autorisée uniquement en compilant avec {$UNSAFECODE ON} (E2395)
Voici mon code :
Mon but est d'exporter surtout une classe. Cette dll doit être utilisé avec d'autres assembly qui sont dvpés en C# et VB.Net.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 library IndexExigence; {%DelphiDotNetAssemblyCompiler 'Interop.Office.dll'} {%DelphiDotNetAssemblyCompiler 'Interop.stdole.dll'} {%DelphiDotNetAssemblyCompiler 'Interop.VBIDE.dll'} {%DelphiDotNetAssemblyCompiler 'Interop.Word.dll'} {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Data.dll'} uses SysUtils, Classes, System.Reflection, System.Runtime.InteropServices, ULRefWord in 'ULRefWord.pas', UCreerIndex in 'UCreerIndex.pas', UGlobal in 'UGlobal.pas'; [assembly: AssemblyTitle('IndexExigence')] [assembly: AssemblyDescription('Création d''un index des exigences dans un fichier word passé en paramètre')] [assembly: AssemblyConfiguration('')] [assembly: AssemblyCompany('SII')] [assembly: AssemblyProduct('')] [assembly: AssemblyCopyright('')] [assembly: AssemblyTrademark('')] [assembly: AssemblyCulture('fr-FR')] // // Les informations de version d'un assemblage sont constituées des quatre valeurs suivantes : // // Major Version (version majeure) // Minor Version (version mineure) // Build Number (numéro de build) // Revision (révision) // // Vous pouvez spécifier toutes les valeurs ou utiliser les valeurs par défaut pour // Revision et Build Numbers en utilisant '*' comme illustré ci-dessous : [assembly: AssemblyVersion('1.0.*')] // // Pour signer un assemblage, vous devez spécifier une clé à utiliser. Reportez-vous // à la documentation de Microsoft .NET Framework pour plus d'informations sur la signature d'assemblage. // // Utilisez les attributs suivants pour contrôler la clé utilisée pour la signature. // // Remarques : // (*) En l'absence de clé, l'assemblage n'est pas signé. // (*) KeyName désigne une clé qui a été installée dans CSP (Crypto Service // Provider) sur votre machine. KeyFile désigne un fichier contenant // une clé. // (*) Si les valeurs de KeyFile et KeyName sont toutes deux spécifiées, le // processus suivant se produit : // (1) Si KeyName est trouvé dans le CSP, cette clé est utilisée. // (2) Si KeyName n'existe pas et KeyFile existe, la clé // de KeyFile est installée dans le CSP et utilisée. // (*) Pour créer un KeyFile, vous devez utiliser l'utilitaire sn.exe (Strong Name). // Quand vous spécifiez KeyFile, l'emplacement du fichier doit être relatif // au répertoire de destination du projet. Si, par exemple, KeyFile est // situé dans le répertoire du projet, vous devez spécifier l'attribut AssemblyKeyFile // comme [assembly: AssemblyKeyFile('mykey.snk')], en supposant que votre // répertoire de destination soit le répertoire du projet (valeur par défaut). // (*) Delay Signing est une option avancée - Voir la documentation // Microsoft .NET Framework pour davantage d'informations. // [assembly: AssemblyDelaySign(false)] [assembly: AssemblyKeyFile('')] [assembly: AssemblyKeyName('')] // // Utilisez les attributs ci-dessous pour contrôler la visibilité COM de votre assemblage. // Par défaut, l'assemblage entier est visible à COM. Définir ComVisible sur false est le // paramètre par défaut recommandé pour votre assemblage. Pour exposer ensuite une classe et // une interface à COM, définissez ComVisible sur true. Il est aussi recommandé d'ajouter un // attribut Guid. // [assembly: ComVisible(False)] //[assembly: Guid('')] //[assembly: TypeLibVersion(1, 0)] function CreerIndex : String; begin result := 'Coucou'; end; exports CreerIndex; begin end.
Je ne comprends rien... Je coyais que cela était super simple....
La clause Exports (Win32) n'est pas nécessaire car les métadonnées insérées par le compilo sont suffisantes.Il faut savoir que ta fonction standalone est transformée en une classe car tout est objet sous .NET.
Donc ta clause Exports indique que ce code sera utilisable hors CLR, dans ce cas il est nécessaire de préciser la directive {$UNSAFECODE ON}.
Si tu compiles en commentant la clause Exports, tu verras sous ILDASM que seul le manifest de l'assembly est modifié (indicateur de code non managé).
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
Ok Laurent, j'avais essayer avant avec une classe mais on ne l'a voit pas de l'extérieur...
Et mon assembly s'appelle SII.IndexExigence, et je n'arrive pas à la mettre dans les uses d'un autre projet, je ne comprends pas pourquoi.
Aurais-tu un exemple d'une assembly et d'un prog qui l'utilise ? Je pense qu'il y a quelques choses que je fais mal...
As-tu essayé de placer cette classe dans une unité et de référencer cette unité ?Envoyé par pinson
Verifie avec ILDasm il est d'un grand secours dans ce cas là.
C'est à dire ? tu ne le retrouve pas dans la selection ? dans ce cas regarde dans la FAQ Delphi. NET.Envoyé par pinson
Quel message d'erreur rencontres-tu ?
Pas sous la main mais si j'ai le temps peut être demain. Tu n'as rien trouvé dans les Démos ? Sinon recherche sur CodeCentral je serais surpris que tu n'y trouves pas un exemple. Sinon place en PJ ton code de test cela ira plus vite.Envoyé par pinson
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
Voici mes sources
Le zip Borland.Zip est mon assembly.
Le zip CreatIndexWord est mon prog, sachant que j'appelle ma dll dans UPrincipal. J'ai bien sûr ajouté la référence de la dll dans mon projet.
Si tu peux m'aider, merci car je suis entrain de tout passer en C#...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager