Что мне делать, когда ASP.NET 5 (vNext) не может перенаправлять привязки?
Я просто мокну от MVC 6. Я установил VS 2015 и по умолчанию ASP.NET 5 preview
MVC Web Application
В шаблоне все отлично работает под локальным IIS.
Затем я попытался отключить контейнер DI по умолчанию с StructureMap
точно следуйте этим инструкциям (обратите внимание, что это очень недавняя статья). Единственное, что я должен был выяснить, пространства имен для импорта себя (так как автор не упомянул их), и это то, что я включил.
Я положил 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 Тип "Действие<>" определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, 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, версия =2.0.5.0, культура = нейтральная, 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, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Services\StructureMapRegistration.cs 59
Ошибка CS0012 Тип "Объект" определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Services\StructureMapRegistration.cs 59
Ошибка CS0012 Тип "Тип" определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, 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 Тип 'Выражение<>' определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку "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, версия =2.0.5.0, культура = нейтральная, 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, версия =2.0.5.0, культура = нейтральная, 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 Тип 'Выражение<>' определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку "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, версия =2.0.5.0, культура = нейтральная, 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, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Services\StructureMapRegistration.cs 89
Ошибка CS0012 Тип 'IDisposable' определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Services\StructureMapRegistration.cs 89
Ошибка CS0411 Аргументы типа для метода 'IContainer.GetInstance(string)' не могут быть выведены из использования. Попробуйте указать аргументы типа явно. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Services\StructureMapRegistration.cs 89
Ошибка CS0012 Тип 'IDisposable' определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Services\StructureMapRegistration.cs 107
Ошибка CS0012 Тип 'IDisposable' определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Services\StructureMapRegistration.cs 107
Ошибка CS0012 Тип 'IDisposable' определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, 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 \ Проекты \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 120
Ошибка CS0012 Тип "Действие<>" определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Startup.cs 94
Ошибка CS0012 Тип "Объект" определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Startup.cs 94
Ошибка CS0012 Тип "Объект" определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Startup.cs 107
Ошибка CS0012 Тип 'IDisposable' определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Startup.cs 107
Ошибка CS0012 Тип "Объект" определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку "mscorlib, версия =2.0.5.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes". TestDI3.DNX Core 5.0 f: \ Users \ Shad \ Documents \ visual studio 2015 \ Проекты \TestDI3\src\TestDI3\Startup.cs 107
Ошибка указывает, где проблема - мне нужна ссылка на mscorlib 2.0.5.0. Но я уже ссылаюсь на mscorlib 4.0.0.0 в проекте.
На этом этапе в ASP.NET < 5 следующим шагом обычно будет добавление некоторых перенаправлений привязки к <bindingRedirect>
раздел файла web.config. Однако после поиска того, как это сделать в ASP.NET 5, я наткнулся на этот ответ, который указывает, что перенаправление привязки должно быть "полностью автоматическим".
Так это ошибка или есть какой-то шаг в моей конфигурации, который я пропустил, что приводит к этой ошибке?
конфигурация
DNX 1.0.0-бета5
.NET Framework
x86
IIS Express
project.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" ]
}
}
1 ответ
Благодаря опиантам проблема, по-видимому, связана с тем, что dnxcore50
рамки были включены в проект.
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
Удаление это решило проблему.
"frameworks": {
"dnx451": { }
}