Hallo,
ich stehe seit gestern vor folgendem Problem und komme leider nicht weiter:
Ich möchte per API auf ein Simulationstool zugreifen. Dazu programmiere ich vorerst in Visual Studio 2010 und bekomme leider ständig folgende Meldung > Fehlermeldung:
FileLoadException. Die Datei oder Assembly "Implementation.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Der angegebene Pfadname ist ungültig. (Ausnahme von HRESULT: 0x800700A1)
Die Hilfe zu diesem Thema habe ich bereits gelesen; weitergeholfen hat mir diese aber leider nicht...
Laut UserManual muss ich lediglich die Assembly Tecnomatix.Engineering einbinden. Diese ist sicher eingebunden. Von daher ist für mich nicht ganz nachvollziehbar woher dieser Fehler kommt.
Ich muss allerdings zugeben, dass ich von C# wenig Ahnung habe.
Folgenden Code habe ich bisher geschrieben:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tecnomatix.Engineering;
namespace ConsoleApplication1
{
class Programm
{
static void Main (string[] args)
{
// Prepare the cylinder creation data
TxCylinderCreationData cd = new TxCylinderCreationData();
cd.Name = "myCylinder";
cd.Base = new TxVector(0, 0, 0);
cd.Top = new TxVector(0, 0, 300);
cd.Radius = 100;
// Get the first item from the selection
TxObjectList selectedItems = TxApplication.ActiveSelection.GetItems();
ITxGeometryCreation geoParent = selectedItems[0] as ITxGeometryCreation;
// If the selected item is of a type under which a geometry can be created
// (that is, if it implements ITxGeometryCreation), create the cylinder
// under it.
if (geoParent != null)
geoParent.CreateSolidCylinder(cd);
}
}
}
Für Tipps, wo denn der Fehler sein könnte wäre ich euch sehr dankbar.
Hallo nullie,
so wie es aussieht, ist Tecnomatix.Engineering der Namespace, wogegen Implementation.dll die Assembly ist. Zusätzlich zu dem using musst du die Assembly referenzieren. Außerdem muss sich diese im Programmverzeichnis, einen Unterverzeichnis davon oder im GAC befinden.
Siehe auch [FAQ] CS0234 / CS0246 - Der Typ- oder Namespacename "Foo" konnte nicht gefunden werden (analog).
herbivore
Hallo herbivore,
vielen Dank schon mal für deine Hilfe. Leider haben sich die Modalitäten etwas geändert. Der Fehler ist zwar der gleiche, dafür kommt eine etwas andere Meldung bei geänderten Rahmenbedingungen.
Ich hatte im UserManual zur Imlementierung der API überlesen, dass die Eigenschaft des Verweises "Tecnomatix.Engineering" auf "False" stehen muss. Dies habe ich jetzt geändert.
Nun erhalte ich folgenden Fehler: > Fehlermeldung:
Die Datei oder Assembly "Tecnomatix.Engineering, Version=11.0.0.440, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
Das Verzeichnis ist sicher das richtige.. Ich habe Leserechte für das Verzeichnis.
Zusätzlich habe ich jetzt unter Projekt - Projekteigenschaften noch den Ordner von Tecnomatix als Verweispfad angegeben.
Wo könnte da denn noch der Fehler liegen? Bin grad ziemlich ratlos...
Nullie
hallo,
Kompilierst du für x86 oder AnyCPU? stell einfach mal um auf x86
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"
Hey,
ich kompiliere für x64, da Tecnomatix nur als 64bit-Version vorliegt.
Wenn ich auf x86 umstelle erscheint die genannte Fehlermeldung weiterhin und darüber hinaus erscheinen noch weitere Fehlermeldungen weil Tecnomatix 64bit ist.
Trotzdem sagt die Fehlermeldung sehr deutlich, dass entweder die vorhandene Version oder ganz einfach der zu suchende Pfad nicht stimmt; oder eben eine Abhängigkeit, die Dir fehlt.
Kann man mit dem Process Explorer verfolgen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hmm,
Version und Pfad stimmen. Hab ich auch schon mehrfach überprüft und sogar schon paar mal neu eingebunden.
Über den Projektmappen-Explorer komme ich auch zum Objektkatalog der Assembly.
Ist PublicKeyToken vielleicht aus irgendeinem Grund nicht Null und die Meldung erscheint deswegen?
Ich habe Tecnomatix während dem kompilieren geöffnet. Wobei ich auch keine Besserung feststellen kann, wenn ich Tecnomatix schließe.
Entweder liegt die Tecnomatix.Engineering dll nicht in der richtigen Version im Verzeichnis ( Version=11.0.0.440 )... oder diese dll verwendet noch weitere Dll's welche nicht gefunden werden !
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
An der Version kanns doch eigentlich nicht liegen oder? Ich habe doch den Verweis in Visual Studio gesetzt. Und unter den Verweis-Eigenschaften wird mir Version 11.0.0.440 angezeigt.
Diese dll verwendet ziemlich viele, weitere dll´s. Aber diese liegen alle in dem gleichen Verzeichnis. Und ich habe die beiden dll´s, auf die ich verweisen muss eingebunden.
Ich habe gerade folgendes gelesen:
Zur Laufzeit muss ein Verweis **entweder im Globaler Assemblycache (GAC) oder im Ausgabepfad **des Projekts vorhanden sein. Wenn diese Eigenschaft auf true festgelegt wurde, wird der Verweis zur Laufzeit in den Ausgabepfad des Projekts kopiert. Gewusst wie: Festlegen der Eigenschaft Lokale Kopie eines Verweises
Da ich CopyLocal auf False stehen habe, und sich die Assembly auch nicht im Globalen Assemblychache befindet wird die Fehlermeldung erzeugt.
Also so ist meine Vermutung. Ergibt dass Sinn? Wenn ja, wie gehe ich dann weiter vor?
Deswegen haben wir 7374324 mal gesagt, dass die DLL im Anwendungsverzeichnis liegen muss (und das steht auch in der FAQ).
Wenn Du das ganze auf False setzt, dann wird die DLL natürlich nicht kopiert. Ergo liegt die DLL auch nicht im Anwendungsverzeichnis - und genau das sagt auch der Fehler aus.
Wie wärs also damit, CopyLocal auf true zu setzen? Wär ne feine Idee, wa? 🤔
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Nein, weil ich dann wieder bei der, im ersten Tread genannten Fehlermeldung ankomme.
Dadurch, dass ich CopyLocal auf "False" gesetzt habe, hat sich ja nur die Fehlermeldung geändert.
Soeben nochmal versucht - und wie erwartet:> Fehlermeldung:
Die Datei oder Assembly "Implementation.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Der angegebene Pfadname ist ungültig. (Ausnahme von HRESULT: 0x800700A1)
Und im UserManual steht doch explizit, dass CopyLocal auf "False" stehen muss...
Hat Siemens auch Beispiel-Projekte mitgeliefert ?
Funktionieren diese auf Deinem Rechner ? Wenn Diese funzen, dann machst Du was falsch und kannst in diesen Projekten schauen was wie referenziert wird....
Wenn diese nicht funzen, dann liegt es an der Installation...
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Es ist immer schade, wenn die Hinweise nicht richtig gelesen wurden. Dass die DLL im Anwendungsverzeichnis liegen muss, habe ich schon in der aller ersten Antwort geschrieben. Ich hatte von Anfang an die Vermutung, dass der Thread unter Grundlagen fällt. Das hat sich nun bestätigt. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.
Zudem wurde alles relevante gesagt. Auch wenn in der Doku der DLL steht, dass CopyLocal auf "False" stehen muss, setzt das nicht die Regeln des Frameworks außer Kraft. Die DLL muss sich an einem der genannten Orte befinden.