Как запустить net core приложение на windows

Ответили на вопрос 5 человек. Оцените лучшие ответы! И подпишитесь на вопрос, чтобы узнавать о появлении новых ответов.
  • Infra_HDC

windows

  • Windows

  • C#

  • .NET

Как запустить Console Application (.NET Core) на windows, как приложение, т.е. не через студию?
.exe файла то нет. Помогите.


  • Вопрос задан

    более трёх лет назад

  • 3143 просмотра


Комментировать


Решения вопроса 1

В cmd перешел до папки с .csproj и ввел dotnet run your-programm-name.dll


Комментировать

Пригласить эксперта


Ответы на вопрос 3

Зайдите в cmd, перейдите в папку с debug/release. В cmd набирите:
dotnet run your-programm-name.dll

  • run — это сборка и запуск проекта. Просто запустить дллку — без всяких параметров, dotnet appname.dll

  • Спасибо за идею. Однако у меня по другому получилось. В cmd перешел до папки с .csproj и ввел dotnet run your-programm-name.dll (это если кому-то понадобится еще)

  • Slayer_nn

    Yan

    @Slayer_nn Куратор тега Windows

    ArsenBor66, понадобится
    пиши ответ и отмечай решение


Похожие вопросы


  • Показать ещё
    Загружается…

06 февр. 2023, в 07:47

2000 руб./за проект

06 февр. 2023, в 06:52

5000 руб./за проект

06 февр. 2023, в 06:02

5000 руб./за проект

Минуточку внимания

23 / 14 / 10

Регистрация: 11.06.2019

Сообщений: 159

1

09.08.2021, 22:02. Показов 4446. Ответов 7


Сделал приложение на .Net core 3.0, но проблема в том, что она не запускается на других компьютерах, на которых .net core 3.0 не установлен. Что нужно сделать, чтобы его можно было запустить как exe приложение? Пробовал публикацию приложения, но его нужно запускать через dotnet, что не является удобным для потребителя, как это можно обойти? Можно ли обойтись таким образом, как с .net framework просто установив дополнение на компьютер?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



19 / 15 / 6

Регистрация: 14.07.2021

Сообщений: 47

09.08.2021, 22:30

2

Здравствуйте. При развёртывании приложения .NET Core на Windows появится .exe файл в папке /bin/Release/<версия>
Из этой папки программу можно запускать, т.к. в ней содержатся необходимые библиотеки. Попробуйте. А чтобы запустить в другом месте, надо всю эту папку перенести.



0



Эксперт .NET

6269 / 3897 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

09.08.2021, 22:38

3

Цитата
Сообщение от zytia
Посмотреть сообщение

Пробовал публикацию приложения, но его нужно запускать через dotnet

Данная информация не соответствует действительности.

Опубликованное приложение не требуется запускать через dotnet. При публикации приложения создается исполняемый файл, через который приложение и запускается.



1



23 / 14 / 10

Регистрация: 11.06.2019

Сообщений: 159

10.08.2021, 00:59

 [ТС]

4

Vollane, Someone007, я это прекрасно понимаю, у меня только один файл с расширением exe (не считая dll и прочее), который я пробовал запустить на 2 компьютерах, на которых не был никогда установлен Visual Studio, на них обоих вылезет эта ошибка.



0



23 / 14 / 10

Регистрация: 11.06.2019

Сообщений: 159

10.08.2021, 01:03

 [ТС]

5

Vollane, Someone007, как видите:

Как запустить программу на .Net Core 3.0?

На микросекунду программа на них запускается и тут же закрывается. Один раз отловил ошибку, там была что-то вроде: not found netcore 3.0.0.0. На мое компьютере программа запускается без проблем.



0



Эксперт .NET

6269 / 3897 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

10.08.2021, 01:54

6

Лучший ответ Сообщение было отмечено zytia как решение

Решение

Цитата
Сообщение от zytia
Посмотреть сообщение

на них обоих вылезет эта ошибка

Какая «эта» ошибка? Публикацию делаете Framework Dependent или Self Contained?

Миниатюры

Как запустить программу на .Net Core 3.0?
 



1



1137 / 940 / 240

Регистрация: 15.06.2012

Сообщений: 3,654

Записей в блоге: 1

10.08.2021, 11:12

7

Лучший ответ Сообщение было отмечено zytia как решение

Решение

Цитата
Сообщение от zytia
Посмотреть сообщение

not found netcore 3.0.0.0.

дык, может на тех ПК не установлен рантайм для версии 3?

Добавлено через 3 минуты

Цитата
Сообщение от zytia
Посмотреть сообщение

на которых .net core 3.0 не установлен.

Скачайте runtime .net core 3.0 и установите на тех ПК. По дефолту кажется сейчас устанавливается на десятке только классическая 4.5, если не ошибаюсь.

Добавлено через 5 минут
Someone007 выше уже писал, можно попробовать автономный режим



1



23 / 14 / 10

Регистрация: 11.06.2019

Сообщений: 159

10.08.2021, 16:18

 [ТС]

8

Цитата
Сообщение от Someone007
Посмотреть сообщение

Публикацию делаете Framework Dependent или Self Contained?

Framework Dependent.

Добавлено через 1 минуту
Извините за такие вопросы, просто язык то знаю, а вот касаемо совместимости и прочих деталей никогда не доводилось изучать.

Добавлено через 45 минут
Проблема решена, опубликовал как автономный режим, спасибо.



0




Table of Contents

  • Introduction
  • Checking .NET Core Installation
  • Installing .NET Core SDK on Windows
  • Creating Console Application
  • Adding Project Template
  • Building and Running the Application
  • Summary
  • References

Introduction

In this post, we will create our very first console application in .NET Core. We will see how we can build .NET Core based applications without using any IDE like
Visual Studio. We will be using Command Line to create, build, and run the application. If we don’t need all the fancy features that Visual Studio and Visual Studio Code offer, then we can build a .NET Core application with just a Notepad.
The only thing we would need is .NET Core SDK installed on the machine, and all other actions that we do with Visual Studio can be invoked using the
CLI which we will see in here.

Checking .NET Core Installation

Before creating the .NET Core project, it is obvious to have .NET Core installed on our machine which can be checked by opening a Command Prompt window or PowerShell window and typing in it the «dotnet» command. If the .NET Core is not already installed
on the machine, we will get an error as it will not be able to recognize the command.

Installing .NET Core SDK on Windows

As .NET Core is all about cross-platform, the SDK is available for different platforms which include Windows 32-bit and 64-bit, MacOS, and Linux. If we go to the official download
link, we can see multiple options available from which can choose the desired one as per our need or convenience.

 The following is the list taken from official .NET Core download link. 

We will be creating the application using Windows, so let’s download the SDK Installer executable for Windows. I have downloaded the Installer of Windows (x64) as on my machine I have 64-bit Windows installed.

After downloading the installer, proceed to install the SDK.

This installer will install all the necessary components needed to develop .NET Core application and to run it, including .NET Core RunTime, SDK, and other things as well. The installation will take 2 — 3 minutes and if all the things go right in installation,
you will see the following window acknowledging the successful installation.

As we were able to install the SDK successfully, now open the command prompt again and type
dotnet command again. I am using PowerShell for this. Executing the command gives you back some output that means .NET Core is being set up correctly.

.NET Core CLI provides different commands to create new project, build, clean and all other commands that we normally invoke using Visual Studio. There is a complete list of commands documented on the official documentation page on Microsoft
website and all the commands can be seen there in detail.

Creating Console Application

Now, let’s create the simplest famous «Hello World» console application using command prompt in .NET Core. If all the previous steps have been completed correctly, open the Command Prompt and create a new directory which will contain the
source code for the application.

Write the following command on cmd to create the directory.

 mkdir First DotNetCoreApp

Now, open the directory using the following command.

 cd First DotNetCoreApp

From the above image, we can verify that we have opened the correct directory.

Adding Project Template

.NET Core comes with its own CLI tools enabled to create new project using commands in Command Prompt or PowerShell, without even opening up the IDE either Visual Studio or VS Code.

We will type dotnet new on command line and press
Enter
, which will list down all the templates that can be created using this command.

After running the command, we will see a few things listed which include the different flags available to do different things which are also available within Visual Studio but the support is added via Command Line too which is great.

If we go down a little bit, we can see all the templates listed that are available via CLI tools.

Now, let’s run the command for creating a new console application. So, write
dotnet new
and press Enter. This will create a new console application project in our working directory.

Our project has been created successfully but to double check and make sure the command worked fine, we can list the directory content and we should be able to see
csproj, Program.cs, and other files for the application.

Building and Running the Application

Now, let’s run the application by executing the dotnet run command in cmd.

One thing to remember here is that if you are creating the project using .NET Core 1.0 SDK, then before the
dotnet run command, you would need to execute the
dotnet restore
command which will restore all the NuGet package dependencies of the project, but for .NET Core 2.0, we don’t need to execute this command as calling the
dotnet run makes sure to restore the NuGet package dependencies before running the code. In actual, the restore command was called when we execute the command
dotnet new and NuGet packages were restored that time, but it is also called on run as well,

Summary

We learned about the .Net Core CLI that how we can use it to build applications without using any IDE using just Command Prompt or PowerShell.

References

  • https://docs.microsoft.com/en-us/dotnet/core/
  • https://www.microsoft.com/net/download/windows#/sdk
  • https://docs.microsoft.com/en-us/dotnet/core/tools/?wt.mc_id=DXLEX_EDX_DEV275x&tabs=netcore2x#cli-commands
  • https://docs.microsoft.com/en-us/dotnet/core/get-started

  • Download demo 3 — 184.9 KB
  • Download demo 2 — 53.9 KB
  • Download demo 1 — 61.2 KB

Introduction

This article will cover the following things

  • Brief Concepts
  • Implementation — Two ways to develop an application in Windows:
  • Implementation — Develop application in Windows:
  • Implementation — Install .NET Core on Linux Server (Ubuntu 16.04)
  • Implementation — Deploy Application (Created on Windows) on Linux Server (Ubuntu 16.04)
  • Implementation — Develop application on Linux
  • Implementation — Develop a MVC application on Windows using Visual Studio:

Brief Concepts

What is Dot Net Core?

  • Development platform/framework maintained by Microsoft.
  • It supports following OS:
    • Windows
    • MAC
    • Linux
    • cloud
    • Embedded/IOT scenarios

Features

  • Flexible deployment: 
    • Can be deployed on all the supported machines.
  • Cross-platform: 
    • Runs on Windows, MAC and Linux; — — will be covered in today’s session
    • Can be ported to other OS. — — will be covered in today’s session
  • Can be installed by any command line tool.
  • Compatibility:
    • NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard Library.
  • Open source: 
    • The .NET Core platform is open source: https://github.com/dotnet/core

Implementation (Using Code):

1. Two ways to develop an application in Windows

  • Using command line
  • Using Visual Studio IDE

2. Develop application in Windows

2.1. Using Command Line — STEPS

  • Download .NET Core SDK for Windows from the prior path

Image 1

  • Open cmd.exe / relevant command line tool
  • Follow the below commands to create a sample project and install .NET core
    • cd C:Gourav_PersonalStudy Material.NET COREDemo
    • mkdir demo1
    • cd demo1
    • dotnet new

Image 2

  • Restore the packages and run the project
    • dotnet restore
    • dotnet run

Image 3

Download demo1 attachment for the reference.

2.2. Using Visual Studio — STEPS

  • Install and Open VS 2015 with update 3 or above
  • Install .NET Core RC2 Package
  • Create a project
  • Choose .NET Core tab and select console application(.NET Core)

Image 4

  • Write few line of codes in program.cs

Image 5

  • Run the application.

Image 6

Download demo2 attachment for the reference.

3. Install .NET Core on Linux Server (Ubuntu 16.04)

  • I am using Oracle Virtual Box with Ubuntu 16.04 image on my windows machine to execute this use case.
  • Run the following commands to get this working:
    • sudo sh -c ‘echo «deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ trusty main» > /etc/apt/sources.list.d/dotnetdev.list’
    • sudo apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv-keys 417A0893
    • sudo apt-get update

Image 7

  • Install the following package on your Linux machine:
    • http://packages.ubuntu.com/pl/trusty/amd64/libicu52/download

Image 8

  • Now GO to the downloaded location and run the following commands :
    • sudo dpkg -i libicu52_52.1-3ubuntu0.4_amd64.deb

Image 9

  • sudo apt-get install dotnet-sharedframework-microsoft.netcore.app-1.0.0-rc2-3002702

Image 10

  • sudo apt-get install dotnet-dev-1.0.0-preview2-003121

Image 11

4. Deploy Application (Created on Windows) on Linux Server (Ubuntu 16.04)

  • Move the demo1 application attached in the article into the Linux machine and un-pack it.
  • Go the application location in terminal.

Image 12

  • Restore the packages and run the project
    • dotnet restore

Image 13

  • dotnet run

Image 14

5. Develop application on Linux

STEPS

  • Open Terminal
  • Follow the below commands to create a sample project and install .NET core
    • cd Downloads
    • mkdir demo2
    • cd demo2
    • dotnet new

Image 15

  • Restore the packages and run the project
    • dotnet restore
    • dotnet run

Image 16

6. Develop a MVC application on Windows using Visual Studio

STEPS – Multiple Concepts

  • General:
    • Open VS 2015 and Create Project

Image 17

  • Choose Web — > ASP .NET Core Web Application (.NET Core) and Choose template – Empty (To understand the concept better)

Image 18

  • Run the application

Image 19

  • Static Files:
    • Comment the default code in the StartUp.cs file.

Image 20

  • Add Html files in wwwroot folder

Image 21

  • Add “Microsoft.AspNetCore.StaticFiles” into the project.json file under the dependencies section

Image 22

  • Restoring of packages once we save the file in VS 2015
  • Add app.UseStaticFiles() into the startup file into the configure method.

Image 23

  • Run the application with the static URL for e.g. http://localhost:50938/Sample.html

Image 24

  • MVC
    • Add “Microsoft.AspNetCore.Mvc” into the project.json file

Image 25

  • Add MVC structure (Add Controllers and Views Folder and default files into that)

Image 26

  • Add  services.AddMvc() in the «ConfigureServices» method  into the startup file
  • Add the following code into the «Configure» method related to MVc route
app.UseMvc(routes =>
      {
        routes.MapRoute(
          name: "default",
          template: "{controller}/{action}/{id?}",
          defaults: new { controller = "Home", action = "Index" }
        );
      });

Image 27

  • Run the application with the MVC URL for e.g. http://localhost:50938/Home/Index

Image 28

  • Class Library Concept:
    • Add Class library to extract any common code (type .NET core)

Image 29

  • Create interface and class and implement some logic

Image 30

  • Mention the entry into the main project’s project.json “for the class library” to use it in the main project. For e.g. «ClassLibrary1»: «1.0.0-*»

Image 31

  • Use it as a service in Startup.cs file using dependency injection concept. For e.g.  services.AddSingleton<IInterface, Class1>();

Image 32

  • Implement the same into the controller as «Controller Injection»

Image 33

  • Run the application with the MVC URL for e.g. http://localhost:50938/Home/Index

Image 34

  • Middleware Concept:
    • Comment all the code in the «Configure» method into the StartUp.cs file.

Image 35

  • Add middleware class into the main project.

Image 36

  • Few changes into the «Invoke» method into the middleware class for e.g.  
public Task Invoke(HttpContext httpContext)
{
  httpContext.Response.WriteAsync("Middleware Output");
  return _next(httpContext);
}

Image 37

  • Use the same middleware class into the startup file for e.g. app.UseMiddleware();

Image 38

  • Run the application  for e.g. http://localhost:50938 

Image 39

Download demo3 attachment for the reference.

Points of Interest

I loved using .NET core as it allows us to develop application on any platform and apart from that if the application is developed on Windows or Linux,it can be deployed on both of them.

Thats amazing thing by Microsoft :)

Reference Demos

I have attached three demo files for the demostration of the explaination showed in the above article.

  • Download demo 3 — 184.9 KB
  • Download demo 2 — 53.9 KB
  • Download demo 1 — 61.2 KB

Introduction

This article will cover the following things

  • Brief Concepts
  • Implementation — Two ways to develop an application in Windows:
  • Implementation — Develop application in Windows:
  • Implementation — Install .NET Core on Linux Server (Ubuntu 16.04)
  • Implementation — Deploy Application (Created on Windows) on Linux Server (Ubuntu 16.04)
  • Implementation — Develop application on Linux
  • Implementation — Develop a MVC application on Windows using Visual Studio:

Brief Concepts

What is Dot Net Core?

  • Development platform/framework maintained by Microsoft.
  • It supports following OS:
    • Windows
    • MAC
    • Linux
    • cloud
    • Embedded/IOT scenarios

Features

  • Flexible deployment: 
    • Can be deployed on all the supported machines.
  • Cross-platform: 
    • Runs on Windows, MAC and Linux; — — will be covered in today’s session
    • Can be ported to other OS. — — will be covered in today’s session
  • Can be installed by any command line tool.
  • Compatibility:
    • NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard Library.
  • Open source: 
    • The .NET Core platform is open source: https://github.com/dotnet/core

Implementation (Using Code):

1. Two ways to develop an application in Windows

  • Using command line
  • Using Visual Studio IDE

2. Develop application in Windows

2.1. Using Command Line — STEPS

  • Download .NET Core SDK for Windows from the prior path

Image 1

  • Open cmd.exe / relevant command line tool
  • Follow the below commands to create a sample project and install .NET core
    • cd C:Gourav_PersonalStudy Material.NET COREDemo
    • mkdir demo1
    • cd demo1
    • dotnet new

Image 2

  • Restore the packages and run the project
    • dotnet restore
    • dotnet run

Image 3

Download demo1 attachment for the reference.

2.2. Using Visual Studio — STEPS

  • Install and Open VS 2015 with update 3 or above
  • Install .NET Core RC2 Package
  • Create a project
  • Choose .NET Core tab and select console application(.NET Core)

Image 4

  • Write few line of codes in program.cs

Image 5

  • Run the application.

Image 6

Download demo2 attachment for the reference.

3. Install .NET Core on Linux Server (Ubuntu 16.04)

  • I am using Oracle Virtual Box with Ubuntu 16.04 image on my windows machine to execute this use case.
  • Run the following commands to get this working:
    • sudo sh -c ‘echo «deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ trusty main» > /etc/apt/sources.list.d/dotnetdev.list’
    • sudo apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv-keys 417A0893
    • sudo apt-get update

Image 7

  • Install the following package on your Linux machine:
    • http://packages.ubuntu.com/pl/trusty/amd64/libicu52/download

Image 8

  • Now GO to the downloaded location and run the following commands :
    • sudo dpkg -i libicu52_52.1-3ubuntu0.4_amd64.deb

Image 9

  • sudo apt-get install dotnet-sharedframework-microsoft.netcore.app-1.0.0-rc2-3002702

Image 10

  • sudo apt-get install dotnet-dev-1.0.0-preview2-003121

Image 11

4. Deploy Application (Created on Windows) on Linux Server (Ubuntu 16.04)

  • Move the demo1 application attached in the article into the Linux machine and un-pack it.
  • Go the application location in terminal.

Image 12

  • Restore the packages and run the project
    • dotnet restore

Image 13

  • dotnet run

Image 14

5. Develop application on Linux

STEPS

  • Open Terminal
  • Follow the below commands to create a sample project and install .NET core
    • cd Downloads
    • mkdir demo2
    • cd demo2
    • dotnet new

Image 15

  • Restore the packages and run the project
    • dotnet restore
    • dotnet run

Image 16

6. Develop a MVC application on Windows using Visual Studio

STEPS – Multiple Concepts

  • General:
    • Open VS 2015 and Create Project

Image 17

  • Choose Web — > ASP .NET Core Web Application (.NET Core) and Choose template – Empty (To understand the concept better)

Image 18

  • Run the application

Image 19

  • Static Files:
    • Comment the default code in the StartUp.cs file.

Image 20

  • Add Html files in wwwroot folder

Image 21

  • Add “Microsoft.AspNetCore.StaticFiles” into the project.json file under the dependencies section

Image 22

  • Restoring of packages once we save the file in VS 2015
  • Add app.UseStaticFiles() into the startup file into the configure method.

Image 23

  • Run the application with the static URL for e.g. http://localhost:50938/Sample.html

Image 24

  • MVC
    • Add “Microsoft.AspNetCore.Mvc” into the project.json file

Image 25

  • Add MVC structure (Add Controllers and Views Folder and default files into that)

Image 26

  • Add  services.AddMvc() in the «ConfigureServices» method  into the startup file
  • Add the following code into the «Configure» method related to MVc route
app.UseMvc(routes =>
      {
        routes.MapRoute(
          name: "default",
          template: "{controller}/{action}/{id?}",
          defaults: new { controller = "Home", action = "Index" }
        );
      });

Image 27

  • Run the application with the MVC URL for e.g. http://localhost:50938/Home/Index

Image 28

  • Class Library Concept:
    • Add Class library to extract any common code (type .NET core)

Image 29

  • Create interface and class and implement some logic

Image 30

  • Mention the entry into the main project’s project.json “for the class library” to use it in the main project. For e.g. «ClassLibrary1»: «1.0.0-*»

Image 31

  • Use it as a service in Startup.cs file using dependency injection concept. For e.g.  services.AddSingleton<IInterface, Class1>();

Image 32

  • Implement the same into the controller as «Controller Injection»

Image 33

  • Run the application with the MVC URL for e.g. http://localhost:50938/Home/Index

Image 34

  • Middleware Concept:
    • Comment all the code in the «Configure» method into the StartUp.cs file.

Image 35

  • Add middleware class into the main project.

Image 36

  • Few changes into the «Invoke» method into the middleware class for e.g.  
public Task Invoke(HttpContext httpContext)
{
  httpContext.Response.WriteAsync("Middleware Output");
  return _next(httpContext);
}

Image 37

  • Use the same middleware class into the startup file for e.g. app.UseMiddleware();

Image 38

  • Run the application  for e.g. http://localhost:50938 

Image 39

Download demo3 attachment for the reference.

Points of Interest

I loved using .NET core as it allows us to develop application on any platform and apart from that if the application is developed on Windows or Linux,it can be deployed on both of them.

Thats amazing thing by Microsoft :)

Reference Demos

I have attached three demo files for the demostration of the explaination showed in the above article.

Статья открывает цикл уроков, посвященный языку программирования C# и платформе .NET. В этом уроке будет рассмотрен вопрос установки .NET, познакомимся со средами разработки для языка C# и создадим “Hello, World!”-проект.

  • Платформа .NET и язык C#
  • Версии .NET
  • Установка .NET
    • .NET Framework
    • .NET Core
      • Установка для Windows
      • Установка на Linux
  • Среда разработки (IDE)
    • Microsoft Visual Studio
    • VS Code
    • JetBrains Rider
    • Онлайн интерпретаторы
  • Hello, World” на C#
    • Создание проекта в Microsoft Visual Studio (Windows)
    • Создание проекта с использованием средств .NET Core (Windows и Linux)
    • Компиляция файла с исходным кодом вручную (Windows)

Платформа .NET и язык C#

.NET является программной платформой, разработанной компанией Microsoft. Выделим некоторые из ее особенностей:

  • Мультиязыковая ориентированность. Основным языком программирования для .NET является C#, помимо него платформа поддерживает еще ряд языков: VB.NET, F#, C++ и др. Эта возможно благодаря тому, что в основе платформы лежит общеязыковая среда исполнения Common Language Runtime (CLR). Код на любом из поддерживаемых языков компилируется в сборку на языке CIL (Common Intermediate Language) – аналог ассемблера для .NET, что позволяет разрабатывать отдельные части приложения на разных языках.
  • Кроссплатформенность. Еще одной особенностью платформы является поддержка большинства современных ОС (Windows, MacOS, Linux). Это позволяет заниматься разработкой приложений на языке C# на той ОС которая вам ближе, а запускать их можно на разных ОС и архитектурах.
  • Обширная библиотека классов. Платформа включает в себя большое количество библиотек классов. Все они доступны для любого поддерживаемого языка. Внутри библиотек можно найти готовые инструменты для решения широкого круга задач.
  • Широкий спектр решений для создания приложений. В рамках платформы .NET разработчик получает доступ к  большому количеству  инструментов для решения различных задач: ADO.NET и Entity Framework для работы с базами данных, WPF и UWP для разработки десктопных графических приложений, ASP.NET для разработки веб-приложений, Blazor для frontend разработки и т.д.

На  текущий момент язык программирования С# – это отличный инструмент для решения практически любых задач. Он является объектно-ориентированным, синтаксически похож на  C++ и Java. По данным рейтинга TIOBE Index C# занимает пятое место на  момент написания статьи (2020).

Версии .NET

Первая версия платформы называлась .NET Framework, она была представлена в 2002 году. Долгое время она существовала преимущественно для операционной системы Windows. В 2016 году Microsoft выпустила полностью кроссплатформенную среду .NET Core с открытым исходным кодом для разработки ПО под операционные системы Windows, Linux и MacOS. В этом временном промежутке было несколько попыток создать кроссплатформенную версию .NET, среди проектов, которые получили популярность можно отметить Mono от компании Xamarin (ранее Novell). Проект был представлен в 2004, неплохо развивался, и в 2016 году Microsoft купила XamarinXamarin SDK была добавлена в IDE Visual Studio как бесплатный инструмент.

На текущий момент мы находимся на пороге нового витка развития .NET – это появление .NET 5. Это важный этап развития платформы, начиная с которого .NET станет полностью открытой кроссплатформенной средой для всех популярных ОС, больше не будет отдельной версии .NET Framework для Windows и открытой .NET Core, .NET 5 включит в себя все наработки, которые были сделаны за это долгое время. О том, как она выглядит структурно можете посмотреть на картинке ниже.

(Изображение взято с блога Microsoft)

Установка .NET

.NET Framework

.NET Framework используется в Windows и входит в состав ОС начиная с Windows 7, более ранние версии .NET Framework необходимо было самостоятельно устанавливать перед началом разработки. На текущий момент самая новая версия: .NET Framework 4.8. Для того чтобы начать разработку под эту платформу необходимо установить среду Microsoft Visual Studio, о том, как это сделать читайте далее.

.NET Core

Для разработки приложений под .NET Core необходимо скачать соответствующий дистрибутив и установить его. Перейдя по ссылке https://dotnet.microsoft.com/download/dotnet-core вы увидите все версии .NET Core. На момент написания статьи стабильная и рекомендуемая версия – 3.1. На ее примере мы и произведем знакомство с процессом установки. 

Выберите в таблице – .NET Core 3.1

В следующем окне вы увидите разные релизы платформы, нас интересует самый верхний. В строке нужного релиза найдите раздел Build apps – SDK.

В зависимости от ОС, под которой вы будете разрабатывать, нажмите на соответствующую ссылку для скачивания дистрибутива.

Установка для Windows

Выберете дистрибутив под Windows и дождидесь его скачивания. После запуска файла установки, на первом экране вы увидите краткую информацию о продукте. Нажмите на кнопку “Установить”.

Начнется установка компонентов платформы .NET Core. Если все пройдет успешно, то в конце этого процесса будет представлен отчет об установке.

На этом процесс установки для Windows можно считать завершенным.

Установка .NET на Linux

Перейдите на страницу официальной документации Microsoft по установке .NET Core и убедитесь, что ваша операционная система (тип и версия) поддерживает возможность установки .NET Core

Далее рассмотрим пример для Ubuntu. Перейдите в соответствующий раздел документации, нас интересует Ubuntu 20.03 и .NET Core 3.1.

Согласно приведенной инструкции нужно выполнить несколько шагов. Добавьте ключ подписывания пакета Microsoft в список доверенных ключей и добавьте репозиторий пакетов:

> wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

> sudo dpkg -i packages-microsoft-prod.deb

После этого запустите установку SDK:

> sudo apt-get update; 
sudo apt-get install -y apt-transport-https && 
sudo apt-get update && 
sudo apt-get install -y dotnet-sdk-3.1

Для проверки того, что .NET Core установлен на вашей Linux машине можете проверить версии пакета SDK:

> dotnet --list-sdks
3.1.202 [/usr/share/dotnet/sdk]

И проверить версии среды выполнения:

> dotnet --list-runtimes
Microsoft.AspNetCore.App 3.1.4 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.4 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

Среда разработки (IDE)

Средство разработки, которое включает в себя мощный редактор кода и набор инструментов для работы с проектом, его сборки и т.п. называется IDE. На данный момент существует несколько IDE, в которых есть все необходимое для того чтобы начать путь разработчика на C#, далее будут рассмотрены процессы установки Microsoft Visual Studio, VS Code, JetBrains Rider на ОС Windows.

Microsoft Visual Studio

Если ваша основная ОС это Windows, то одним из самых мощных и удобных средств для разработки приложений под эту платформу является Visual Studio. Это полнофункциональная среда позволяет разрабатывать все типы приложений под Windows, Android, iOS, Linux, веб-сервисы и облачные приложения, поддерживает как .NET Framework так и .NET Core. На момент написания статьи самая актуальная версия этого продукта – это Visual Studio 2019, она имеет ряд лицензий – Community, Professional, Enterprise. Для начинающего разработчика Community варианта будет более чем достаточно, эта лицензия позволяет разрабатывать даже коммерческое ПО, но у нее есть некоторые ограничения, более подробная информация по этому вопросу есть на официальном сайте Microsoft.

Для загрузки Visual Studio перейдите по  ссылке https://visualstudio.microsoft.com/ru/downloads/. Нажмите кнопку “Скачать бесплатно” под редакцией Community.

Сохраните файл установки на компьютере. Это веб-установщик, поэтому он имеет небольшой размер. Запустите его, в результате вам будет представлено окно приветствия.

Нажмите на кнопку “Продолжить” дождитесь окончания подготовительного этапа. После этого откроется окно с настройкой компонентов, для выполнения всех работ по курсу достаточно выбрать “Разработка классических приложений .NET”, “ASP.NET и Разработка веб-приложений”.

Дождитесь окончания установки, это может занять продолжительное время в зависимости от мощности вашего компьютера и скорости доступа в интернет.

Microsoft VS Code

Еще один продукт от Microsoft, он позиционируется как легковесный редактор кода, включает в себя отладчик, инструменты для работы с Git, подсветку синтаксиса, IntelliSense, средства для рефакторинга и многое другое. VS Code предоставляет большое количество настроек визуального оформления редактора. 

Для его установки перейдите по  ссылке https://code.visualstudio.com/?wt.mc_id=vscom_downloads.

Нажмите на кнопку “Download for Windows” и сохраните дистрибутив на свой компьютер. 

Запустите скачанный файл. Нажмите “Далее” в окне с лицензионным соглашением.

В следующем окне оставьте все галочки без изменений и нажмите “Далее”.

В последнем окне нажмите кнопку “Установить” и дождитесь окончания установки.

Установка завершена.

JetBrains Rider

Познакомимся еще с одной IDE теперь от другого разработчика – JetBrains. Rider это кроссплатформенная интегрированная среда разработки ПО для платформы .NET. Для ее скачивания перейдите  по следующей ссылке https://www.jetbrains.com/ru-ru/rider/download/#section=windows

Нажмите кнопку “Скачать”, дождитесь загрузки дистрибутива и запустите его.

Нажмите “Next” и выберите место установки. На следующем экране можно произвести дополнительные настройки ассоциации файлов или оставить все как есть, после этого нажмите кнопку “Next”, а затем “Install”. 

Дождитесь окончания установки.

Онлайн интерпретаторы

Если вы хотите быстро проверить работу вашего кода, то лучше всего для этого подойдет онлайн интерпретатор C#. Далее приведены несколько проектов, которые можно использовать для этой цели:

https://www.onlinegdb.com/online_csharp_compiler

https://repl.it/languages/csharp

https://ideone.com/

https://www.jdoodle.com/compile-c-sharp-online/

“Hello, World” на C#

Создание проекта в Microsoft Visual Studio (Windows)

Создадим первый проект на языке C# для Windows. Для этого запустите Visual Studio, при первом запуске появится окно “Добро пожаловать”.

Снимите галочку “Проверка подлинности …”, если у вас есть Microsoft-аккаунт, то нажмите на кнопку “Войти”, если нет, то на надпись “Не сейчас, возможно позже”.

Далее выберите тему по вкусу и нажмите “Запуск Visual Studio”.

Все подготовительные шаги пройдены, нажмите на кнопку “Создание проекта”.

Выберете шаблон “Консольное приложение” и нажмите “Далее”.

Укажите имя проекта, например “MyFirstProject” и место где он будет сохранен.

В результате будет открыто окно Visual Studio с созданным проектом. 

Проект в Visual Studio представляет собой набор файлов, их структура представлена в окне “Обозреватель решения”. Основной файл, который нас сейчас интересует это Program.cs. Откройте его, мы добавили поясняющие комментарии в код модуля:

using System; // Подключаем библиотеку System

// Пространство имен, с классом Program
namespace MyFirstProject 
{
    // Объявление класса Program
    class Program
    {
        // Точка входа. Метод, который будет запущен первым при старте приложения
        static void Main(string[] args)
        {
            // Вывод текста "Hello World!" в консоль
            Console.WriteLine("Hello World!"); 
        }
    }
}

Запустим наше приложение и посмотрим, что произойдет.

Для этого можно использовать несколько способов:

  • На панели вверху нажать кнопку с изображением зеленого треугольника.  Название у кнопки будет такое же как у вашего “решения”. 
  • Нажать сочетание клавиш Ctrl + F5, запустится “решение” без отладки, либо F5 для режима отладки.
  • Через панель меню: Отладка -> “Запуск без отладки”

Запустите приложение любым вышеописанным способом, в результате появится консоль, в которой будет выведено сообщение “Hello World!“.

Процесс запуска приложения “под капотом” достаточно сложен, он включает в себя создание ряда каталогов, компиляцию проекта в сборку (файл с расширением .exe) и непосредственно запуск получившегося файла. Результат сборки вы можете найти в папке <Папка проекта>binDebug – если выбран режим сборки Debug, либо в  <Папка проекта>binRelease – если выбран Release. Режим по умолчанию – это Debug

Создание проекта с использованием средств .NET Core (Windows и Linux)

В этом разделе мы познакомимся с консольным инструментом .NET Core для создания, сборки и запуска проектов. Приведенный подход работает в Windows и Linux. Перейдите в каталог, в котором вы хотите работать с вашим проектом. Откройте консоль (если вы работаете в Windows, то нажмите сочетание клавиш Win+R и введите cmd), и с помощью команды cd перейдите в папку с проектом:

> cd c:MyFirstProject

Для создания проекта в .NET Core используется команда dotnet new, после которой указывается тип проекта. Так как мы будем работать с консольным приложением, то нужно указать тип console:

> dotnet new console

После выполнения команды в папке с проектом будет размещен необходимый набор файлов. Для запуска проекта воспользуйтесь командой:

> dotnet run

Как и в случае с проектом в Visual Studio, в консоли будет выведен текст “Hello World!”.

Поработаем над кодом программы: вместо текста выведем текущую дату. Для этого в файле Program.cs замените строку

Console.WriteLine(“Hello World!”);

на

Console.WriteLine(DateTime.Now);

Сохраните файл и выполните команду:

> dotnet run

Вместо текста в консоли должна появиться текущая дата.

Компиляция файла с исходным кодом вручную (Windows)

Познакомимся с компилятором C#, из .NET Framework (только для Windows). Создайте пустой каталог, а в нем файл Program.cs. Откройте его текстовым редактором и внесите туда следующий код:

using System;

namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now);
        }
    }
}

В меню “Пуск” найдите и откройте “Developer Command Prompt for VS 2019”, перейдите в каталог с файлом и выполните в нем команду:

> csc.exe Program.cs

Если компиляция прошла успешно, то должен появиться файл Program.exe. Запустите  его для этого введите в терминале:

> Program.exe

В результате должны быть выведены текущие дата и время.

Содержание

  1. Запуск приложения в ASP.NET Core
  2. Класс Startup
  3. Несколько запусков
  4. Метод ConfigureServices
  5. Метод Configure
  6. Настройка служб без запуска
  7. Расширение класса Startup с использованием фильтров запуска
  8. Добавление конфигурации из внешней сборки при запуске
  9. Дополнительные ресурсы
  10. Класс Startup
  11. Несколько запусков
  12. Метод ConfigureServices
  13. Метод Configure
  14. Настройка служб без запуска
  15. Расширение класса Startup с использованием фильтров запуска
  16. Создание исполняемого файла
  17. Создание кроссплатформенного двоичного файла
  18. Публикация зависящих от среды приложений
  19. Преимущества
  20. Недостатки
  21. Примеры
  22. Публикация автономных приложений
  23. Преимущества
  24. Недостатки
  25. Примеры
  26. Публикация с использованием образов ReadyToRun
  27. Преимущества
  28. Недостатки
  29. Примеры
  30. .NET Core Workers как службы Windows
  31. Создание worker
  32. Создание Worker в Visual Studio
  33. Создание Worker в командной строке
  34. Запуск в виде службы Windows
  35. Установка Worker
  36. Логирование
  37. Дальнейшая работа
  38. Поддерживаемые выпуски
  39. Неподдерживаемые выпуски
  40. Сведения о среде выполнения
  41. Сведения о пакете SDK
  42. Зависимости
  43. Автономная установка для Windows 7
  44. Windows 7 / Vista / 8.1 / Server 2008 R2 / Server 2012 R2
  45. Установка с помощью функции автоматизации PowerShell
  46. Установка с помощью Visual Studio
  47. Выбор рабочей нагрузки
  48. Установка вместе с Visual Studio Code
  49. Установщик Windows
  50. Скачивание и установка вручную
  51. Docker
  52. Размещение ASP.NET Core в службе Windows
  53. Предварительные требования
  54. Шаблон службы рабочей роли
  55. Конфигурация приложения
  56. Тип развертывания
  57. Зависящее от платформы развертывание (FDD)
  58. Автономное развертывание
  59. Учетная запись пользователя службы
  60. Права на вход в качестве службы
  61. Создание службы Windows и управление ею
  62. Создание службы
  63. Запуск службы
  64. Определение состояния службы
  65. Остановка службы
  66. Удаление службы
  67. Сценарии использования прокси-сервера и подсистемы балансировки нагрузки
  68. Настройка конечных точек
  69. Текущий каталог и корневой каталог содержимого
  70. Использование ContentRootPath или ContentRootFileProvider
  71. Хранение файлов службы в подходящем расположении на диске
  72. Устранение неполадок
  73. Распространенные ошибки
  74. Журналы событий системы и приложений
  75. Запуск приложения в командной строке
  76. Очистка кэшей пакетов
  77. Медленно работающее или неотвечающее приложение
  78. Аварийное завершение работы приложения или исключение
  79. Приложение не отвечает на запросы, не запускается или работает в обычном режиме
  80. Анализ дампа
  81. Дополнительные ресурсы
  82. Предварительные требования
  83. Конфигурация приложения
  84. Тип развертывания
  85. Зависящее от платформы развертывание (FDD)
  86. Автономное развертывание
  87. Учетная запись пользователя службы
  88. Права на вход в качестве службы
  89. Создание службы Windows и управление ею
  90. Создание службы
  91. Запуск службы
  92. Определение состояния службы
  93. Остановка службы
  94. Удаление службы
  95. Обработка событий запуска и остановки
  96. Сценарии использования прокси-сервера и подсистемы балансировки нагрузки
  97. Настройка конечных точек
  98. Текущий каталог и корневой каталог содержимого
  99. Указание папки приложения в качестве пути корневого каталога содержимого
  100. Хранение файлов службы в подходящем расположении на диске
  101. Устранение неполадок
  102. Распространенные ошибки
  103. Журналы событий системы и приложений
  104. Запуск приложения в командной строке
  105. Очистка кэшей пакетов
  106. Медленно работающее или неотвечающее приложение
  107. Аварийное завершение работы приложения или исключение
  108. Приложение не отвечает на запросы, не запускается или работает в обычном режиме
  109. Анализ дампа
  110. Дополнительные ресурсы
  111. Предварительные требования
  112. Конфигурация приложения
  113. Тип развертывания
  114. Зависящее от платформы развертывание (FDD)
  115. Автономное развертывание
  116. Учетная запись пользователя службы
  117. Права на вход в качестве службы
  118. Создание службы Windows и управление ею
  119. Создание службы
  120. Запуск службы
  121. Определение состояния службы
  122. Остановка службы
  123. Удаление службы
  124. Обработка событий запуска и остановки
  125. Сценарии использования прокси-сервера и подсистемы балансировки нагрузки
  126. Настройка конечных точек
  127. Текущий каталог и корневой каталог содержимого
  128. Указание папки приложения в качестве пути корневого каталога содержимого
  129. Хранение файлов службы в подходящем расположении на диске
  130. Устранение неполадок
  131. Распространенные ошибки
  132. Журналы событий системы и приложений
  133. Запуск приложения в командной строке
  134. Очистка кэшей пакетов
  135. Медленно работающее или неотвечающее приложение
  136. Аварийное завершение работы приложения или исключение
  137. Приложение не отвечает на запросы, не запускается или работает в обычном режиме
  138. Анализ дампа

Запуск приложения в ASP.NET Core

Авторы: Рик Андерсон (Rick Anderson), Том Дайкстра (Tom Dykstra) и Стив Смит (Steve Smith)

Класс Startup настраивает службы и конвейер запросов приложения.

Класс Startup

ConfigureServices и Configure вызываются средой выполнения ASP.NET Core при запуске приложения:

Предыдущий пример предназначен для Razor Pages; версия для MVC похожа.

Класс Startup указывается при создании узла приложения. Класс Startup обычно указывается путем вызова метода WebHostBuilderExtensions.UseStartup в построителе узлов.

При использовании универсального узла (IHostBuilder) в конструктор Startup могут внедряться только следующие типы служб:

Несколько запусков

Дополнительные сведения об узле см. в разделе Узел. Сведения об обработке ошибок во время запуска см. в разделе Обработка исключений при запуске.

Метод ConfigureServices

Для функций, нуждающихся в значительной настройке, существуют методы расширения Add в IServiceCollection. Например, Add DbContext, Add DefaultIdentity, Add EntityFrameworkStores и AddRazorPages:

Метод Configure

Шаблоны ASP.NET Core настраивают конвейер с поддержкой следующих компонентов и функций:

Предыдущий пример предназначен для Razor Pages; версия для MVC похожа.

Каждый метод расширения Use добавляет один или несколько компонентов ПО промежуточного слоя в конвейер запросов. Например, UseStaticFiles настраивает ПО промежуточного слоя для обслуживания статических файлов.

Каждый компонент ПО промежуточного слоя в конвейере запросов отвечает за вызов следующего компонента в конвейере или замыкает цепочку, если это необходимо.

Дополнительные сведения об использовании IApplicationBuilder и порядке обработки ПО промежуточного слоя см. в статье ПО промежуточного слоя ASP.NET Core.

Настройка служб без запуска

Расширение класса Startup с использованием фильтров запуска

Используйте IStartupFilter в следующих случаях:

Каждый интерфейс IStartupFilter может добавлять один или несколько компонентов ПО промежуточного слоя в конвейер запросов. Фильтры вызываются в том порядке, в котором они были добавлены в контейнер службы. Фильтры могут добавлять ПО промежуточного слоя до или после передачи управления следующему фильтру, поэтому они добавляются в начало или конец конвейера приложения.

RequestSetOptionsMiddleware настраивается в классе RequestSetOptionsStartupFilter :

IStartupFilter регистрируется в контейнере службы в ConfigureServices.

Порядок выполнения ПО промежуточного слоя определяется порядком регистраций IStartupFilter :

Несколько реализаций IStartupFilter могут взаимодействовать с одними и теми же объектами. Если важен порядок, упорядочите регистрации службы IStartupFilter в соответствии с требуемым порядком выполнения ПО промежуточного слоя.

Добавление конфигурации из внешней сборки при запуске

Дополнительные ресурсы

Класс Startup

ConfigureServices и Configure вызываются средой выполнения ASP.NET Core при запуске приложения:

Класс Startup указывается при создании узла приложения. Класс Startup обычно указывается путем вызова метода WebHostBuilderExtensions.UseStartup в построителе узлов.

Типичным применением внедрения зависимостей в класс Startup является внедрение:

Несколько запусков

Дополнительные сведения об узле см. в разделе Узел. Сведения об обработке ошибок во время запуска см. в разделе Обработка исключений при запуске.

Метод ConfigureServices

Для функций, нуждающихся в значительной настройке, существуют методы расширения Add в IServiceCollection. Например, Add DbContext, Add DefaultIdentity, Add EntityFrameworkStores и AddRazorPages:

Подробнее о SetCompatibilityVersion см. в сведениях о SetCompatibilityVersion.

Метод Configure

Шаблоны ASP.NET Core настраивают конвейер с поддержкой следующих компонентов и функций:

Каждый метод расширения Use добавляет один или несколько компонентов ПО промежуточного слоя в конвейер запросов. Например, UseStaticFiles настраивает ПО промежуточного слоя для обслуживания статических файлов.

Каждый компонент ПО промежуточного слоя в конвейере запросов отвечает за вызов следующего компонента в конвейере или замыкает цепочку, если это необходимо.

Дополнительные сведения об использовании IApplicationBuilder и порядке обработки ПО промежуточного слоя см. в статье ПО промежуточного слоя ASP.NET Core.

Настройка служб без запуска

Расширение класса Startup с использованием фильтров запуска

Используйте IStartupFilter в следующих случаях:

Каждый интерфейс IStartupFilter может добавлять один или несколько компонентов ПО промежуточного слоя в конвейер запросов. Фильтры вызываются в том порядке, в котором они были добавлены в контейнер службы. Фильтры могут добавлять ПО промежуточного слоя до или после передачи управления следующему фильтру, поэтому они добавляются в начало или конец конвейера приложения.

RequestSetOptionsMiddleware настраивается в классе RequestSetOptionsStartupFilter :

IStartupFilter регистрируется в контейнере службы в ConfigureServices.

Порядок выполнения ПО промежуточного слоя определяется порядком регистраций IStartupFilter :

Несколько реализаций IStartupFilter могут взаимодействовать с одними и теми же объектами. Если важен порядок, упорядочите регистрации службы IStartupFilter в соответствии с требуемым порядком выполнения ПО промежуточного слоя.

Источник

Оба режима публикации по умолчанию создают исполняемый файл, зависящий от платформы. Приложения, зависящие от среды, могут создаваться без исполняемого файла, и эти приложения являются кросс-платформенными.

В следующей таблице приведены команды, используемые для публикации автономных и зависящих от среды для каждой версии пакета SDK:

Создание исполняемого файла

Следующие команды создают исполняемый файл:

Создание кроссплатформенного двоичного файла

Кросс-платформенные двоичные файлы создаются при публикации приложения, зависящего от среды, в виде файла DLL. Файл DLL называется по имени вашего проекта. Например, если ваше приложение называется word_reader, создается файл с именем word_reader.dll. Приложения, опубликованные таким образом, выполняются с помощью команды dotnet на любой платформе.

Следующая команда создает кроссплатформенный двоичный файл:

Type SDK 2.1 SDK 3.x SDK 5.0 Команда
зависящий от среды кросс-платформенный двоичный файл. ✔️ ✔️ ✔️ dotnet publish

Публикация зависящих от среды приложений

Кроссплатформенный двоичный файл приложения можно запустить с помощью команды dotnet и выполнять на любой платформе. Если приложение использует пакет NuGet с реализациями, зависящими от платформы, все зависимости платформ копируются в папку публикации вместе с приложением.

Преимущества

Недостатки

Примеры

Публикация кросс-платформенного приложения, зависящего от среды. Исполняемый файл, предназначенный для текущей платформы, создается вместе с DLL-файлом.

Публикация автономных приложений

Если приложение имеет зависимости для определенной платформы, например пакет NuGet, содержащий зависимости для определенной платформы, они копируются в папку публикации вместе с приложением.

Преимущества

Недостатки

Усечение IL может еще больше уменьшить размер развертывания.

Примеры

Публикация автономного приложения. Создается 64-разрядный исполняемый файл macOS.

Публикация автономного приложения. Создается 64-разрядный исполняемый файл Windows.

Публикация с использованием образов ReadyToRun

Публикация с использованием образов ReadyToRun помогает оптимизировать время запуска приложения, хотя размер приложения при этом будет увеличен. Дополнительные сведения о публикации с использованием ReadyToRun см. здесь.

Преимущества

Недостатки

Примеры

Опубликуйте автономное приложение с помощью ReadyToRun. Создается 64-разрядный исполняемый файл macOS.

Опубликуйте автономное приложение с помощью ReadyToRun. Создается 64-разрядный исполняемый файл Windows.

Источник

.NET Core Workers как службы Windows

image loader

Создание worker

Примечание. В наших предварительных версиях шаблон worker находится в том же меню, что и веб-шаблоны. Это изменится в будущем выпуске. Мы намерены разместить шаблон Worker Service непосредственно в мастере создания нового проекта.

Создание Worker в Visual Studio

image loader

image loader

image loader

Создание Worker в командной строке

Выполните dotnet new worker

image loader

Запуск в виде службы Windows

Добавить пакет NuGet Microsoft.Extensions.Hosting.WindowsServices

image loader

Добавить вызов UseServiceBaseLifetime к HostBuilder в Program.cs

Этот метод делает несколько вещей. Во-первых, он проверяет, действительно ли приложение работает в качестве службы Windows, если это не так, то он выполняет noops, что делает этот метод безопасным для вызова при локальном запуске или в качестве службы Windows.

Установка Worker

Как только мы получили worker использовав ServiceBaseLifetime нам нужно установить его:

Во-первых, давайте опубликуем приложение. Мы установим Службу Windows in-place, что означает, что исполняемый файл будет заблокирован при каждом запуске службы. Публикация — это хороший способ убедиться, что все файлы, необходимые для запуска службы, находятся в одном месте и готовы к установке.

Далее можно использовать sc utility в командной строке администратора

image loader

Примечание о безопасности: Эта команда запускает службу как локальную систему, которая не является тем, что нужно. Вместо этого вы должны создать service account и запустить службу Windows в качестве этой учетной записи. Мы не будем говорить об этом здесь, но здесь есть некоторая документация по ASP.NET: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.2

Логирование

У системы логирования есть сервис «Event Log», который может отправлять сообщения логов непосредственно в журнал событий Windows. Чтобы войти в журнал событий, вы можете добавить Microsoft.Extensions.Logging.EventLog пакет, а затем изменить ваш Program.cs :

Дальнейшая работа

В следующих предварительных версиях мы планируем улучшить использование Workers с Windows Services:

Источник

.NET 5.0 является последней версией.

Поддерживаемые выпуски

Даты окончания жизненного цикла версий Windows 10 зависят от выпуска. В следующей таблице рассматриваются только выпуски Домашняя, Профессиональная, Pro для образовательных учреждений и Pro для рабочих станций. Дополнительные сведения см. в справочных материалах по жизненному циклу поддержки Windows.

Символ + представляет минимальную версию.

Операционная система .NET Core 2.1 .NET Core 3.1 .NET 5
Windows 11 ✔️ ✔️
Windows Server 2022 ✔️ ✔️
Windows 10, версия 21H1 ✔️ ✔️ ✔️
Windows 10 или Windows Server версии 20H2 ✔️ ✔️ ✔️
Windows 10 или Windows Server версии 2004 ✔️ ✔️ ✔️
Windows 10 или Windows Server версии 1909 ✔️ ✔️ ✔️
Windows 10 или Windows Server версии 1903 ✔️ ✔️ ✔️
Windows 10, версия 1809 ✔️ ✔️ ✔️
Windows 10, версия 1803 ✔️ ✔️ ✔️
Windows 10, версия 1709 ✔️ ✔️ ✔️
Windows 10 (версия 1607) ✔️ ✔️ ✔️
Windows 8.1 ✔️ ✔️ ✔️
Windows 7 с пакетом обновления 1 (SP1), ESU ✔️ ✔️ ✔️
Windows Server 2019
Windows Server 2016
Windows Server 2012 R2
Windows Server 2012
✔️ ✔️ ✔️
Windows Server Core 2012 R2 ✔️ ✔️ ✔️
Windows Server Core 2012 ✔️ ✔️ ✔️
Nano Server, версия 1809 и выше ✔️ ✔️ ✔️
Nano Server, версия 1803 ✔️ ✔️

Неподдерживаемые выпуски

Сведения о среде выполнения

В Windows можно установить три различные версии среды выполнения:

Сведения о пакете SDK

Зависимости

.NET 5.0 поддерживает следующие версии Windows:

Символ + представляет минимальную версию.

Операционная система Version Архитектуры
Windows 11 21H2 x64, ARM64
Клиент Windows 10 1607+ x64, x86, ARM64
Клиент Windows 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 x64, x86
Windows Server 2012+ x64, x86
Windows Server Core 2012+ x64, x86
Nano Server 1809+ X64

.NET Core 3.1 поддерживает следующие версии Windows:

Символ + представляет минимальную версию.

Операционная система Version Архитектуры
Windows 11 21H2 x64, ARM64
Клиент Windows 10 1607+ x64, x86
Клиент Windows 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 x64, x86
Windows Server 2012+ x64, x86
Nano Server 1803+ x64, ARM32

.NET Core 3.0 поддерживает следующие версии Windows:

Символ + представляет минимальную версию.

Операционная система Version Архитектуры
Клиент Windows 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 x64, x86
Клиент Windows 10 Версия 1607+ x64, x86
Windows Server 2012 R2+ x64, x86
Nano Server Версия 1803+ x64, ARM32

.NET Core 2.2 поддерживает следующие версии Windows:

Символ + представляет минимальную версию.

Операционная система Version Архитектуры
Клиент Windows 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 x64, x86
Клиент Windows 10 Версия 1607+ x64, x86
Windows Server 2008 R2 с пакетом обновления 1 или более поздней версии (SP1+) x64, x86
Nano Server Версия 1803+ x64, ARM32

.NET Core 2.1 поддерживает следующие версии Windows:

Символ + представляет минимальную версию.

Операционная система Version Архитектуры
Клиент Windows 7 с пакетом обновления 1 и более поздних версий (SP1+), 8.1 x64, x86
Клиент Windows 10 Версия 1607+ x64, x86
Windows Server 2008 R2 с пакетом обновления 1 или более поздней версии (SP1+) x64, x86
Nano Server Версия 1803+ x64,

Автономная установка для Windows 7

Обязательно ознакомьтесь с зависимостями ниже, необходимыми для Windows 7.

Windows 7 / Vista / 8.1 / Server 2008 R2 / Server 2012 R2

Приведенные выше требования также применяются, если возникает ошибка, связанная с любой из следующих библиотек DLL:

Установка с помощью функции автоматизации PowerShell

Сценарии dotnet-install используются для автоматизации непрерывной интеграции и ее осуществления без прав администратора. Вы можете скачать сценарий со страницы справочника по сценариям dotnet-install.

Установка с помощью Visual Studio

Если среда Visual Studio уже установлена, вы можете проверить ее версию, выполнив указанные ниже действия.

Выбор рабочей нагрузки

При установке или изменении Visual Studio выберите одну или несколько из следующих рабочих нагрузок в зависимости от типа создаваемого приложения:

windows install visual studio 2019

Установка вместе с Visual Studio Code

Visual Studio Code — это эффективный и облегченный редактор исходного кода, который работает на компьютере. Visual Studio Code доступен для Windows, macOS и Linux.

Установщик Windows

/quiet
Предотвращает отображение любого пользовательского интерфейса и запросов.

norestart
Предотвращает все попытки перезапуска.

В случае успешной установки установщик возвращает код 0; если требуется перезагрузка, установщик возвращает код 3010. Любое другое значение обычно является кодом ошибки.

Скачивание и установка вручную

Такой подход позволяет установить несколько версий в отдельные расположения, а затем явно выбрать расположение установки, которое должно использовать приложение, запустив приложение с переменными среды, указывающими на это расположение.

Docker

Контейнеры обеспечивают простой способ изоляции приложения от остальной части основной системы. Контейнеры на одном компьютере совместно использую только ядро, а также используют ресурсы, которые передаются в приложение.

Корпорация Майкрософт предоставляет образы, которые предназначены для конкретных сценариев. Например репозиторий ASP.NET Core содержит образы, которые предназначены для запуска приложений ASP.NET Core в рабочей среде.

Источник

Размещение ASP.NET Core в службе Windows

Приложение ASP.NET Core можно разместить в Windows в качестве службы Windows без использования IIS. При размещении в качестве службы Windows приложение автоматически запускается после перезагрузки сервера.

Предварительные требования

Шаблон службы рабочей роли

Шаблон службы рабочей роли ASP.NET Core может служить отправной точкой для написания длительно выполняющихся приложений служб. Чтобы использовать шаблон в качестве основы для приложения службы Windows, выполните указанные ниже действия.

Конфигурация приложения

IHostBuilder.UseWindowsService вызывается при сборке узла. Если приложение выполняется как служба Windows, метод отвечает за следующие действия:

В разделе CreateHostBuilder файла Program.cs:

Этот раздел сопровождают следующие примеры приложений:

Тип развертывания

Для службы на основе веб-приложений, которая использует платформы MVC или Razor Pages, укажите веб-пакет SDK в файле проекта.

Если служба выполняет только фоновые задачи (например, размещенные службы), укажите пакет SDK рабочей роли в файле проекта:

Зависящее от платформы развертывание (FDD)

Автономное развертывание

Для автономного развертывания необязательно наличие общей платформы в системе размещения. Среда выполнения и зависимости приложения развертываются с приложением.

, где содержится целевая платформа:

Чтобы выполнить публикацию для нескольких идентификаторов RID, сделайте следующее.

Учетная запись пользователя службы

Создайте для службы учетную запись пользователя с помощью командлета New-LocalUser в административной оболочке PowerShell 6.

Обновление Windows 10 за октябрь 2018 г. (версия 1809, сборка 10.0.17763) или более поздней версии:

Версия Windows, предшествующая обновлению Windows 10 за октябрь 2018 г. (версия 1809, сборка 10.0.17763):

Укажите надежный пароль при появлении соответствующего запроса.

Дополнительные сведения см. в статьях Microsoft.PowerShell.LocalAccounts и Service User Accounts (Учетные записи пользователей служб).

Альтернативный подход к управлению пользователями при работе с Active Directory заключается в применении управляемых учетных записей служб. Дополнительные сведения см. в обзоре групповых управляемых учетных записей службы.

Права на вход в качестве службы

Чтобы настроить право Вход в качестве службы для учетной записи пользователя службы, сделайте следующее:

Создание службы Windows и управление ею

Создание службы

Зарегистрируйте службу с помощью команды PowerShell. В административной оболочке PowerShell 6 выполните следующие команды:

Запуск службы

Запустите службу с помощью следующей команды PowerShell 6:

Команде потребуется несколько секунд, чтобы запустить службу.

Определение состояния службы

Чтобы проверить состояние службы, используйте следующую команду PowerShell 6:

Состояние отображается одним из следующих значений:

Остановка службы

Остановите службу с помощью следующей команды PowerShell 6:

Удаление службы

После небольшой задержки для остановки службы удалите службу с помощью следующей команды Powershell 6:

Сценарии использования прокси-сервера и подсистемы балансировки нагрузки

Для служб, которые взаимодействуют с запросами из Интернета или корпоративной сети и размещаются за прокси-сервером или подсистемой балансировки нагрузки, может потребоваться дополнительная настройка. Для получения дополнительной информации см. Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.

Настройка конечных точек

Дополнительные сведения о подходах к настройке URL-адресов и портов см. в соответствующей статье сервера:

В предыдущем руководстве рассматривается поддержка конечных точек HTTPS. Например, настройте приложение для HTTPS, если проверка подлинности используется со службой Windows.

Использование сертификата разработки ASP.NET Core HTTPS для защиты конечной точки службы не поддерживается.

Текущий каталог и корневой каталог содержимого

Для службы Windows GetCurrentDirectory возвращает текущий рабочий каталог C:WINDOWSsystem32. Папка system32 не подходит для хранения файлов службы (например, файлов параметров). Используйте один из следующих методов для сохранения ресурсов и файлов параметров службы и доступа к ним.

Использование ContentRootPath или ContentRootFileProvider

Когда приложение запускается как служба, UseWindowsService задает для свойства ContentRootPath значение AppContext.BaseDirectory.

Файлы стандартных параметров приложения appsettings.json и appsettings..json загружаются из корневого каталога содержимого приложения путем вызова CreateDefaultBuilder во время создания узла.

Для других файлов параметров, загруженных с помощью кода разработчика в ConfigureAppConfiguration, не нужно вызывать SetBasePath. В следующем примере файл custom_settings. JSON существует в корневом каталоге содержимого приложения и загружается без явного указания базового пути:

Не пытайтесь использовать GetCurrentDirectory, чтобы получить путь к ресурсу, так как приложение службы Windows возвращает папку C:WINDOWSsystem32 в качестве текущего каталога.

Хранение файлов службы в подходящем расположении на диске

Укажите абсолютный путь к папке, содержащей файлы, с помощью SetBasePath при использовании IConfigurationBuilder.

Устранение неполадок

Сведения об устранении неполадок в приложении службы Windows см. в статье Устранение неполадок и отладка проектов ASP.NET Core.

Распространенные ошибки

Журналы событий системы и приложений

Получите доступ к журналам событий системы и приложений:

Запуск приложения в командной строке

Многие ошибки запуска не создают полезные сведения в журналах событий. Для некоторых ошибок можно найти причину, запустив приложение в командной строке на компьютере размещения. Чтобы записать дополнительные сведения из приложения, снизьте уровень ведения журнала или запустите приложение в среде разработки.

Очистка кэшей пакетов

Удалите папки bin и obj.

Восстановите и перестройте проект.

Удалите все файлы из папки развертывания на сервере, прежде чем повторно развернуть приложение.

Медленно работающее или неотвечающее приложение

Аварийный дамп — это моментальный снимок системной памяти, который может помочь определить причину аварийного завершения, сбоя запуска или медленной работы приложения.

Аварийное завершение работы приложения или исключение

Получите и проанализируйте дамп из отчетов об ошибках Windows (WER):

Запустите скрипт PowerShell EnableDumps с именем исполняемого файла приложения:

Запустите приложение в условиях, вызывающих аварийное завершение.

После аварийного завершения запустите скрипт PowerShell DisableDumps:

Когда приложение аварийно завершит работу и сбор дампов будет выполнен, приложение сможет завершить работу обычным образом. Скрипт PowerShell настраивает отчеты об ошибках Windows для сбора до пяти дампов для приложения.

Аварийные дампы могут занимать много места на диске (до нескольких гигабайтов каждый).

Приложение не отвечает на запросы, не запускается или работает в обычном режиме

Когда приложение перестает отвечать на запросы (но аварийное завершение не происходит), не запускается или работает в обычном режиме, см. раздел Файлы дампа пользовательского режима: выбор лучшего инструмента, чтобы выбрать подходящий инструмент для создания дампа.

Анализ дампа

Дамп можно проанализировать несколькими способами. Дополнительные сведения см. в разделе Анализ файла дампа пользовательского режима.

Дополнительные ресурсы

Приложение ASP.NET Core можно разместить в Windows в качестве службы Windows без использования IIS. При размещении в качестве службы Windows приложение автоматически запускается после перезагрузки сервера.

Предварительные требования

Конфигурация приложения

Для записи данных в журнал событий Windows добавьте поставщик EventLog в ConfigureLogging. Задайте уровень ведения журнала с помощью ключа Logging:LogLevel:Default в файле appsettings.Production.json.

В следующем примере RunAsCustomService вызывается вместо RunAsService для обработки событий времени существования в приложении. Дополнительные сведения см. в разделе Обработка событий запуска и остановки.

Тип развертывания

Для службы на основе веб-приложений, которая использует платформы MVC или Razor Pages, укажите веб-пакет SDK в файле проекта.

Если служба выполняет только фоновые задачи (например, размещенные службы), укажите пакет SDK рабочей роли в файле проекта:

Зависящее от платформы развертывание (FDD)

Автономное развертывание

Для автономного развертывания необязательно наличие общей платформы в системе размещения. Среда выполнения и зависимости приложения развертываются с приложением.

, где содержится целевая платформа:

Чтобы выполнить публикацию для нескольких идентификаторов RID, сделайте следующее.

Для свойства задано значение true :

Учетная запись пользователя службы

Создайте для службы учетную запись пользователя с помощью командлета New-LocalUser в административной оболочке PowerShell 6.

Обновление Windows 10 за октябрь 2018 г. (версия 1809, сборка 10.0.17763) или более поздней версии:

Версия Windows, предшествующая обновлению Windows 10 за октябрь 2018 г. (версия 1809, сборка 10.0.17763):

Укажите надежный пароль при появлении соответствующего запроса.

Дополнительные сведения см. в статьях Microsoft.PowerShell.LocalAccounts и Service User Accounts (Учетные записи пользователей служб).

Альтернативный подход к управлению пользователями при работе с Active Directory заключается в применении управляемых учетных записей служб. Дополнительные сведения см. в обзоре групповых управляемых учетных записей службы.

Права на вход в качестве службы

Чтобы настроить право Вход в качестве службы для учетной записи пользователя службы, сделайте следующее:

Создание службы Windows и управление ею

Создание службы

Зарегистрируйте службу с помощью команды PowerShell. В административной оболочке PowerShell 6 выполните следующие команды:

Запуск службы

Запустите службу с помощью следующей команды PowerShell 6:

Команде потребуется несколько секунд, чтобы запустить службу.

Определение состояния службы

Чтобы проверить состояние службы, используйте следующую команду PowerShell 6:

Состояние отображается одним из следующих значений:

Остановка службы

Остановите службу с помощью следующей команды PowerShell 6:

Удаление службы

После небольшой задержки для остановки службы удалите службу с помощью следующей команды Powershell 6:

Обработка событий запуска и остановки

Чтобы обработать события OnStarting, OnStarted и OnStopping, сделайте следующее:

Создайте метод расширения для IWebHost, который передает CustomWebHostService в Run:

В Program.Main вызовите метод расширения RunAsCustomService вместо RunAsService:

Сценарии использования прокси-сервера и подсистемы балансировки нагрузки

Для служб, которые взаимодействуют с запросами из Интернета или корпоративной сети и размещаются за прокси-сервером или подсистемой балансировки нагрузки, может потребоваться дополнительная настройка. Для получения дополнительной информации см. Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.

Настройка конечных точек

Дополнительные сведения о подходах к настройке URL-адресов и портов см. в соответствующей статье сервера:

В предыдущем руководстве рассматривается поддержка конечных точек HTTPS. Например, настройте приложение для HTTPS, если проверка подлинности используется со службой Windows.

Использование сертификата разработки ASP.NET Core HTTPS для защиты конечной точки службы не поддерживается.

Текущий каталог и корневой каталог содержимого

Для службы Windows GetCurrentDirectory возвращает текущий рабочий каталог C:WINDOWSsystem32. Папка system32 не подходит для хранения файлов службы (например, файлов параметров). Используйте один из следующих методов для сохранения ресурсов и файлов параметров службы и доступа к ним.

Указание папки приложения в качестве пути корневого каталога содержимого

ContentRootPath — это тот же путь, который предоставляется аргументу binPath при создании службы. Чтобы не вызывать метод GetCurrentDirectory для создания путей к файлам параметров, вызовите SetCurrentDirectory с указанным путем к корневому каталогу содержимого приложения.

В Program.Main определите путь к папке с исполняемым файлом службы и используйте этот путь, чтобы создать корневой каталог содержимого приложения.

Хранение файлов службы в подходящем расположении на диске

Укажите абсолютный путь к папке, содержащей файлы, с помощью SetBasePath при использовании IConfigurationBuilder.

Устранение неполадок

Сведения об устранении неполадок в приложении службы Windows см. в статье Устранение неполадок и отладка проектов ASP.NET Core.

Распространенные ошибки

Журналы событий системы и приложений

Получите доступ к журналам событий системы и приложений:

Запуск приложения в командной строке

Многие ошибки запуска не создают полезные сведения в журналах событий. Для некоторых ошибок можно найти причину, запустив приложение в командной строке на компьютере размещения. Чтобы записать дополнительные сведения из приложения, снизьте уровень ведения журнала или запустите приложение в среде разработки.

Очистка кэшей пакетов

Удалите папки bin и obj.

Восстановите и перестройте проект.

Удалите все файлы из папки развертывания на сервере, прежде чем повторно развернуть приложение.

Медленно работающее или неотвечающее приложение

Аварийный дамп — это моментальный снимок системной памяти, который может помочь определить причину аварийного завершения, сбоя запуска или медленной работы приложения.

Аварийное завершение работы приложения или исключение

Получите и проанализируйте дамп из отчетов об ошибках Windows (WER):

Запустите скрипт PowerShell EnableDumps с именем исполняемого файла приложения:

Запустите приложение в условиях, вызывающих аварийное завершение.

После аварийного завершения запустите скрипт PowerShell DisableDumps:

Когда приложение аварийно завершит работу и сбор дампов будет выполнен, приложение сможет завершить работу обычным образом. Скрипт PowerShell настраивает отчеты об ошибках Windows для сбора до пяти дампов для приложения.

Аварийные дампы могут занимать много места на диске (до нескольких гигабайтов каждый).

Приложение не отвечает на запросы, не запускается или работает в обычном режиме

Когда приложение перестает отвечать на запросы (но аварийное завершение не происходит), не запускается или работает в обычном режиме, см. раздел Файлы дампа пользовательского режима: выбор лучшего инструмента, чтобы выбрать подходящий инструмент для создания дампа.

Анализ дампа

Дамп можно проанализировать несколькими способами. Дополнительные сведения см. в разделе Анализ файла дампа пользовательского режима.

Дополнительные ресурсы

Приложение ASP.NET Core можно разместить в Windows в качестве службы Windows без использования IIS. При размещении в качестве службы Windows приложение автоматически запускается после перезагрузки сервера.

Предварительные требования

Конфигурация приложения

Для записи данных в журнал событий Windows добавьте поставщик EventLog в ConfigureLogging. Задайте уровень ведения журнала с помощью ключа Logging:LogLevel:Default в файле appsettings.Production.json.

В следующем примере RunAsCustomService вызывается вместо RunAsService для обработки событий времени существования в приложении. Дополнительные сведения см. в разделе Обработка событий запуска и остановки.

Тип развертывания

Для службы на основе веб-приложений, которая использует платформы MVC или Razor Pages, укажите веб-пакет SDK в файле проекта.

Если служба выполняет только фоновые задачи (например, размещенные службы), укажите пакет SDK рабочей роли в файле проекта:

Зависящее от платформы развертывание (FDD)

Автономное развертывание

Для автономного развертывания необязательно наличие общей платформы в системе размещения. Среда выполнения и зависимости приложения развертываются с приложением.

, где содержится целевая платформа:

Чтобы выполнить публикацию для нескольких идентификаторов RID, сделайте следующее.

Для свойства задано значение true :

Учетная запись пользователя службы

Создайте для службы учетную запись пользователя с помощью командлета New-LocalUser в административной оболочке PowerShell 6.

Обновление Windows 10 за октябрь 2018 г. (версия 1809, сборка 10.0.17763) или более поздней версии:

Версия Windows, предшествующая обновлению Windows 10 за октябрь 2018 г. (версия 1809, сборка 10.0.17763):

Укажите надежный пароль при появлении соответствующего запроса.

Дополнительные сведения см. в статьях Microsoft.PowerShell.LocalAccounts и Service User Accounts (Учетные записи пользователей служб).

Альтернативный подход к управлению пользователями при работе с Active Directory заключается в применении управляемых учетных записей служб. Дополнительные сведения см. в обзоре групповых управляемых учетных записей службы.

Права на вход в качестве службы

Чтобы настроить право Вход в качестве службы для учетной записи пользователя службы, сделайте следующее:

Создание службы Windows и управление ею

Создание службы

Зарегистрируйте службу с помощью команды PowerShell. В административной оболочке PowerShell 6 выполните следующие команды:

Запуск службы

Запустите службу с помощью следующей команды PowerShell 6:

Команде потребуется несколько секунд, чтобы запустить службу.

Определение состояния службы

Чтобы проверить состояние службы, используйте следующую команду PowerShell 6:

Состояние отображается одним из следующих значений:

Остановка службы

Остановите службу с помощью следующей команды PowerShell 6:

Удаление службы

После небольшой задержки для остановки службы удалите службу с помощью следующей команды Powershell 6:

Обработка событий запуска и остановки

Чтобы обработать события OnStarting, OnStarted и OnStopping, сделайте следующее:

Создайте метод расширения для IWebHost, который передает CustomWebHostService в Run:

В Program.Main вызовите метод расширения RunAsCustomService вместо RunAsService:

Сценарии использования прокси-сервера и подсистемы балансировки нагрузки

Для служб, которые взаимодействуют с запросами из Интернета или корпоративной сети и размещаются за прокси-сервером или подсистемой балансировки нагрузки, может потребоваться дополнительная настройка. Для получения дополнительной информации см. Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки.

Настройка конечных точек

Дополнительные сведения о подходах к настройке URL-адресов и портов см. в соответствующей статье сервера:

В предыдущем руководстве рассматривается поддержка конечных точек HTTPS. Например, настройте приложение для HTTPS, если проверка подлинности используется со службой Windows.

Использование сертификата разработки ASP.NET Core HTTPS для защиты конечной точки службы не поддерживается.

Текущий каталог и корневой каталог содержимого

Для службы Windows GetCurrentDirectory возвращает текущий рабочий каталог C:WINDOWSsystem32. Папка system32 не подходит для хранения файлов службы (например, файлов параметров). Используйте один из следующих методов для сохранения ресурсов и файлов параметров службы и доступа к ним.

Указание папки приложения в качестве пути корневого каталога содержимого

ContentRootPath — это тот же путь, который предоставляется аргументу binPath при создании службы. Чтобы не вызывать метод GetCurrentDirectory для создания путей к файлам параметров, вызовите SetCurrentDirectory с указанным путем к корневому каталогу содержимого приложения.

В Program.Main определите путь к папке с исполняемым файлом службы и используйте этот путь, чтобы создать корневой каталог содержимого приложения.

Хранение файлов службы в подходящем расположении на диске

Укажите абсолютный путь к папке, содержащей файлы, с помощью SetBasePath при использовании IConfigurationBuilder.

Устранение неполадок

Сведения об устранении неполадок в приложении службы Windows см. в статье Устранение неполадок и отладка проектов ASP.NET Core.

Распространенные ошибки

Журналы событий системы и приложений

Получите доступ к журналам событий системы и приложений:

Запуск приложения в командной строке

Многие ошибки запуска не создают полезные сведения в журналах событий. Для некоторых ошибок можно найти причину, запустив приложение в командной строке на компьютере размещения. Чтобы записать дополнительные сведения из приложения, снизьте уровень ведения журнала или запустите приложение в среде разработки.

Очистка кэшей пакетов

Удалите папки bin и obj.

Восстановите и перестройте проект.

Удалите все файлы из папки развертывания на сервере, прежде чем повторно развернуть приложение.

Медленно работающее или неотвечающее приложение

Аварийный дамп — это моментальный снимок системной памяти, который может помочь определить причину аварийного завершения, сбоя запуска или медленной работы приложения.

Аварийное завершение работы приложения или исключение

Получите и проанализируйте дамп из отчетов об ошибках Windows (WER):

Запустите скрипт PowerShell EnableDumps с именем исполняемого файла приложения:

Запустите приложение в условиях, вызывающих аварийное завершение.

После аварийного завершения запустите скрипт PowerShell DisableDumps:

Когда приложение аварийно завершит работу и сбор дампов будет выполнен, приложение сможет завершить работу обычным образом. Скрипт PowerShell настраивает отчеты об ошибках Windows для сбора до пяти дампов для приложения.

Аварийные дампы могут занимать много места на диске (до нескольких гигабайтов каждый).

Приложение не отвечает на запросы, не запускается или работает в обычном режиме

Когда приложение перестает отвечать на запросы (но аварийное завершение не происходит), не запускается или работает в обычном режиме, см. раздел Файлы дампа пользовательского режима: выбор лучшего инструмента, чтобы выбрать подходящий инструмент для создания дампа.

Анализ дампа

Дамп можно проанализировать несколькими способами. Дополнительные сведения см. в разделе Анализ файла дампа пользовательского режима.

Источник

Последнее обновление: 11.11.2022

Создадим первую программу на ASP.NET Core. Что нам для этого потребуется? Прежде всего необходим текстовый редактор для написания кода программы.
В данном случае я буду использовать в качестве текстового редактора Visual Studio Code

Также для компиляции и запуска программы нам потребуется .NET SDK. Для его установки перейдем на официальный сайт по ссылке
.NET SDK

Загрузка .NET SDK для ASP.NET Core

Выберем последнюю на данный момент версию — .NET SDK 7 и загрузим его. Затем запустим программу установки:

Установка .NET SDK для ASP.NET Core
Установка .NET SDK для ASP.NET Core и C#

После установки .NET SDK для первого проекта определим какую-нибудь папку. Например, в моем случае это будет папка C:dotnetaspnethelloapp.
Откроем терминал/командную строку и перейдем к созданной папке проекта с помощью команды cd

cd C:dotnetaspnethelloapp

В данном случае мы для создания и запуска проекта мы будем использовать встроенную инфраструктуру .NET CLI, которая устанавливается вместе с .NET SDK.

Для создания проекта в .NET CLI применяется команда dotnet new, после которой указывается тип проекта. Для ASP.NET Core есть ряд встроенных типов проектов. В данном случае
мы будем использовать самый простейший тип — web. Поэтому введем в терминале команду

Создание первого проекта ASP.NET Core и C# с помощью .NET CLI

После выполнения этой команды у нас будет создан следующий проект:

Первый проект ASP.NET Core на C# в Visual Studio Code

Структура проекта ASP.NET Core

Рассмотрим базовую структуру простейшего стандартного проекта ASP.NET Core:

  • Dependencies: все добавленные в проект пакеты и библиотеки, иначе говоря зависимости

  • Properties: узел, который содержит некоторые настройки проекта. В частности, в файле launchSettings.json описаны
    настройки запуска проекта, например, адреса, по которым будет запускаться приложение.

  • appsettings.json: файл конфигурации приложения в формате json

  • appsettings.Development.json: версия файла конфигурации приложения, которая используется в процессе разработки

  • helloapp.csproj: стандартный файл проекта C#, который соответствует назанию проекта (по умолчанию названию каталога) и описывает все его настройки.

  • Program.cs: главный файл приложения, с которого и начинается его выполнение. Код этого файла настраивает и запускает веб-приложение

Например, посмотрим на содержимое файла helloapp.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

</Project>

Ключевой компонент здесь — атрибут Sdk="Microsoft.NET.Sdk.Web", который собственно и определяет, что приложение будет использовать SDK «Microsoft.NET.Sdk.Web», который предназначен
именно для веб-проектов.

Запуск проекта

Проект по умолчанию не представляет какой-то грандиозной функциональности, тем не менее этот проект мы уже можем запустить. Итак, запустим проект. Для этого выполним команду

запуск проекта ASP.NET Core и C# с помощью .NET CLI

При запуске в консоли мы можем увидеть адрес, по которому мы можем обращаться к приложению. В моем случае это адрес «http://localhost:5197/». И я могу обратиться по этому адресу к приложению
в браузере и увидеть в нем строку «Hello World!» — результат работы кода по умолчанию из файла Program.cs:

Первое приложение на ASP.NET Core на С# с .NET CLI

Запуск приложения и файл Program.cs

Рассмотрим код файла Program.cs, который создает подобное приложение:

    var builder = WebApplication.CreateBuilder(args);
    var app = builder.Build();
    
    app.MapGet("/", () => "Hello World!");
    
    app.Run();
    
    

Это так называемое Minimal API — упрощенная минизированная модель для запуска веб-приложения в ASP.NET.

Приложение в ASP.NET Core представляет объект Microsoft.AspNetCore.Builder.WebApplication. Этот объект настраивает всю
конфигурацию приложения, его маршруты, используемые зависимости и т.д.. Исходный код класса на github: https://github.com/dotnet/aspnetcore/blob/main/src/DefaultBuilder/src/WebApplication.cs

Для создания объекта WebApplication необходим специальный класс-строитель — WebApplicationBuilder. И в файле Program.cs вначале создается данный объект
с помощью статического метода WebApplication.CreateBuilder:

var builder = WebApplication.CreateBuilder(args);

В качестве параметра в метод передаются аргументы, которые передаются приложению при запуске.

Получив объект WebApplicationBuilder, у него вызывается метод Build(), который собствено и
создает объект WebApplication:

var app = builder.Build();

С помощью объекта WebApplication можно настроить всю инфраструктуру приложения — его конфигурацию, маршруты и так далее. В
файле Program.cs по умолчанию для приложения определяется один маршрут:

app.MapGet("/", () => "Hello World!");

Метод MapGet() в качестве первого параметра принимает путь, по которому можно обратиться к приложению. В данном случае это путь «/», то есть
по сути корень веб-приложения — имя домена и порта, после которых может идти слеш, например, https://localhost:7256/

В качестве второго параметра в метод MapGet() передаются обработчик запроса по этому маршруту в виде функции. Здесь это лямбда-выражение,
которое возвращает строку «Hello World!». Именно поэтому при обращении к приложению мы увидим данную строку в браузере.

И в конце необходимо запустить приложение. Для этого у класса WebApplication вызывается метод Run():

app.Run();

В итоге запустится приложение в виде консоли, и мы сможем обращаться к приложению из различных браузеров.

Кто-нибудь может пояснить как запускаются программы NetCoreApp?

Здесь есть только dll. Как её запускать? Только через консоль dotnet dll? Можно создать для запуска exe? (Windows 10)

StartAppbinDebugnetcoreapp1.1StartApp.dll
StartAppbinDebugnetcoreapp1.1StartApp.deps.json
StartAppbinDebugnetcoreapp1.1StartApp.runtimeconfig.json
StartAppbinDebugnetcoreapp1.1StartApp.runtimeconfig.dev.json
StartAppbinDebugnetcoreapp1.1StartApp.pdb

задан 6 июн 2017 в 14:35

code211218's user avatar

code211218code211218

3,9152 золотых знака26 серебряных знаков50 бронзовых знаков

4

Процесс достаточно подробно расписан в .NET Core 1.1 – How to publish a self-contained application

Минимальный набор изменений:

  1. Добавить в csproj нужный RuntimeIdentifier:

    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>netcoreapp1.1</TargetFramework>
      <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
    </PropertyGroup>
    
  2. Восстановить зависимости:

    dotnet restore
    
  3. Опубликовать с указанием рантайма:

    dotnet publish -c release -r win10-x64
    

Бинарники будут собраны в папку binreleasenetcoreapp1.1win10-x64.

Аналогично для других рантаймов — достаточно вписать несколько RuntimeIdentifiers, и при сборке указать нужный:

<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64</RuntimeIdentifiers>

dotnet publish -c release -r ubuntu.16.10-x64
dotnet publish -c release -r osx.10.11-x64

Способ работает и для других типов приложений, например, для ASP.NET Core.

ответ дан 6 июн 2017 в 15:08

Понравилась статья? Поделить с друзьями:
  • Как запустить php сервер на windows
  • Как запустить need for speed underground 2 на windows 7
  • Как запустить phasmophobia на windows 7
  • Как запустить microsoft flight simulator 2020 на windows 10
  • Как запустить pgadmin 4 в браузере windows