虽然我欢迎微软的ASP.NET vNext移动(包括跨平台移动),但我有一个大问题:现有的NuGet包生态系统能否被重用,或者vNext是否由于使用.NET框架的特定子集而需要特定的NuGet包?
发布于 2014-10-26 08:30:53
您绝对可以使用现有的NuGet包。说到底,这都取决于你的目标是什么框架。例如,如果应用程序以aspnet50为目标,您可以愉快地使用与NET4.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),所以即使我对所有框架都有Mongoc神化驱动程序引用,它也会顺利地工作。
您可以使用这种方法来轻松地迁移到ASP.NET vNext (就像我对MongoDB ASP.NET身份实现所做的那样),因为像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才能获得胜利,这取决于这里所做的用例。
https://stackoverflow.com/questions/26571138
复制相似问题