【发布时间】:2014-10-26 08:22:07
【问题描述】:
虽然我欢迎微软的 ASP.NET vNext 迁移(包括跨平台迁移),但我有一个大问题:现有的 NuGet 包生态系统是否可以重用,或者 vNext 是否需要特定的 NuGet 包? .NET Framework 的特定子集?
【问题讨论】:
标签: asp.net-core
虽然我欢迎微软的 ASP.NET vNext 迁移(包括跨平台迁移),但我有一个大问题:现有的 NuGet 包生态系统是否可以重用,或者 vNext 是否需要特定的 NuGet 包? .NET Framework 的特定子集?
【问题讨论】:
标签: asp.net-core
您绝对可以使用现有的 NuGet 包。归根结底,这完全取决于您所针对的框架。例如,如果您的应用程序以aspnet50 为目标,您可以愉快地使用与 NET 4.5 及更高版本兼容的现有 NuGet 包(取决于您安装的 .NET 框架版本)。这是一个示例 project.json 文件,它指示来自 nuget.org 的 MongoDB .NET 客户端消耗:
{
"name": "AspNet.Identity.MongoDB",
"version": "1.0.0-beta1",
"dependencies": {
"Microsoft.AspNet.Identity": "3.0.0-*",
"mongocsharpdriver": "1.9.2"
},
"aspnet50": {
"dependencies": { }
}
}
由于我只有一个框架(aspnet50),即使我有mongocsharpdriver它也能顺利运行 所有框架的参考。
您可以使用这种方法来轻松迁移到 ASP.NET vNext(就像我对 MongoDB ASP.NET Identity implementation 所做的那样),因为 MongoDB .NET Client 等库可能需要一些时间才能与 aspnetcore50 兼容。
如果我针对多个框架,我将只为该框架安装特定的包。这是一个例子:
{
"dependencies": {
"Kestrel": "1.0.0-*",
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.Mvc.WebApiCompatShim": "6.0.0-*",
"Microsoft.AspNet.Server.IIS": "1.0.0-*",
"Microsoft.AspNet.Server.WebListener": "1.0.0-*",
"Microsoft.AspNet.StaticFiles": "1.0.0-*",
},
"commands": {
"web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001",
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5000"
},
"frameworks": {
"aspnet50": {
"dependencies": {
"Microsoft.Framework.DependencyInjection.Autofac": "1.0.0-*",
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-*"
}
},
"aspnetcore50": {
"dependencies": { }
}
},
"webroot": "wwwroot"
}
请注意,Microsoft.Framework.DependencyInjection.Autofac 包仅为 aspnet50 安装。当您在 aspnetcore50 下编译应用程序时,它将不可用。当然,使用这种方法,您需要ifdef 才能获得胜利,具体取决于here 所做的用例。
【讨论】: