Powershell 2.0-Runtime-Ausnahme: konnte nicht geladen, Datei oder assembly

Dem Szenario, das ich bin versucht zu korrigieren, ist eine, in welche dlls gefunden werden, wenn C# wird kompiliert, aber nicht gefunden, wenn der c# - code ausgeführt wird. Dies ist die Powershell 2.0. Unsere Politik ist, nicht über das GAC. Der c# - code in eine Powershell-Funktion ist ähnlich wie diese:

function functionDef
{
  [System.Reflection.Assembly]::LoadFrom("c:\myDir\func1.dll")
  [System.Reflection.Assembly]::LoadFrom("c:\myDir\func2.dll")

  $ref = @("c:\myDir\func1.dll","c:\myDir\func2.dll")

  $cCode = @"
    using System;
    using func1;
    using func2;

    namespace serializedDef
    {
       public class defSerialization
       {

          public defSerialization () {}

   <# 
             method and properyty defs not included
          #>

          public double setSpec {
  set { computeDef(value)}
  get {return spefDef}
          }

   private double computeDef ( double value)
   {
            <# calls to methods in DLLS loaded above
             #>
   }
       }
    }
 "@
 add-type -ReferencedAssemblies $ref -TypeDefinition $cCode -passthru - Language CSharpVersion3 | out-null
}

Wenn diese Funktion aufgerufen wird, die den c# - code kompiliert wird mit Fehler,.

Füge ich den Pfad zu den beiden referenzierten DLLS, um die $env:path Wert. Es ist ein 3rd-party-DLL-DLL-Pfad installiert an einem anderen Ort; dieser Weg ist auch Hinzugefügt, um die $env:path. Die Berechtigungen für beide Wege sind weit offen für jedermann zu Testzwecken.

Ich dann die Instanz der C# - code als neues Objekt:

 $myObject = new-object serializedDef.defSerialization

Wenn ich zum aufrufen der Funktion:

 $myObject.setSpec = 35.5

Bekomme ich die Fehlermeldung:

Exception setting "setSpec": "Could not load  file or assmbly
'func1', Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0a7c34216660f47' or one of its dependencies. The system cannot find the file specified."
At line:1 char:11
+ $myObject. <<< setSpec = 35.5
  + CategogyInfo          : InvalidOperation: (:) [], RuntimeException
  + FullyQualifedErrorId  : PropertyAssignmentException

Mein Verständnis ist, dass der Fehler wahrscheinlich bezieht sich auf eine Methode oder ähnliches, die eine Dll verweist, die nicht gefunden werden kann. Wie kann ich das aufspüren?

  • Mit fusglow ich die Fehlermeldung wird darauf hingewiesen, wie 'Bindung an native image Montage nicht erfolgreich. Verwenden IL Bild'. Vage verstehen die Botschaft, aber nicht wissen, wie Sie die Implementierung der änderungen erforderlich.
InformationsquelleAutor user459866 | 2010-11-23
Schreibe einen Kommentar