我只是用MVC 6弄湿了。我安装了VS 2015,并使用默认的ASP.NET 5 preview MVC Web Application模板在本地IIS下一切正常。然后,我尝试使用StructureMap紧跟these instructions切换出默认DI容器(请注意,这是最近的文章)。唯一的事情是我必须弄清楚要导入自己的名称空间(因为作者忽略了将其包括在内),而这正是我所包含的。我将StructureMapRegistration类和所有相关类放入一个文件中,这是用法。using Microsoft.Framework.DependencyInjection;using StructureMap;using StructureMap.Configuration.DSL.Expressions;我在Startup.cs文件中添加了以下用法。using StructureMap;using StructureMap.Graph;using System.Reflection;我对Startup.cs文件进行了以下编辑。// This method gets called by the runtime. Use this method to add services to the container.public void ConfigureServices(IServiceCollection services){ // Add Entity Framework services to the services container. services.AddEntityFramework() .AddSqlServer() .AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); // Add Identity services to the services container. services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); // Configure the options for the authentication middleware. // You can add options for Google, Twitter and other middleware as shown below. // For more information see http://go.microsoft.com/fwlink/?LinkID=532715 services.Configure<FacebookAuthenticationOptions>(options => { options.AppId = Configuration["Authentication:Facebook:AppId"]; options.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; }); services.Configure<MicrosoftAccountAuthenticationOptions>(options => { options.ClientId = Configuration["Authentication:MicrosoftAccount:ClientId"]; options.ClientSecret = Configuration["Authentication:MicrosoftAccount:ClientSecret"]; }); // Add MVC services to the services container. services.AddMvc(); //// Uncomment the following line to add Web API services which makes it easier to port Web API 2 controllers. //// You will also need to add the Microsoft.AspNet.Mvc.WebApiCompatShim package to the 'dependencies' section of project.json. //// services.AddWebApiConventions(); //// Register application services. //services.AddTransient<IEmailSender, AuthMessageSender>(); //services.AddTransient<ISmsSender, AuthMessageSender>(); var container = new Container(); container.Configure(x => { x.Scan(scanning => { scanning.Assembly(Assembly.GetExecutingAssembly()); scanning.TheCallingAssembly(); scanning.WithDefaultConventions(); }); //x.AddRegistry<WebsiteRegistry>(); }); // Our framework extension point container.Populate(services);}从字面上看,我对默认模板所做的更改仅是上述代码更改和安装StructureMap 3.1.6.186。using语句消除了所有设计时编译错误,但是在构建时,我遇到了其他一些错误。错误CS0012在未引用的程序集中定义了类型'Action '。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 32错误CS0012在未引用的程序集中定义了“ IDisposable”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 32错误CS0012在未引用的程序集中定义了类型'Func '。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 59错误CS0012在未引用的程序集中定义了“对象”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 59错误CS0012在未引用的程序集中定义了“类型”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 63错误CS0012在未引用的程序集中定义了类型'Expression '。您必须添加对程序集“ System.Core,版本= 2.0.5.0,区域性=中性,PublicKeyToken = 7cec85d7bea7798e,Retargetable =是”的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 63错误CS0012在未引用的程序集中定义了“对象”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 63错误CS0012在未引用的程序集中定义了“类型”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 67错误CS0012在未引用的程序集中定义了类型'Expression '。您必须添加对程序集“ System.Core,版本= 2.0.5.0,区域性=中性,PublicKeyToken = 7cec85d7bea7798e,Retargetable =是”的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 67错误CS0012在未引用的程序集中定义了“对象”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 67错误CS0012在未引用的程序集中定义了“类型”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 89错误CS0012在未引用的程序集中定义了“ IDisposable”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 89错误CS0411无法从用法中推断出方法'IContainer.GetInstance(string)'的类型参数。尝试显式指定类型参数。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 89错误CS0012在未引用的程序集中定义了“ IDisposable”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 107错误CS0012在未引用的程序集中定义了“ IDisposable”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 107错误CS0012在未引用的程序集中定义了“ IDisposable”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 120错误CS1061'IContainer'不包含'Dispose'的定义,并且找不到扩展方法'Dispose'接受类型为'IContainer'的第一个参数(是否缺少using指令或程序集引用?)TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 120错误CS0012在未引用的程序集中定义了类型'Action '。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 94错误CS0012在未引用的程序集中定义了“对象”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 94错误CS0012在未引用的程序集中定义了“对象”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 107错误CS0012在未引用的程序集中定义了“ IDisposable”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 107错误CS0012在未引用的程序集中定义了“对象”类型。您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes的引用。 TestDI3.DNX Core 5.0 f:\ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 107该错误指示问题出在哪里-我需要对mscorlib 2.0.5.0的引用。但是我已经在项目中引用了mscorlib 4.0.0.0。此时,在ASP.NET <bindingRedirect>部分。但是,在ASP.NET 5中搜索了如何执行此操作之后,我遇到了this answer,它指示绑定重定向应该是“完全自动的”。那么这是一个错误,还是我错过了配置中导致此错误的某些步骤?组态DNX 1.0.0-beta5.NET Frameworkx86IIS Expressproject.json{ "webroot": "wwwroot", "userSecretsId": "aspnet5-TestDI3-1665343b-5aa5-4d08-8596-a1a536223a19", "version": "1.0.0-*", "dependencies": { "EntityFramework.SqlServer": "7.0.0-beta5", "EntityFramework.Commands": "7.0.0-beta5", "Microsoft.AspNet.Mvc": "6.0.0-beta5", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5", "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta5", "Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta5", "Microsoft.AspNet.Authentication.Google": "1.0.0-beta5", "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta5", "Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta5", "Microsoft.AspNet.Diagnostics": "1.0.0-beta5", "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta5", "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta5", "Microsoft.AspNet.Server.IIS": "1.0.0-beta5", "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5", "Microsoft.AspNet.StaticFiles": "1.0.0-beta5", "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta5", "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta5", "Microsoft.Framework.Configuration.Json": "1.0.0-beta5", "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta5", "Microsoft.Framework.Logging": "1.0.0-beta5", "Microsoft.Framework.Logging.Console": "1.0.0-beta5", "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta5", "structuremap": "3.1.6.186" }, "commands": { "web": "Microsoft.AspNet.Hosting --config hosting.ini", "ef": "EntityFramework.Commands" }, "frameworks": { "dnx451": { }, "dnxcore50": { } }, "exclude": [ "wwwroot", "node_modules", "bower_components" ], "publishExclude": [ "node_modules", "bower_components", "**.xproj", "**.user", "**.vspscc" ], "scripts": { "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ] }} (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 多亏了opiants,问题似乎与项目中包含dnxcore50框架有关。"frameworks": { "dnx451": { }, "dnxcore50": { }}删除它解决了这个问题。"frameworks": { "dnx451": { }} (adsbygoogle = window.adsbygoogle || []).push({});
10-05 22:36