【发布时间】:2015-05-07 08:11:02
【问题描述】:
我在 Windows 8.1 上使用 Visual Studio 2015 CTP 6。
我正在尝试使用 ASP.NET v5 及其新的项目文件格式编写 Web API。我已在我的project.json 文件中添加了对 Noda Time v1.3.0 的引用,Visual Studio 中的编辑器将其选中,但构建过程失败。
从头开始复制配方:
- 打开 VS 2015 CTP 6
- 在新解决方案中创建新项目:
- 选择 ASP.NET Web 应用程序项目模板
- 在模板对话框中选择“ASP.NET 5 Preview Web API”
- 构建项目,只是为了确认一切正确
-
打开
project.json,在(格式错误的)“依赖项”部分中,在开头添加一行(以避免在另一行中添加逗号):"NodaTime": "1.3.0", - 打开
Controllers\ValuesController.cs -
编辑无参数的
Get()方法,使主体为:return DateTimeZoneProviders.Tzdb.Ids;-
DateTimeZoneProviders会有红色曲线,这是合理的 - 我们还没有using指令。
-
- 将光标放在
DateTimeZoneProviders并点击Ctrl+. - 你应该被提供“using NodaTime;”作为潜在的修复......所以Intellisense(和因此 Roslyn) 肯定知道依赖关系。 - 接受修复。曲线会消失 - 一切都很好,对吧?
- 尝试构建解决方案:你应该得到两个错误,基本上表明依赖关系还没有被解决。
在资源管理器中,如果你查看BugDemo 解决方案目录,你会发现一个artifacts\obj\BugDemo\Debug\ProjectRawReferences 目录包含“ASP.NET Core 5.0”和“ASP.NET 5.0”目录,这两个目录都有很多DLLs 在......但不是 Noda Time。
右键单击项目并选择“恢复包”并不能解决此问题。
当我使用 Project K 构建同一个项目时,kpm restore 确实选择了 Noda Time,如果您向project.json 添加一个部分,如下所示,那么k web 工作并访问http://localhost:5001/api/values 将显示所有 TZDB 时区 ID:
"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001"
},
那么,我做错了什么?还是只是一个错误?
【问题讨论】:
标签: c# asp.net-web-api asp.net-core visual-studio-2015