如果你编写一个在.NET Core上运行的C#或F#程序,那么同样的字节码也会在.NET上运行(没有安装.NET Core)吗?

时间:2016-09-02 23:41:52

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

如果你编写一个在.NET Core上运行的C#或F#程序,那么同样的字节码也会在.NET上运行(没有安装.NET Core)吗?

我听说反射的工作原理不同,但我不清楚这些差异是否属于API的一部分。

1 个答案:

答案 0 :(得分:6)

在.NET Core 1.0中,有一些新的可能性,例如能够在.NET核心平台之上或在传统的.NET Framework 4.5.x之上运行您的应用程序。环境设置取决于应用程序类型(可移植或自包含应用程序)和目标框架。

来自.NET Core Application Deployment文档:

  

您可以通过以下两种方式部署.NET Core应用程序:

     
      
  • 作为便携式应用。便携式应用程序依赖于共享的系统范围   目标系统上存在的.NET Core版本。因为.NET   核心已经存在,您的应用程序可以在安装之间移植   .NET核心。您的应用仅包含自己的代码和任何第三方   .NET Core库之外的依赖项。手提   应用程序是可以使用dotnet启动的.dll文件   来自命令行的实用程序。例如,dotnet app.dll运行一个   便携式应用程序,名为app。

  •   
  • 作为一个独立的应用程序。与便携式应用程序不同,a   自包含的应用程序不依赖于任何共享组件   出现在目标系统上。所有组件,包括.NET Core   库和.NET Core运行时包含在应用程序中   并与其他.NET Core应用程序隔离。自包含   应用程序包括可执行文件(例如Windows上的app.exe)   一个名为app)的自包含应用程序的平台,这是一个   重命名的特定于平台的.NET Core主机版本和.dll   文件(例如app.dll),这是实际的应用程序。

  •   

关于指定的框架(阅读更多here

  
      
  • project.json中的“framework”部分指定框架或   您的应用支持的框架列表。

  •   
  • 中的“导入”部分   project.json是一种使用不基于的包/库的方法   与目标Core平台版本相同的版本,例如   “dnxcore”和portable- * libs,如下面的一个例子中所示。   重要的是只对.NET Core和。的版本使用“导入”   PCL(便携式类库)。将它与TFMS一起使用   传统的.NET Framework可能会导致问题或故障。

  •   
  • 在您的应用中支持多个框架时,您可以选择性地运行   通过选择,您的应用程序位于一个或另一个框架之上   Visual Studio或命令行中的默认框架(如   解释如下)。

  •