我有一个 Shiny 的新 Asp.Net Core MVC 应用程序,它引用了一些旧的 net45
库。
在完整的 net45 框架上与 Asp.Net Core RC1 配合良好。从 Asp.NET Core rc1 迁移到 rc2 我遇到了一个我不知道如何修复的障碍。
该应用程序是一个使用 EF6、Autofac、Kendo.MVC 的 ASP.NET Core 应用程序,它需要在完整的 .Net 4.6 框架上运行,因为有使用 WCF 的引用库。
在从 rc1 迁移到 rc2 时,我首先更新 NuGet.config feed 以指向 https://www.myget.org/F/aspnetcirelease/api/v3/index.json
然后我对 project.json
- 从最顶层节点删除“版本”
- 将以下属性添加到 complationOptions 对象: "debugType": "portable"
- 依赖项:将
AspNet
更改为AspNetCore
- 依赖项:将所有
rc1-final
更改为*
- 检查
MVC
和MVC Tag Helpers
是否已从6.0
重命名为1.0
- 删除对
Application Insights
的所有依赖项 - 删除
Microsoft.AspNet.Tooling.Razor
的所有依赖项 - 添加对
"Microsoft.NETCore.App"的依赖项:{ "type": "platform", "version": "1.0.0-*"}
- 添加新的内容对象:
"content": [ "wwwroot", "Views", "web.config", "appsettings.json"]
- 更新所有 using 语句以引用
AspNetCore.*
而不是AspNet.*
- 更新所有 using 语句以引用
然后我将框架对象替换为:
"frameworks": {
"netcoreapp1.0": {
"imports": [
"net45"
]
}
}
我执行了 dotnet 恢复
,除了 1 个包之外,一切都解决了:
error: Package Kendo.Mvc 2016.1.412 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Kendo.Mvc 2016.1.412 supports:
error: - dnx451 (DNX,Version=v4.5.1)
error: - dnxcore50 (DNXCore,Version=v5.0)
error: One or more packages are incompatible with .NETCoreApp,Version=v1.0.
info : Committing restore...
Errors in project.json
Package Kendo.Mvc 2016.1.412 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Kendo.Mvc 2016.1.412 supports:
- dnx451 (DNX,Version=v4.5.1)
- dnxcore50 (DNXCore,Version=v5.0)
One or more packages are incompatible with .NETCoreApp,Version=v1.0.
因此,Kendo.MVC 需要引用 net45
或 net451
而不是 dnx451
,但由于这来自 NuGet feed,我可以不要改变这个。
你知道我是否可以快速修复而不是等待 Kendo.MVC 的下一个版本?
最佳答案
你的方法很接近。做得好。有一些更改/添加需要进行。以下内容适用于 dotnet Restore
,然后使用 dotnet run
。 full code listing is on GitHub 。
框架
您的框架
失败,因为.NET Core (netcoreapp
) is not compatible with .NET Framework (net
) ,因此您无法导入 net45
。您的错误表明 Kendo.Mvc
与 dnx451
和 dnxcore50
兼容;而是导入其中之一。然后为 Kendo.Mvc
所依赖的某些包添加可移植导入(如果不这样做,您将看到构建错误,告诉您执行此操作。)
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dnxcore50",
"portable-net45+win8+wp8"
]
}
}
现在您的应用程序将恢复并构建。但它还不会运行。
依赖项
更改对 Microsoft.NETCore.App
的依赖,使其不具有 "type" : "platform"
。否则,您的应用程序将无法自行运行,因为 NuGet 将抑制包的 Assets 。
"dependencies" :
{
// others omitted for clarity
"Microsoft.NETCore.App": "1.0.0-*",
"Kendo.Mvc": "*"
}
运行时
添加runtimes
部分;我们现在在project.json 中指定这一点,而不是依赖dnvm
。
"runtimes": {
"win8-x64": {}
}
关于wcf - 如何使用较旧的第三方依赖项在 net46 框架上构建 ASP.NET Core RC2 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005644/