2012-06-04 45 views
1

J'ai une assemblée, qui fonctionne très bien sur mon pc, mais lorsque je tente de le référencer sur une machine virtuelle, j'obtiens l'erreur suivante:Comment faire entièrement confiance à un assemblage non-signé?

System.IO.FileNotFoundException: Could not load file or assembly 'X.dll' or one of its ependencies. The specified module could not be found. 
File name: 'X.dll' 
    at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark&stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) 
    at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm,Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark) 
    at System.Reflection.Assembly.LoadFrom(String assemblyFile) 
    at kernelLoader.Program.Main(String[] args) 

Je suis absolument sûr que le fichier est à l'emplacement spécifié, et le code fonctionne bien sur ma propre machine (où elle a été développée). Il est compilé avec tous les assemblys référencés pour la plate-forme x86.

Je pense que l'erreur peut être provoquée par le fait que l'assembly n'est pas entièrement sécurisé.

Je ne peux pas chanter fort l'ensemble, car il fait référence à plusieurs assemblées, qui ne sont pas chantées, et auxquelles je n'ai pas le code ni les droits de modification.

Je soupçonne qu'il y a un bon moyen de faire confiance à un assemblage sur la machine où je l'utilise.

Comment est-ce que je marque un assembly comme étant fiable afin qu'il puisse être chargé et exécuté?

+1

Vérifiez s'il existe un troisième assembly qui manque sur lequel 'X.dll' dépend. Votre application-> X.dll-> manquant. – cloggins

+0

Je l'ai fait avec un réflecteur. Toutes les assemblées semblent être présentes. En outre, dans l'exception, X.dll est marqué comme manquant (Nom de fichier: 'X.dll') –

+0

Copiez à nouveau le fichier, il peut avoir été rompu lors de la copie. –

Répondre

1

Cette exception est généralement provoquée par une DLL manquante. Une chose qui peut être utilisée est ProcMon. Lorsque la DLL manquante est chargée et qu'une erreur est survenue, le nom du fichier doit apparaître dans ProcMon.

Questions connexes