如果你编写一个在.NET Core上运行的C#或F#程序,那么同样的字节码也会在.NET上运行(没有安装.NET Core)吗?
我听说反射的工作原理不同,但我不清楚这些差异是否属于API的一部分。
答案 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或命令行中的默认框架(如 解释如下)。