【发布时间】:2016-06-22 15:02:46
【问题描述】:
我有一些代码由一个授权 api 项目、一个普通项目和一个 ASP.net 主应用程序项目组成,在一个解决方案中。我浏览了相关的 project.json 文件并删除了明确的 beta8 引用,然后进行了一些其他必要的更正。例如,在必要时将使用 Microsoft.Framework.Configuration 更改为 Microsoft.Extensions.Configuration。
我从链接的潜在重复项中了解到,首先要怀疑的是我的各种 project.json 文件中的引用混合无效。我没有明确地留下任何 beta8 引用。因此,我不认为链接的问题是相同的。
我被困的地方似乎是一件非常基本的事情:
Error CS1061 Build 'IServiceCollection' does not contain a
definition for 'AddMvc' and no extension method 'AddMvc' accepting a first
argument of type 'IServiceCollection' could be found (are you missing a
using directive or an assembly reference?)
我在 project.json 中引用了 Microsoft.AspNet.Mvc,我是否将“使用 Microsoft.AspNet.mvc”放在 .cs 文件中或错误仍然存在都没有关系。我以为您只需将引用添加到 project.json 即可在新的世界秩序中添加引用。如果project.json中存在程序集引用,为什么还会出现这个错误?
我的项目.json:
{
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.Authentication.JwtBearer": "1.0.0-*",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-*",
"Microsoft.AspNet.Mvc": "6.0.0-*",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-*",
"Microsoft.AspNet.StaticFiles": "1.0.0-*",
"Microsoft.Framework.Logging": "1.0.0-*",
"Microsoft.Framework.Logging.Console": "1.0.0-*",
"Microsoft.Framework.Logging.Debug": "1.0.0-*",
"System.IdentityModel.Tokens": "5.0.0-*",
"MyCompany.Common": "1.0.0-*"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnx451": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
}
破坏的代码行是 AddMvc 行:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Logging;
using Microsoft.Extensions.Configuration;
using Microsoft.Dnx.Runtime;
using RamSoft.Authorization.Api.Common;
using System.IdentityModel.Tokens;
using Microsoft.AspNet.Authentication.JwtBearer;
using RamSoft.ITConsole.Common;
using Microsoft.Extensions.PlatformAbstractions;
namespace MyCompany.Authorization.Api
{
public class Startup
{
...
public void ConfigureServices(IServiceCollection services)
{
services.AddInstance(_signingCredentials);
services.AddInstance(_jwtBearerOptions);
services.AddMvc(); // Fail.
}
...
}
【问题讨论】:
-
我已经清理了我的 project.json 引用,所以它不是重复的。除非我只是认为我做到了,并且还有一些额外的步骤(除了实际上使 .json 文件正确之外),例如“手动核对 dnvm 运行时包缓存中的所有内容”。
-
你似乎到处都在使用
"1.0.0-*"。那是对的吗?那不应该是"1.0.0-rc1-final"吗?另外,你的 global.json 文件里有什么? -
尝试转到
~/.dnx/packages并删除其中的所有内容。然后在命令提示符下,转到解决方案的根目录并执行dnu restore。它成功了吗?哪些版本的软件包会下载到您的~/.dnx/packages文件夹中?在您的 global.json 和 project.json 中,引用了哪个运行时版本,rc1-final或rc1-update1? -
我在 2016 年 5 月遇到了同样的问题!
标签: c# asp.net-core