2010-03-17 4 views
2

J'appelle une DLL non managée à partir de mon code C# géré et je voulais vérifier que j'appelais la bonne version.C# obtenant la version d'une DLL non gérée

Le code que je suis en train de charger l'ensemble (pour ensuite obtenir le fichier de ressources et obtenir la version) est: cur_version = Assembly.LoadFile ("X: \ Workspace \ yreceipts_pos \ yRprintProcessor \ Debug \ yRprintProcessor. dll "); Il est défaillant à cause de cette erreur: The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)

Est-ce que quelqu'un sait comment contourner ce problème ou avoir une meilleure façon de vérifier la version d'un dll non géré de gestion du code C#?

Merci à l'avance, Richard

+2

Voir: http://stackoverflow.com/questions/349943/read-a-non-net-dll-version-from-c –

Répondre

6

Comme indiqué par logicnp; L'Assembly.Load est uniquement destiné aux assemblages gérés. Pour déterminer la version d'un fichier-ed version que vous pouvez utiliser System.Diagnostics.FileVersionInfo.GetVersionInfo (nom de fichier) et de charger et appeler des procédures non gérés dans des DLL vous pouvez vous référer à ces articles:

http://blogs.msdn.com/jonathanswift/archive/2006/10/02/780637.aspx http://blogs.msdn.com/jonathanswift/archive/2006/10/03/Dynamically-calling-an-unmanaged-dll-from-.NET-_2800_C_23002900_.aspx

Bonne chance ...

+0

Merci pour cela - je voudrais upvote mais je ne avoir assez de points encore :) –

4

La raison pour laquelle il n'est becuase vous ne pouvez pas utiliser Assembly.Load pour charger dll non gérés. Voir le lien suggéré par David Brown.

Questions connexes