如果我还使用.NET 4.5.2中的某个库,我是否可以部署我的asp.net核心应用程序。
为了描述我的问题,在我的应用程序中,我使用来自完整.NET的SyndicationFeed 在我的project.json中"框架"第一节:
"frameworks": {
"net452": {
"frameworkAssemblies": {
"System.ServiceModel": ""
},
"dependencies": {
}
},
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
},
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
}
在其他部分,我使用ASP.CORE包,如:
"Microsoft.EntityFrameworkCore.Design": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Hangfire.AspNetCore": "1.6.8",
等等。
所以问题是可以部署到IIS。我应该使用ASP.CORE或完整的.NET运行部署到服务器。
答案 0 :(得分:1)
简而言之:是的,这是可能的。但是需要完整的.NET Framework(在服务器上)。
长篇故事:
在frameworks
中有两个projects.json
有效地在编译/发布期间创建了两个不同的应用(一个用于net462
,另一个用于netcoreapp1.1
)。这是两个不同的应用程序,为来自相同源代码的不同框架编译。
要先运行(对于net462),您需要安装了.NET Framework的计算机。对于其他(对于netcoreapp),您需要安装.NET Core。您无法“交换”(在net462
上运行.NET Core
- 构建应用,反之亦然。)
但是看着你的project.json
我无法相信你的应用程序会成功编译。您的应用需要System.ServiceModel
才能运行。但它仅适用于net462。这意味着在编译期间,第一个应用程序(用于net462)成功编译,而第二个(net netcoreapp)应该失败(找不到类,找不到命名空间等)。
从project / solution文件夹中的命令行运行dotnet build
或dotnet publish
。看到任何错误?
因此,当您需要.NET Core不可用的包/类时,您无法在.NET Core
下创建/构建/运行。
可能的解决方案:
netcoreapp1.1
; #if
),因此仅在net462
- 版本的应用中使用if。否则(#else
)添加NotImplementedException,null结果或其他东西(取决于) - 在编译后你将有两个不同的应用程序:net462
的全功能和限制 - 适用于netcoreapp
。