我需要更新一个新的.NET应用程序,我认为有人提到它是.NET Core。如何检查解决方案属性以确定它是否实际上是一个"核心"应用?
Web项目有一个System.Core引用,但我搜索了这个,似乎System.Core.dll已经成为.NET框架的一部分,因为至少.NET f / w 3.5。
该应用程序有一个package.json文件,但该文件在sln中的存在并不一定能保证该应用程序是.NET核心应用程序。我还读到.NET核心应用程序可以在不同的.NET框架版本上运行。
那么我怎样才能确定一个.NET应用程序确实是一个"核心"应用程序吗?换句话说,什么使Core应用程序成为Core应用程序?
答案 0 :(得分:8)
在VS2017中,.NET Core项目再次使用.csproj结构。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreappx.y</TargetFramework>
</PropertyGroup>
或
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandardx.y</TargetFramework>
</PropertyGroup>
有一些指标。
存在project.json
表明它是较新的项目形式之一(请注意尽管project.json
将随着版本1.1的VS的.NET核心/ .NET核心工具而消失。
在其中,您将拥有框架部分,例如
"frameworks": {
"net45": {
"frameworkAssemblies": {
"System.Runtime.Serialization": "4.0.0.0"
}
},
"netstandard1.0": {
"imports": [ "dnxcore50", "portable-net45+win8" ],
"dependencies": {
}
},
"netstandard1.3": {
"imports": [ "dnxcore50", "portable-net45+win8" ],
"dependencies": {
"System.Runtime.Serialization.Formatters": "4.0.0-rc3-24212-01"
}
}
}
如果是应用程序(ASP.NET Core Web Project或基于new project.json的控制台应用程序),netstandard1.x
将被命名为netcoreapp1.0
。
如果有多个条目,则应用程序或库将以多个平台为目标(并将在单独的文件夹中构建多个二进制文件)。
<强>更新强>
当然我忘了另一个指标。 .NET Core应用程序会引用Microsoft.NETCore.App
(对于便携式应用程序,可以是"type": "platform"
,也可以是不包含在自包含应用程序中的应用程序)。 netstandard1.x
(类库)会引用NETStandard.Library
。
.NET Core应用程序基于System.Runtime
,它是.NET Framework 4.5及更新版本的一部分,用于Windows(和Windows Phone)8.0 / 8.1 / 10应用程序,因此portable-net45+win81
包是兼容.NET Core。
话虽如此,ASP.NET Core是一个可以在完整的.NET Framework(4.5或更高版本)和.NET Core上运行的webstack。因此,拥有一个ASP.NET核心应用程序并不能说明它所针对的平台。
答案 1 :(得分:1)
确定Asp.net Core应用程序非常容易。
有一些标识符。 项目中的文件很少,有助于确定核心项目
像
这样的文件在project.json中,它包含
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
这里通过dependencies
可以确定项目的类型.NET核心应用程序确实引用了Microsoft.NETCore.App(作为&#34;类型&#34;:&#34;平台&#34;便携式应用程序或没有它的自包含应用程序)。
Asp.net核心应用程序与平台无关,因此ASP.NET核心应用程序对该平台没有太多表达。