본문 바로가기
프로그래밍/리눅스

프로그래밍 「 리눅스 편」코딩: Linux의 ASP .NET Core(C#)

by grapedoukan 2023. 6. 13.
728x90

리눅스 코드 : .NET Core!

Windows 시스템에서 C #으로 코딩하는 것은 절대적인 요구 사항은 아니지만 기본 지원과 최상의 개발 경험을 제공하기 때문에 매우 유리합니다.

일부 C # 코드를 작성하려면 Linux, Android, OS X 등 어디서나 실행할 수 있습니다.

리눅스에서 C #으로 코딩 할 때의 첫 번째 단점 중 하나는 Visual Studio와 같은 적절한 GUI IDE가 없다는 것입니다 (농담입니다. JetBrains Rider IDE가 있지만 요점을 알 수 있습니다).

일반적으로 구문 강조 표시 및 기타와 같은 기본 항목에 대한 기본 확장과 함께 VS Code를 사용하거나 플러그인이 있는 Vim/Neovim을 사용합니다(일반적으로 사용하는 것입니다).

참고 : 이것은 dotnet 7을 사용하여 만들어졌습니다.

먼저 dotnet sdk를 설치해야 합니다.

아치 리눅스

$ sudo pacman -s dotnet-sdk #To Install the lattest
$ sudo pacman -s dotnet6-sdk-6 #To Install the .net 6 sdk

우분투, 설치하는 방법에는 여러 가지가 있습니다.

$ sudo add-apt-repository universe
$ sudo apt-get install apt-transport-https
$ sudo apt-get update
$ sudo apt-get install dotnet-sdk-6.0

dotnet-7에 대한 일반적인 방법은 문서를 확인합니다.

$ mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-7.0.302-linux-x64.tar.gz -C $HOME/dotnet
$ export DOTNET_ROOT=$HOME/dotnet
$ export PATH=$PATH:$HOME/dotnet

설치 테스트

새 프로젝트를 만들려면 다음을 수행하기만 하면 됩니다.

dotnet new nameOfProject -o OutputFolder

asp.net 프로젝트의 경우 mvc, razor pages, blazor, webapi 등 다양한 유형을 만들 수 있습니다.

인증없이 간단한 mvc 프로젝트로 가자.

$ dotnet new mvc -o DemoMVC

데모를 실행하는 것은

$ dotnet run
$ dotnet watch run #to update the page realtime

첫 번째 asp net 웹 응용 프로그램이 있습니다.

여기까지는 그다지 많지 않으며 Visual Studio를 더 매력적으로 만드는 것은 Microsoft가 몇 번의 클릭만으로 "리버스 엔지니어링"이라고 부르는 것처럼 스캐폴드할 수 있는 기능입니다.

리눅스에서는 약간 다르며, 터미널은 dotnet cli 도구를 사용하는 친구이며 그 옵션은 루틴입니다. 일부 컨트롤러 및/또는 뷰를 즉시 스캐폴딩할 수 있으려면 도움이 되는 몇 가지 사항을 설치해야 합니다! Visual Studio에서 이러한 것들은 마술처럼 자동으로 설치됩니다.

첫 번째 도구는 aspnet 코드 생성기이며, 전 세계적으로 설치하면 향후 프로젝트에 필요합니다!

dotnet tool install -g dotnet-aspnet-codegenerator

다른 필요한 패키지

$ dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
$ dotnet add package Microsoft.EntityFrameworkCore.Design
$ dotnet add package Microsoft.EntityFrameworkCore.Sqlite
$ dotnet add package Microsoft.EntityFrameworkCore.SqlServer
$ dotnet add package Microsoft.EntityFrameworkCore.Tools

다른 db 공급자를 사용하는 경우 설치해야 합니다. 리버스 엔지니어링할 수 있도록 models 폴더에 간단한 모델을 만들어 보겠습니다.

namespace DemoMVC.Models;
using System;

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public DateTime CreatedAt { get; set; }
}

데이터베이스 컨텍스트 및 Data 폴더에 모든 항목을 만듭니다

using Microsoft.EntityFrameworkCore;
using DemoMVC.Models;

namespace DemoMVC.Data;

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    public DbSet<Product> Products { get; set; }

}

앱 설정의 연결 문자열을 보려면 SQLite를 예로 사용하십시오.

 {
  "ConnectionStrings": {
    "DefaultConnection": "DataSource=app.db;Cache=Shared",
    "AnotherDBConection": "Server=(localdb)\\mssqllocaldb;Database=demo;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

컨테이너에 서비스 추가Add services to the container

var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");


builder.Services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlite(connectionString));

스캐폴드, 우리는 ASPNET 코드 생성을 사용할 것입니다, 옵션을 가지고 자유롭게 놀아보세요

dotnet aspnet-codegenerator controller -name ProductController -m Product -dc ProductContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries

경로가 제대로 작동하지 않으면 오류가 반환될 수 있습니다.

그래서 asp-gen 응용 프로그램의 전체 경로를 사용하는 것이 좋습니다.

 $HOME/.dotnet/tools/dotnet-aspnet-codegenerator

전체 명령을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

보기가 모두 설정되었으므로 이제 마이그레이션을 만들고 컨텍스트가 많은 경우 컨텍스트를 지정하는 데이터베이스를 업데이트합니다. dotnet-ef 도구(엔터티 프레임워크 도구)를 설치해야 합니다.

dotnet tool install --global dotnet-ef
dotnet ef --version

dotnet ef migrations add "Initial Create" --context ApplicationDbCon
text
dotnet ef database update  --context ApplicationDbContext

작동하지 않으면 전체 경로를 사용합니다

거기에서 성공과 매트릭스 효과를 볼 때 모든 설정이 완료된 것이며 Linux에서 리버스 엔지니어링을 완료한 것입니다.

앱을 실행하면 제품과 관련된 몇 가지 옵션과 함께 새로운보기가 표시됩니다.

728x90