2009-04-26 23 views
1
verweist


Datei in App_Code importiert wird nicht

Q1

A) Ich habe eine neue CS-Datei erstellt, erklärte eine Klasse hinein und es dann auf meiner Platte speichern. Nach meinem Buch sollte ich nun in der Lage sein, diese Datei in den App_ Code-Ordner einer Website-Anwendung zu importieren (über Website -> Vorhandenes Element hinzufügen. Übrigens - da die Datei in den Stammordner einer Website kopiert wurde, musste ich sie verschieben in den App_Code-Ordner manuell), und die Datei wird automatisch von allen Seiten einer Website kompiliert und referenziert. Aber das ist nicht der Fall, da, wenn ich versuchen, diese Klasse in aspx Seite nutzen zu können, habe ich Zeitfehler kompilieren sagen, dass „Typ oder Namespace konnte nicht gefunden werden“

Da Autor wohl seine Sachen kennt, ist es sicher davon ausgehen, dass ich


B) etwas falsch zu machen bin Wenn Sie Klassenbibliothek aufbauen und wollen diese Komponente von einer Web-Anwendung verweisen, können Sie dies über Webseite erreichen -> Add Reference. Aber wenn Sie Klassenbibliothek erstellen, erstellt VS zwei DLLs, eine im Ordner Bin und andere innerhalb obj/debug Ordner. Ich nehme an, ich sollte Verweis auf DLL hinzufügen, die in Bin enthalten ist und nicht dll enthalten innerhalb obj/debug? Wenn ja warum?


thanx


EDIT:


Ich habe keine Informationen ausgelassen, so dass hoffentlich die folgenden Informationen werden suficcient:


Ich habe erstellt zuerst eine Datei mit dem Namen Class1.cs den folgenden Code in der Datei, und speicherte es irgendwo auf meiner Festplatte. Hier ist der Code von Class1.cs:

using System; 

namespace class1 
{ 
    public class Class1 
    { 
      public static string someString = "this is Class1"; 
    } 
} 


ich dann Class1.cs in App_Code Ordner meiner Website kopiert. Diese Website hat nur eine ASPX-Seite und ihren Code hinter der Datei. Wie auch immer, nach dem Kopieren Class1.cs in Ordner App_Code, versuchte ich es von einem Code hinter Datei zu verweisen:

using class1; 

public partial class _Default : System.Web.UI.Page  
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
      Label1.Text = Class1.someString; //this won’t compile 
    } 
} 

Antwort

2

Für die erste Frage werden wir ein bisschen mehr Kontext müssen. Können Sie die Klassendefinition oder zumindest die Kopfzeile posten? Und auch der Ort, an dem es referenziert wird?

Für die zweite Frage, verwenden Sie die eine außerhalb von bin \ Debug. Der Ordner obj wird hauptsächlich vom Compiler und dem Kompilierungssystem für temporäre Dateien verwendet, die als Teil des Kompilierungsprozesses verwendet werden. Diese Dateien sind in vielerlei Hinsicht temporär und können von vielen Operationen gelöscht werden. Es ist viel besser, sich auf die Dateien von bin \ debug zu verlassen.

1

Für die erste Frage, klicken Sie mit der rechten Maustaste auf Ihren App_Code-Ordner und fügen Sie eine neue Klasse aus diesem Menü hinzu. Kopieren Sie dann den Code aus der alten Datei. Sehen Sie, wie das geht.

Für die zweite Frage. Es klingt so, als hätten Sie bereits eine "Projektreferenz" hinzugefügt. Wenn Sie das tun, kopiert Visual Studio automatisch die DLL zum Zeitpunkt der Erstellung aus dem Klassenbibliotheksausgabeordner (in diesem Fall obj/debug) in den Bin-Ordner der Webanwendung. Wenn Sie eine Projektreferenz hinzugefügt haben, müssen Sie der DLL nicht direkt einen weiteren Verweis hinzufügen.

+0

Hallo, ich versuchte, indem es so, wie Sie vorgeschlagen, aber es hat immer noch nicht über Ihre zweite Antwort arbeiten - Frage B verwandt ist nicht ein – SourceC

+0

in Frage Wenn die DLL in dem Ordner Ist des Ziels Projekt, ist es in der Regel, weil das Projekt einen Verweis auf die Klassenbibliothek hat. –

+0

Ich verstehe das. Aber in Bezug auf Frage A habe ich keine DLL im Ordner Bin der Zielseite, da Class1.cs keine Klassenbibliothek ist, sondern nur eine einzige CS-Datei. – SourceC

2

Die Lösung der ersten Frage ist:

  • Rechtsklick auf die CS-Datei im Ordner App_Code und überprüfen Sie die Eigenschaften
  • sicherstellen, dass die Build Action gesetzt zu kompilieren
0

Für Ihre 1. Frage: Schneiden Sie die .cs-Dateien aus app_code, fügen Sie sie in den Stammordner ein. Ändern Sie die Namen Ihrer CS-Dateien. Ändern Sie die Eigenschaften des zu kompilierenden CS-Dateiinhalts. Kompilieren Sie Ihr Projekt und fügen Sie sie anschließend in den Ordner app_code zurück.

Verwandte Themen