2016-04-15 4 views
1

Ich schreibe eine kleine Website mit ASP.NET, schreiben Sie die C# in die ASPX-Datei direkt ohne Code-Behind verwenden oder eine DLL kompilieren. Ich mache das hauptsächlich, um kleine Änderungen mit nur einem Texteditor zu erlauben, ohne weiter zu Visual Studio zurückkehren zu müssen.Kann ich innerhalb einer ASP.NET-Site eine Klasse schreiben, ohne eine DLL kompilieren zu müssen?

Das funktioniert gut, außer ich möchte eine Klasse für einige Code schreiben, die von mehreren ASPX-Seiten verwendet werden. Gibt es eine Möglichkeit, eine CS-Datei auf die gleiche Weise wie ich C# -Code in ASPX-Dateien hinzufügen?

+1

Wenn Sie Website verwenden, müssen Sie es nicht in dll kompilieren –

+0

Auch wenn Sie auf einer Website sind, wenn Sie eine C# -Klasse hinzufügen, müssen Sie es erstellen. Wenn Sie Visual Studio nicht verwenden möchten, können Sie dies über die Befehlszeile tun. https://msdn.microsoft.com/en-us/library/78f4aasd.aspx – MNF

Antwort

0

Gute Frage.

Ich nehme an, Sie haben eine "Website" in Visual Studio. Wenn nicht, dann sollten Sie vielleicht die Zeit investieren, um eine neue Website zu erstellen und die Seiten dorthin zu migrieren. Dann veröffentlichen Sie es und das wird die Dinge einfacher machen. Das Problem, das Sie hier beschreiben, wird ebenso gelöst wie andere Dinge. Wenn Sie die Website jedoch außerhalb von Visual Studio ändern, wäre das wahrscheinlich auch ein Problem. Ich bin ein Anfänger, aber Sie können die Website wahrscheinlich zum Bearbeiten direkt öffnen. Ich bin nicht sicher.

Ich war neugierig, wie zu tun, was Sie fragen, also erkunde ich.

Wenn Sie bereits eine Website in Visual Studio haben, verwenden Sie "WebSite" | "Neues Element hinzufügen", um eine Klasse hinzuzufügen. VS fragt Sie, ob Sie einen APP_CODE erstellen möchten, sagen Sie ja. Die CS-Datei hat keinen Namespace, die Klasse befindet sich im globalen Namespace.

Als ich soweit kam, konnte ich mit VS eine Seite mit der Klasse testen. Als ich die Quelle kopiert habe, sagte IIS, dass die Klasse nicht gefunden werden konnte. Stellen Sie also sicher, dass sich das APP_CODE-Verzeichnis im Stammverzeichnis der Website befindet. Das ist wahrscheinlich nicht genug, also werden wir fortfahren.

Ich habe die Website veröffentlicht. Die veröffentlichte Website hat funktioniert, sie hat die Klasse gefunden. Ich konnte nicht herausfinden, was der Unterschied zwischen der veröffentlichten Seite und dem, was ich kopiert habe, ist. Also habe ich die Ausgabe der Veröffentlichung untersucht und sehe, dass virtuelle Verzeichnisse erstellt und ACLs hinzugefügt werden.

Ich denke, das ist der Trick. Stellen Sie zuerst sicher, dass sich das APP_CODE-Verzeichnis im Stammverzeichnis der Website befindet. Dann gehen Sie in den IIS-Manager und finden Sie die Website. Klicken Sie mit der rechten Maustaste und wählen Sie "Konvertieren in die Anwendung". Als ich das gemacht habe, haben die Dateien, die ich gerade kopiert habe, funktioniert.

Wenn Sie die Website mit Visual Studio veröffentlichen, wird es das für Sie tun. Sie müssen es nur einmal tun.

Ich habe ein paar andere Dinge versucht, also könnte es etwas anderes geben, das ich brauche, aber ich denke nicht.

+0

Danke, ich werde ein Experiment haben. Leider benutze ich einen Shared-Host-Service und sie geben mir nur einen FTP-Ordner statt Zugang zu IIS.Der Hauptgrund, warum ich den C# -Code auf dem Server haben möchte, ist, dass ich VS nicht überall habe. Dies ist eine schnelle und schmutzige Website, die für einen technischen, aber nicht programmierenden Freund eingerichtet wurde. Es gibt Kommentare im C# mit Anweisungen dazu, wie zukünftige Anpassungen vorgenommen werden. – billpg

+0

Das hat den Trick gemacht. Ich habe einen Ordner mit dem Namen App_Code im Stammordner der Website erstellt und dort einige .cs-Dateien abgelegt. Das C# in den ASPX-Dateien konnte die Klassen glücklich aufrufen und interagieren. Vielen Dank! – billpg

+0

Gut. Die meisten Hosting-Dienste wie GoDaddy bieten FTP-Zugang. Ich habe lange gebraucht um zu verstehen, dass FTP normal ist. Frontpage Extensions ist archaisch und wir brauchen so etwas nicht. In der Regel gibt es eine Systemsteuerung, die es uns ermöglicht, IIS in jeder Hinsicht zu ändern, die auf unsere Website zutrifft. – user34660

0

so etwas wie die folgende an der Spitze Ihrer ASPX-Datei hinzufügen -

<%@ Import namespace = "mydll" %> 

Dadurch wird sichergestellt, dass die Klasse in dem Mark-up, unter der Annahme, die Methoden und Eigenschaften usw. sind Setup zugänglich ist, so zu sein .

Jede Änderung an der DLL erfordert jedoch immer noch das Bearbeiten und Erstellen von VS.

Verwandte Themen