ASP.NET Core 2.0是在两个框架(.Net Framework和.NET Core)中实现的技术吗?

时间:2018-01-30 18:59:21

标签: c# .net asp.net-core .net-core

我想创建一个ASP.NET Core MVC 2 Web应用程序,我可以在Linux和Windows上托管(即在两个操作系统中)。所以,我要使用.Net Core。但是当我创建新的ASP.NET Core MVC 2 Web应用程序时,我看到了两个组合框。首先,我要选择.NET Frmework或.NET Core。第二个组合框仅包含ASP.NET Core 2.0。

documentation

Q1:
这是否意味着 ASP.NET Core 2.0 技术,它是在两个框架(.Net Framework和.NET Core)中实现的?

以后不可能将.Net Framework切换到.NET Core。我可以使用.NET Core但是enter image description here Microsoft写道,如果我想使用Windows服务,我将使用.NET Framework ...

我想在我的计算机上使用here(而不是IIS) - 尝试它对我来说很有趣。 :) Nginx for Windows Microsoft描述了如何使用NGinx在Linux上托管ASP.NET Core Web应用程序。在文章中,存在创建服务文件主题。但它适用于Linux ......所以,如果我想在Windows上的Nginx上托管我的ASP.NET Core MVC 2 Web应用程序,那么我被迫使用Windows服务(看Here)。但在 here 文章中,Microsoft写道我将使用.NET Framework而不是.NET Core ......

Q2
这是否意味着我不能将同一个项目用于构建我的Linux和Windows Web应用程序(用于Windows服务)?这是否意味着我的目标是创建两个项目:.NET Framework和.NET Core以及共享两个项目的代码源?

Host an ASP.NET Core app in a Windows Service

1 个答案:

答案 0 :(得分:-1)

Q1

  

这是否意味着ASP.NET Core 2.0是已实现的技术   在两个框架(.Net Framework和.NET Core)中?

.NET Core 2.0和.NET Framework 4.6.1都是.NET Standard 2.0的实现。这意味着他们可以做同样的事情,并且工作大致相同,但.NET Framework包含一些仅Windows的库(系统库,如Windows Forms),这意味着它只能在Windows上运行。 .Net Core程序可以在Windows,Linux和MacOS上运行。

  

不可能将.Net Framework切换到.NET Core   项目以后。我可以使用.NET Core,但微软在这里写道   如果我想使用Windows服务,我将使用.NET Framework ...

虽然这在技术上是可行的,但你真的想避免它。这是一个非常头痛的问题,通常会破坏很多代码,缺少依赖性等。

  

我想在我的计算机上使用Nginx for Windows(而不是IIS) - 它   对我来说很有意思。 :)这里微软描述了如何   使用NGinx在Linux上托管ASP.NET Core Web应用程序。在文章   存在创建服务文件主题。但它适用于Linux ...所以,   如果我想在Nginx上托管我的ASP.NET Core MVC 2 Web应用程序   Windows然后我被迫使用Windows服务(看这里)。但在   在Windows服务文章Microsoft中托管ASP.NET Core应用程序   写道我将使用.NET Framework而不是.NET Core ......

我还没有亲自使用NGinx for Windows,但看起来好像他们希望您为他们的示例设置.NET Core应用程序的目标版本到.NET Framework。由于.NET Core没有对系统特定库的引用,因此您可以轻松地将目标更改为.NET Framework。这并不能使它成为一个.NET Framework项目,它只是改变了Visual Studio将构建它的运行时。

Q2

  

这是否意味着我可以将相同的项目用于构建我的网站   适用于Linux和Windows(适用于Windows服务)?这是不是意味着   为了我的目标,我要创建两个项目:.NET Framework和   .NET Core和共享两个项目的代码源?

您绝对可以在两个平台上使用相同的应用程序,但它与您习惯的方式略有不同。由于.NET Core与平台无关,因此Visual Studio不会为您生成exe,它只会生成dll文件。然后在命令行中使用dotnet命令启动程序,例如

dotnet helloWorld.dll

这是你在任何操作系统上运行程序的方法,只要你安装了.NET Core运行时(有很多关于如何在线执行此操作的指南)。

希望我能清楚地回答所有问题:)