2010-09-03 5 views
17

Ich versuche, eine bestimmte Anwendung zu erweitern. Ich verwende eine DLL, die mit dieser Anwendung geliefert wird, um die Funktionalität zu erweitern. Ich benutze Visual Studio 2010 Express Edition. Ich habe einen Verweis auf die DLL-Bibliothek hinzugefügt. In den refrence Eigenschaften ist die Option "Copy local" deaktiviert. (Ausgegraut) Warum ist das so? Ich möchte, dass Visual Studio die DLL in meinen Release-Ordner kopiert. Wenn dies nicht möglich ist, gibt es einen anderen Weg, die DLL zu bündeln?Visual Studio kopieren Dll Refrences zu Ausgabe Ordner

Antwort

25

Ihr Beitrag zu Hans Antwort deutet dies auf eine COM-Baugruppe ist, und dass Sie 2010

Visual Studio verwenden Dies bedeutet, dass die Montagereferenz wahrscheinlich mit den „Embed Interop-Typen“ Einstellung auf true gesetzt wurde zugegeben. Dies hat den Effekt, dass Sie die COM-Assembly in Ihre Binärdatei einbinden, sodass Sie sie nicht mehr bereitstellen müssen. Der folgende Link bietet eine detailliertere Erklärung

Wenn Sie es einsetzen wollen, obwohl dann tun müssen, um die folgende

  • Klicken Sie auf den Verweis auf der Registerkarte Referenzen
  • Drücken Sie F4, um das Eigenschaftenraster anzuzeigen
  • Legen Sie "Interop-Typen einbetten" auf False fest (dies wird ungray C opy Lokal)
  • Set "Copy Local" auf true
2

Es hängt davon ab, welche Art von DLL es ist. Wenn es sich um einen COM-Server handelt, ist Local kopieren deaktiviert, wenn Sie einen PIA für diesen COM-Server registriert haben. Wenn es sich um eine reguläre .NET-Assembly handelt, ist sie deaktiviert, wenn sie im GAC registriert ist.

Beheben Sie das Problem, indem Sie regasm/u verwenden, um die Registrierung von PIA oder gacutil/u aufzuheben, um sie aus dem GAC zu entfernen. Beachten Sie, dass Sie dies möglicherweise nicht tun möchten, wenn diese DLL erfordert, dass das Installationsprogramm auf dem Zielcomputer ausgeführt wird. Was wahrscheinlich ist. Sprechen Sie mit dem Hersteller oder Autor der Komponente, um herauszufinden, was Sie tun sollten.

+0

Es ist eine COM-Baugruppe (ich sehe es unter der Registerkarte COM in Visual Studio aufgeführt refrence refrence Dialog hinzufügen, hinzufügen). Wie finde ich den Weg der Versammlung, die ich regasm zur Verfügung stellen muss? Der Pfad, der daneben in Visual Studio angezeigt wird, ist Projekt \ obj \ x86 \ Release \ Interop.lbname.dll. Vorausgesetzt, dieser Pfad wird erfolgreich ausgeführt, aber ich habe immer noch das gleiche Problem. – user434541

+0

Schwer zu verstehen. project \ obj \ x86 \ release ist kein gültiger Pfad für eine Interop-Assembly. Dies sollte auch nicht im Dialogfeld Verweis hinzufügen angezeigt werden. Und Sie verwenden regasm.exe nicht auf einem nativen COM-Server, nur auf einem, der in .NET implementiert wurde. In diesem Fall sollten Sie es so verwenden, wie es ist, nicht als COM-Server. Sprich mit deinem Händler. –

Verwandte Themen