Heim Backend-Entwicklung C#.Net-Tutorial Detaillierte Erläuterung der Methode der dynamischen Kompilierung und Generierung von Controllern in asp.net mvc

Detaillierte Erläuterung der Methode der dynamischen Kompilierung und Generierung von Controllern in asp.net mvc

Sep 01, 2017 pm 02:30 PM
asp.net 动态 编译

In diesem Artikel wird hauptsächlich die Methode der dynamischen Kompilierung von asp.net mvc zum Generieren eines Controllers vorgestellt, die einen gewissen Referenzwert hat.

Beim Aufbau eines Website-Backend-Managementsystems können wir uns darüber informieren Die Eingabekonfiguration des Benutzers muss einige Kanäle dynamisch generieren. In diesem Fall ist eine dynamische Kompilierung zur Laufzeit erforderlich. Der Code lautet wie folgt:


using System.Web.Mvc;
using System.CodeDom.Compiler;
using System.Text;
using Microsoft.CSharp;

namespace DynamicCompiler.Controllers
{
  public class HomeController : Controller
  {
    // GET: Home
    public ContentResult Index()
    {
      return Content(@"
              这个页面是vs生成的<br> 
              <a href=&#39;/home/creat&#39;>点击动态编译生成TestController</a><br>
              <a href=&#39;/Test/&#39;>访问TestController</a><br>
              <a href=&#39;/Test/WithView&#39;>测试带View的Action</a>
            ");
    }

    public ContentResult Creat()
    {
      string cspath = Server.MapPath("~/TestController.cs");
      var compiler = CompilerFromCsPath("TestController", cspath); //编译

      #region 输出编译信息
      StringBuilder sb = new StringBuilder();
      sb.Append("cs文件路径:" + cspath);

      sb.Append("编译信息:" + "<br>");
      foreach (string output in compiler.Output)
      {
        sb.Append(output + "<br>");
      }
      sb.Append("错误信息:" + "<br>");
      foreach (CompilerError error in compiler.Errors)
      {
        sb.Append(error.ErrorText + "<br>");
      }
      #endregion

      return Content(sb.ToString());
    }

    /// <summary>
    /// 动态编译并执行代码
    /// </summary>
    /// <param name="csPath">代码</param>
    /// <param name="dllName">输出dll的路径</param>
    /// <returns>返回输出内容</returns>
    private CompilerResults CompilerFromCsPath(string dllName, params string[] csPath)
    {
      string binpath = Server.MapPath("~/bin/");
      CSharpCodeProvider complier = new CSharpCodeProvider();
      //设置编译参数
      CompilerParameters paras = new CompilerParameters();
      //引入第三方dll
      paras.ReferencedAssemblies.Add("System.dll");
      paras.ReferencedAssemblies.Add("System.linq.dll");
      paras.ReferencedAssemblies.Add("System.Web.dll");
      paras.ReferencedAssemblies.Add(binpath + "System.Web.Mvc.dll");
      //是否内存中生成输出
      paras.GenerateInMemory = false;
      //是否生成可执行文件
      paras.GenerateExecutable = false;
      paras.OutputAssembly = binpath + dllName + ".dll";
      //编译代码
      CompilerResults result = complier.CompileAssemblyFromFile(paras, csPath);
      return result;
    }
  }
}
Nach dem Login kopieren

Der Prozess ist wie folgt:

Wenn mvc startet, dort ist nur HomeController, und beim Zugriff auf TestController wird der Fehler 404 angezeigt

Klicken Sie dann, um TestController dynamisch zu kompilieren und eine DLL im Bin-Verzeichnis zu generieren. . Wenn Sie auf klicken, um erneut auf TestController zuzugreifen, ist dieser wieder verfügbar.

Während dieses Vorgangs wird die MVC-Anwendung automatisch neu gestartet. . Da unsere Konfiguration nur für den Hintergrundgebrauch gedacht ist, halte ich es nicht für notwendig, die DLL dynamisch zu laden und sie automatisch neu starten zu lassen. . Ich weiß nicht, ob es richtig ist, so zu denken. . Bitte geben Sie mir einen Rat. .

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Methode der dynamischen Kompilierung und Generierung von Controllern in asp.net mvc. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Fix: Die dynamische Aktualisierungsrate von Windows 11 funktioniert nicht Fix: Die dynamische Aktualisierungsrate von Windows 11 funktioniert nicht Apr 13, 2023 pm 08:52 PM

Sie können die Aktualisierungsrate eines Bildschirms messen, indem Sie zählen, wie oft das Bild pro Sekunde aktualisiert wird. DRR ist eine neue Funktion in Windows 11, die Ihnen hilft, Akkulaufzeit zu sparen und gleichzeitig für eine flüssigere Anzeige zu sorgen. Es ist jedoch keine Überraschung, wenn sie nicht richtig funktioniert. Es wird erwartet, dass Bildschirme mit höheren Bildwiederholraten häufiger vorkommen, da immer mehr Hersteller Pläne ankündigen, die Produktion von 60-Hz-Monitoren einzustellen. Dies führt zu einem flüssigeren Scrollen und besseren Spielen, geht jedoch mit einer kürzeren Akkulaufzeit einher. Allerdings ist die Funktion der dynamischen Bildwiederholfrequenz in dieser Version des Betriebssystems eine praktische Ergänzung, die einen großen Einfluss auf Ihr Gesamterlebnis haben kann. Lesen Sie weiter, während wir besprechen, was zu tun ist, wenn die dynamische Aktualisierungsrate von Windows 11 nicht funktioniert

So blenden Sie Dynamic Island und Red Indicator bei der iPhone-Bildschirmaufzeichnung aus So blenden Sie Dynamic Island und Red Indicator bei der iPhone-Bildschirmaufzeichnung aus Apr 13, 2023 am 09:13 AM

Auf dem iPhone zeichnet die Bildschirmaufzeichnungsfunktion von Apple ein Video von dem auf, was Sie auf dem Bildschirm tun. Dies ist nützlich, wenn Sie das Gameplay aufzeichnen, jemanden durch ein Tutorial in einer App führen, einen Fehler demonstrieren oder etwas anderes tun möchten. Bei älteren iPhones, die über eine Kerbe am oberen Displayrand verfügen, ist die Kerbe bei der Bildschirmaufnahme nicht sichtbar, wie es sein sollte. Aber auf neueren iPhones mit der „Dynamic Island“-Aussparung, wie dem „iPhone 14 Pro“ und dem „iPhone 14 Pro“ Max, zeigt die „Dynamic Island“-Animation die rote Aufnahmeanzeige an, wodurch die Aussparung in aufgenommenen Videos sichtbar ist. das könnte sein

C++-Kompilierungsfehler: nicht deklarierter Bezeichner, wie kann man ihn lösen? C++-Kompilierungsfehler: nicht deklarierter Bezeichner, wie kann man ihn lösen? Aug 22, 2023 pm 03:34 PM

Beim Programmieren in C++ stoßen wir häufig auf das Problem nicht deklarierter Bezeichner. Dies tritt normalerweise auf, wenn undefinierte Variablen, Funktionen oder Klassen verwendet werden, was dazu führt, dass der Compiler diese Bezeichner nicht erkennt, was zu Kompilierungsfehlern führt. In diesem Artikel werden häufige Ursachen für Probleme mit nicht deklarierten Identifikatoren und deren Lösung beschrieben. Häufige Ursachen Probleme mit nicht deklarierten Bezeichnern haben in der Regel folgende Gründe: Variablen, Funktionen oder Klassen sind nicht korrekt deklariert: Sie sollten Variablen, Funktionen oder Klassen deklarieren, bevor Sie sie verwenden. Wenn die Variable nicht deklariert ist oder funktioniert

Konvertieren Sie die Festplatte von VirtualBox in eine dynamische Festplatte und umgekehrt Konvertieren Sie die Festplatte von VirtualBox in eine dynamische Festplatte und umgekehrt Mar 25, 2024 am 09:36 AM

Beim Erstellen einer virtuellen Maschine werden Sie aufgefordert, einen Festplattentyp auszuwählen. Sie können zwischen einer festen Festplatte und einer dynamischen Festplatte wählen. Was ist, wenn Sie sich für Festplatten entscheiden und später feststellen, dass Sie dynamische Festplatten benötigen, oder umgekehrt? Sie können die eine in die andere konvertieren. In diesem Beitrag erfahren Sie, wie Sie eine VirtualBox-Festplatte in eine dynamische Festplatte umwandeln und umgekehrt. Eine dynamische Festplatte ist eine virtuelle Festplatte, die zunächst klein ist und mit der Speicherung von Daten in der virtuellen Maschine immer größer wird. Dynamische Festplatten sparen sehr effizient Speicherplatz, da sie nur so viel Host-Speicherplatz beanspruchen, wie benötigt wird. Wenn jedoch die Festplattenkapazität zunimmt, kann die Leistung Ihres Computers geringfügig beeinträchtigt werden. In virtuellen Maschinen werden häufig Festplatten und dynamische Festplatten verwendet

So konvertieren Sie einen dynamischen Datenträger in einen Basisdatenträger unter Windows 11 So konvertieren Sie einen dynamischen Datenträger in einen Basisdatenträger unter Windows 11 Sep 23, 2023 pm 11:33 PM

Wenn Sie in Windows 11 einen dynamischen Datenträger in einen Basisdatenträger umwandeln möchten, sollten Sie zunächst ein Backup erstellen, da bei diesem Vorgang alle darin enthaltenen Daten gelöscht werden. Warum sollten Sie in Windows 11 einen dynamischen Datenträger in einen Basisdatenträger konvertieren? Laut Microsoft sind dynamische Datenträger von Windows veraltet und ihre Verwendung wird nicht mehr empfohlen. Darüber hinaus unterstützt Windows Home Edition keine dynamischen Datenträger, sodass Sie nicht auf diese logischen Laufwerke zugreifen können. Wenn Sie mehrere Festplatten zu einem größeren Volume zusammenfassen möchten, empfiehlt sich die Verwendung von Basisfestplatten oder Speicherplätzen. In diesem Artikel zeigen wir Ihnen, wie Sie einen dynamischen Datenträger unter Windows 11 in einen Basisdatenträger konvertieren. Wie konvertiert man einen dynamischen Datenträger unter Windows 11 in einen Basisdatenträger? am Anfang

Warum dauert die Kompilierung meines Go-Programms länger? Warum dauert die Kompilierung meines Go-Programms länger? Jun 09, 2023 pm 06:00 PM

In den letzten Jahren ist die Sprache Go für immer mehr Entwickler zur Wahl geworden. Im Vergleich zu anderen Programmiersprachen ist die Kompilierungsgeschwindigkeit der Go-Sprache jedoch nicht hoch genug. Viele Entwickler werden beim Kompilieren von Go-Programmen auf dieses Problem stoßen: Warum dauert das Kompilieren meines Go-Programms länger? In diesem Artikel wird dieses Problem unter verschiedenen Aspekten untersucht. Die Compiler-Architektur der Go-Sprache Die Compiler-Architektur der Go-Sprache verwendet ein dreistufiges Design: Front-End, Mittelschicht und Back-End. Das Front-End ist für die Übersetzung des Quellcodes in Zwischencode in der Go-Sprache verantwortlich, und die mittlere Ebene übernimmt die Aufgabe

Kompilierungs- und Dekompilierungstechniken in Java Kompilierungs- und Dekompilierungstechniken in Java Jun 09, 2023 am 09:43 AM

Java ist eine sehr beliebte Programmiersprache, die häufig zur Entwicklung verschiedener Arten von Software verwendet wird. In der Java-Entwicklung sind Kompilierungs- und Dekompilierungstechnologie sehr wichtige Verbindungen. Die Kompilierungstechnologie wird verwendet, um Java-Code in ausführbare Dateien zu konvertieren, während die Dekompilierungstechnologie es ermöglicht, ausführbare Dateien wieder in Java-Code zu konvertieren. In diesem Artikel werden Kompilierungs- und Dekompilierungstechniken in Java vorgestellt. 1. Kompilierungstechnologie Kompilierung ist der Prozess der Konvertierung von Hochsprachencode (z. B. Java) in Maschinensprache. in Java

Warum muss Linux Quellcode kompilieren? Warum muss Linux Quellcode kompilieren? Mar 17, 2023 am 10:21 AM

Gründe: 1. Es gibt viele Versionen von Linux, aber jede Version verwendet unterschiedliche Software- oder Kernelversionen, und die Umgebung, auf der das Binärpaket basiert, läuft möglicherweise nicht unbedingt normal, sodass die meisten Softwareprogramme den Quellcode direkt für die Kompilierung und Installation bereitstellen. 2. Einfache Anpassung an unterschiedliche Anforderungen. 3. Es ist praktisch für den Betrieb und die Wartung sowie für die Entwicklerwartung. Der Quellcode kann als Binärdatei gepackt werden. Das Packen dieser Software erfordert jedoch kostspielige zusätzliche Arbeiten, einschließlich Wartung. Wenn es sich also um Quellcode handelt, wird der Softwarehersteller ihn direkt warten .

See all articles