9 Stimmen

Externe Referenzen können nicht mit C#-Konsolenanwendung verwendet werden

Ich habe alle unten aufgeführten Vorschläge ausprobiert, aber immer noch kein Glück.

Ich versuche es jetzt mit einer Konsolenanwendung, und ich möchte Ihnen genau erklären, was ich tue.

  1. Ich erstelle ein neues Konsolenprojekt in VS 2010
  2. Ich füge eine Reihe von Verweisen (dlls) hinzu, von denen einige nicht von mir stammen, wie z. B. Castle.Winsor und N2 CMS dlls
  3. in der Konsolenanwendung kann ich using-Anweisungen hinzufügen, die angeben, dass ich Namensräume innerhalb der referenzierten DLLs verwende
  4. Ich fange an, Code zu schreiben.
  5. Sobald ich kompiliere, meldet sich der Code, der die referenzierten DLLs verwendet, mit der Meldung "The type or namespace name '' could not be found (are you missing a using directive or an assembly reference?)"

Ich habe versucht, die DLLs so einzustellen, dass sie immer lokal kopiert werden, ich habe die DLL in dasselbe Verzeichnis kopiert, ich habe versucht, einen Verweis nach Projekt hinzuzufügen und einen Verweis auf die DLLs selbst hinzuzufügen

Ich bekomme nicht dieses Problem mit einer Webanwendung Projekt oder ein ASP.net-Projekt sie immer gut funktionieren, nur etwas, das zu einer EXE wie eine Konsole app oder Windows-Dienst kompiliert wird.

irgendetwas muss ich übersehen haben, sonst hätte ich das schon längst hinbekommen.

37voto

Matthew Abbott Punkte 58885

Ändern Sie das Projektziel in ein Nicht-Clientprofil-Ziel. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaften. Da Sie VS2010 verwenden, zielt das Konsolenprojekt, das Sie standardmäßig erstellt haben, auf .NET Framework 4.0 Client Profile ab, ändern Sie dies in .NET Framework 4.0.

2voto

Xaqron Punkte 27851

Prüfen Sie, ob Copy Local wird eingestellt auf true für die referenzierte Baugruppe.

0voto

Erstens, wie zu Ihrer Frage, seine schwer zu wissen, was Sie falsch machen, aber aus der Tatsache, dass Sie einen Unterstrich in einem Assembly-Namen (und wahrscheinlich in Namespaces und Typ-Namen) verwenden, es schlägt vor, Sie sind ziemlich neu in der .NET-Welt.

Dies deutet darauf hin, dass Sie Verweise auf andere Projekte in Ihrer Lösung hinzufügen, indem Sie Surfen auf zur kompilierten Baugruppe hinzuzufügen, anstatt eine Projekt-Referenz . Wenn Sie einen Verweis hinzufügen, müssen Sie die Registerkarte Projekt auswählen, anstatt nach der Baugruppe zu suchen.

Auch wenn Sie nicht glauben, dass dies das Problem ist, entfernen Sie alle Verweise und fügen Sie die Projektverweise erneut hinzu, um ganz sicher zu gehen. Annahmen, Einschätzungen usw.

Sobald Sie das getan haben, würde ich dringend empfehlen, alle Unterstriche aus Ihren Typen, Namespaces und Assemblies zu entfernen. Sie sollten vielleicht auch die Designrichtlinien des Frameworks lesen.

0voto

indiPy Punkte 7580

Öffnen Sie Ihre .Proj-Datei (Windows-Service-Projektdatei) in Notepad und überprüfen Sie, ob der Speicherort Ihrer Baugruppe (data_object) derselbe ist, auf den Sie zeigen.

Wenn Sie die .Proj-Datei in Notepad öffnen, können Sie nachsehen, ob sie vorhanden ist,

Referenz des Projekts,

        <ProjectReference Include="C:\StackOverflow\StackOverflow.csproj">

Und wenn Sie eine dll- oder exe-Referenz angeben, dann

 <Reference Include="StackOverflow, Version=1.0.0.0, Culture=neutral,       processorArchitecture=x86">
  <SpecificVersion>False</SpecificVersion>
  <ExecutableExtension>.exe</ExecutableExtension>
  <HintPath>C:\StackOverflow\bin\Debug\StackOverflow.exe</HintPath>
</Reference>

Ich schlage vor, dass Sie den genauen Standort einschließlich des Laufwerksnamens wie im obigen Beispiel angeben.

Eine andere Möglichkeit können Sie ausprobieren,

 1. Clean and rebuild
 2. Add Project reference if you already tried dll reference
 3. Check whether the folder (referred assembly location) is Read Only then remove it.

0voto

Pabitra Dash Punkte 1329

In VS 2019 hatte ich zwei Projekte, eine C++ und eine C#-Konsole in einer Lösungsdatei. Als ich versuchte, eine DLL-Referenz über "Referenz hinzufügen" hinzuzufügen, konnte ich die Schaltfläche "Durchsuchen" im Fenster "Referenzmanager" nicht sehen, um eine DLL-Datei auszuwählen.

Aber wenn ich nur C# Console app innerhalb Lösung erstellt, dann konnte ich dll-Referenz hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X