Jon*_*eet 29 c# asp.net-web-api visual-studio-2015 asp.net-core
我在Windows 8.1上使用Visual Studio 2015 CTP 6.
我正在尝试使用ASP.NET v5编写一个Web API,其新的项目文件格式.我已经将Noda Time v1.3.0的引用添加到我的project.json文件中,Visual Studio中的编辑器选择了它,但是构建过程失败了.
Repro配方,从头开始:
打开project.json,并在(格式错误的)"依赖项"部分,在开头添加一个额外的行(以避免必须添加逗号到另一行):
"NodaTime": "1.3.0",
Run Code Online (Sandbox Code Playgroud)Controllers\ValuesController.cs编辑无参数Get()方法,使正文为:
return DateTimeZoneProviders.Tzdb.Ids;
Run Code Online (Sandbox Code Playgroud)
DateTimeZoneProviders会有红色的曲线,这是合理的 - 我们还没有using指令.DateTimeZoneProviders并点击Ctrl+ .- 你应该被提供" using NodaTime;"作为一个潜在的修复...所以Intellisense(因此Roslyn)肯定知道依赖.在资源管理器中,如果查看BugDemo解决方案目录,您将找到一个artifacts\obj\BugDemo\Debug\ProjectRawReferences包含"ASP.NET Core 5.0"和"ASP.NET 5.0"目录的目录,这两个目录中都有很多DLL ...但不是Noda Time .
右键单击项目并选择"还原包"并不能解决此问题.
当我使用Project K构建相同的项目时,kpm restore 确实会选择Noda Time,如果你添加一个project.json如下所示的部分,那么k web工作和访问http:// localhost:5001/api/values将显示所有的TZDB时区标识:
"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001"
},
Run Code Online (Sandbox Code Playgroud)
那么,我做错了什么?或者它只是一个错误?
Ste*_*ary 25
在构建时,请查看"项目"列 - 它注意到失败的构建是"ASP.NET Core 5.0"(而不是"ASP.NET 5.0").在代码编辑器的左上角下拉列表中,您可以选择不同的视图 - 如果选择"ASP.NET Core 5.0",您将看到NodaTime名称空间未定义.
看起来新的ASP.NET项目模板正在创建多目标应用程序,包括aspnet50和aspnetcore50.
ASP.NET 5.0(目前)基于.NET 4.5.x,因此NodaTime portable(net4)满足该平台.ASP.NET Core 5.0基于新的CoreClr(aspnetcore50),并且NodaTime库中没有支持它的二进制文件.
要解决此问题,您可以通过删除"frameworks"下project.json中的"aspnetcore50"条目来删除对应用程序中CoreClr的支持:
"frameworks": {
"aspnet50": { }
//"aspnetcore50": { }
},
Run Code Online (Sandbox Code Playgroud)
现在你的应用程序应该只构建针对ASP.NET 5.0而不是CoreClr.
| 归档时间: |
|
| 查看次数: |
2044 次 |
| 最近记录: |