Powered By

Creating an OrchardCore .NET Core Project From Scratch - Part 1

Creating an OrchardCore .NET Core Project From Scratch - Part 1

In dieser Schritt fuer Schritt Anleitung werden wir ein eigenes OrchardCore CMS Web Projekt unter Einbindung des development Branch erstellen.

Summary

Setup OrchardCore CMS Project

In dieser Anleitung werden wir ein eigenes OrchardCore CMS Web Projekt erstellen. Wir bauen das OrchardCore CMS direkt vom Source Code.

Es gibt verschiedene Moeglichkeiten, eine eigene OrchardCore CMS Website zu erstellen:

Zum Beispiel:

  • via Nuget Package Referenz
  • ein starter projekt mittels dotnet new Code Generation Template
  • in der Solution den Source Code von OrchardCore Git einbetten.

In diesem Fall binden wir OrchardCore Source vom Development-Branch ein: als Git Submodule. Fuer Produktive Seiten ist der Development-Branch nicht empfohlen, hier bitte auf ein stable Release zurueckgreifen!


Zu Beginn legen wir einen leeren Ordner an und initialisieren das Git-Repository fuer unser neues Projekt. In diesem Fall im User Home-Directory:

    
        > cd ~
        > mkdir CustomOrchardCore
        > cd CustomOrchardCore/
        > git init
        Initialized empty Git repository in /home/{$USER}/CustomOrchardCore/.git/
    

Nun erstellen wir auf GitHub einen Fork von OrchardCore, hierzu ist eine Anmeldung an GitHub notwendig.

Dazu gehen wir auf die Projektseite von OrchardCore und klicken den Fork Button:

github-create-fork

Jetzt haben wir einen eigenen Fork von OrchardCore, in den wir comitten koennen. Diesen Fork binden wir nun als Submodule in unser Repository ein, hierzu kopieren wir die Git-Url von unserem Fork:


im Root-Projektverzeichnis fuegen wir das OrchardCore Submodule hinzu:

    
        > git submodule add https://github.com/<YOUR-ACCOUNT>/OrchardCore.git
    
    
        > ls -la
        drwxrwxr-x  4 cho cho 4096 Mar  1 13:22 .
        drwxr-xr-x 95 cho cho 4096 Mar  1 12:15 ..
        drwxrwxr-x  8 cho cho 4096 Mar  1 13:22 .git
        -rw-rw-r--  1 cho cho   97 Mar  1 13:22 .gitmodules
        drwxrwxr-x  5 cho cho 4096 Mar  1 13:22 OrchardCore
    

und fuegen fuer unseren eigenen Source-Code ein neues Verzeichnis an:

    
    > mkdir src

Nun sieht unsere Projekt-Struktur wie folgt aus:

    
        > ls -la
        drwxrwxr-x  5 cho cho 4096 Jun 16 15:29 .
        drwxr-xr-x 86 cho cho 4096 Jun 16 14:51 ..
        drwxrwxr-x  8 cho cho 4096 Jun 16 15:28 .git
        -rw-rw-r--  1 cho cho   97 Jun 16 15:28 .gitmodules
        drwxrwxr-x  5 cho cho 4096 Jun 16 15:28 OrchardCore
        drwxrwxr-x  3 cho cho 4096 Jun 16 15:30 src
    

Im Anschluss erstellen wir eine neue, leere Solution in einem neuen Solution-Verzeichnis: {Projekfolder}/src/{SolutionFolder}/{SolutionName}.sln

Hier ein Weg mit der Shell und dem dotnet new command, es geht aber selbstverstaendlich auch mit einer IDE:

    
        > cd src
        > mkdir CustomOrchardCore
        > cd CustomOrchardCore
        > dotnet new sln --name CustomOrchardCore
    

So sollte das Verzeichnis nun aussehen:

project-folder-1

nun kopieren wir das OrchardCore CMS Web-Projekt als Vorlage in unseren neuen Src-Folder, unser eigenes Web-Projekt:


    
        > cd {Projekt-Root}
        > cp -R OrchardCore/src/OrchardCore.Cms.Web/ src/CustomOrchardCore/
    

Das kopierte Verzeichnis und das kopierte Projekt kann nun umbenannt werden, in diesem Beispiel zu CustomOrchardCore.Cms.Web

Jetzt oeffnen wir die neue Solution in der IDE unserer Wahl und fuegen das neue, kopierte Web-Projekt der Solution hinzu:

In der Rider IDE: Rechtsklick auf die Solution -> Add -> Add Existing Project

add-existing-project

Und nun muessen wir uns um die broken References kuemmern, da wir das Web-Projekt ja kopiert hatten, sind die relativen Pfade nicht mehr korrekt:


z.B. statt: ..\OrchardCore.Build\Dependencies.props


muss es in meinem Fall lauten: ..\..\..\OrchardCore\src\OrchardCore.Build\Dependencies.props


Das habe ich mit einem Text-Editor mit Find And Replace korrigiert: In der Projekt-Datei OrchardCore.Cms.Web.csproj einfach die Pfade ersetzen, bei mir z.B.:


Find:"..\"

Replace: "..\..\..\OrchardCore\src\"

    
        > cd {Projekt-Root}/src/CustomOrchardCore
        > dotnet restore
    

Jetzt noch den Port aendern, falls der 5001 schon belegt ist:

Program.cs:
    
public class Program
    {
        public static void Main(string[] args)
            => BuildWebHost(args).Run();

        public static IWebHost BuildWebHost(string[] args)
            => CreateWebHostBuilder(args)
                .Build();

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder<Startup>(args)
                .UseNLogWeb()
                .UseUrls("http://localhost:5100");
    }
    

und ein dotnet run im Web-Projekt-Verzeichnis ausfuehren:


dotnet run
oder mit dem Projekt-Pfad:

dotnet run --project CustomOrchardCore.Cms.Web/CustomOrchardCore.Cms.Web.csproj
und localhost:{PORT} im Browser aufrufen: orchardcore setup

dann einen publish ausfuehren und den Folder via rsync auf den Server syncen, je nach Bedarf.


dotnet publish -c release -r <e.g. ubuntu.16.04-x64>

Nun sind wir mit unserem Custom OrchardCore CMS fast fertig, nur noch den Namespace anpassen, dann koennen wir mit der Entwicklung starten :-)

Bevor wir nun committen muessen wir allerdings noch ein .gitignore file anlegen, praktischerweise kopieren wir einfach das .gitignore vom OrchardCore Source-Folder, das hat ausreichende Excludes fuer den Start:

cp OrchardCore/.gitignore src/