Search
Write a publication
Pull to refresh
35
0.1
Андрей Тарицын @Taritsyn

Веб-разработчик

Send message
Интернет-провайдер «Центральный телеграф» блокирует доступ к launch.visualstudio.com, как к сайту, содержащему запрещенный контент:



Да, только строковые ресурсы. За основу брал код стандартного генератора от Microsoft.
Свойство Assembly у экземпляра Type — чтобы получить описание сборки у типа необходимо использовать метод-расширение GetTypeInfo(). Ломает совместимость с текущим кодом, особенно в ресурсных файлах.

Это является проблемой только тогда, когда нужно поддерживать 2 версии проекта (для .NET Core и .NET Framework 4.0).

Чтобы сгладить различия между разными реализациями Reflection, я использую полифиллы (например, TypeInfo.cs и TypeExtensions.cs).

С генерацией ресурсных файлов сложнее. Пришлось отказаться от стандартных генераторов в пользу собственного, написанного под Sake и KoreBuild.
Единственная проблема, что старый солюшен с csproj-проектами перестанет работать, чтобы оба проекта работали side by side есть решение. Выглядит довольно странно, но работает.

Чтобы решить эту проблему я разделил проект на 2 директории: ИМЯ_ПРОЕКТА и ИМЯ_ПРОЕКТА.Net4. В первой директории оставил: xproj-файл, project.json, весь общий код, а также код, необходимый для .NET Core-версии. Во второй: csproj-файл, packages.config и код, необходимый для .NET Framework 4.0-версии (файлы с общим кодом добавляются в csproj-файл в виде ссылок).
Ок, но вопрос о преимуществах новой модели над старой.

HostingEnvironment.IsDevelopment() фактически является заменой HttpContext.Current.IsDebuggingEnabled.
Еще Microsoft рекомендует использовать Smidge. На ASP.NET Community Standup от 05.07.2016 было много анонсов на эту тему.
Абсолютно верно.

Последовательность перевода проектов на .NET Core следующая:

  1. MSIE JavaScript Engine for .NET и JavaScript Engine Switcher
  2. LibSass Host for .NET
  3. Если хватит времени и сил, то возможно и Bundle Transformer

Только мы общались по поводу другого проекта ;-)
Если вдруг для объединения и сжатия файлов вы используете какие-то модули системы управления — отключите их. Модули создают динамический код для объединения файлов, и код этот дополнительно нагружает хостинг и тратит его ресурсы.

В последнее время, часто слышу этот совет от сотрудников Microsoft. Сейчас рекомендуется производить минификацию (и любую другую обработку) стилей и скриптов на этапе сборки проекта (например, с помощью Grunt или Gulp).
На втором дне конференции вице-президент Скотт Гутри сообщил

Скотт Гатри
Выступления на конференциях, публикации книг, ваша фамилия в списке составителей PMBoK, ...

Нельзя это рекомендовать абсолютно всем IT-никам. Иначе работать будет некому.
Я бы не сказал, что технологии на базе Node.js встраиваются в ASP.NET. Наличие этих технологий в шаблонах проектов и инструментарии Visual Studio не означает, что они часть ASP.NET. В проектах, написанных на ASP.NET 5 Core вы можете использовать вместо них другие технологии: VS-расширения Мэдса Кристенсена или Smidge.

Но нужно понимать, что все современные фронтенд-технологии созданы на базе Node.js (за исключением: Sass, YUI Compressor и Closure Compiler). Никакие .NET-адаптации этих технологий не могут полностью реализовать их функционал – это я говорю вам как автор Bundle Transformer.
Большая часть функционала Web Essentials перенесена в отдельные расширения: Bundler & Minifier, Web Compiler и Web Analyzer. Рекомендую вам прочитать статью Мэдса Кристенсена «Bundling, minification and client-side compilation».
Главной причиной добавления поддержки Gulp в шаблоны проектов новой версии ASP.NET является ее кроссплатформенность. Предполагается, что часть разработчиков будет писать ASP.NET 5 Core приложения на компьютерах, на которых установлены Linux и Mac OS. Как правило, эти разработчики уже знакомы с Node.js, Grunt, Gulp и Bower.

Если эти инструменты кажутся вам неудобными, то вы можете использовать вместо них VS-расширения, разработанные Мэдсом Кристенсеном: Bundler & Minifier, Web Compiler и Web Analyzer.
Потому что System.Web.Optimization не совместим с ASP.NET 5 Core.
Хорошая статья. Хотелось бы увидеть продолжение не тему использования механизма Options.
Для меня на данный момент проще всего сделать свойство Configuration класса Startup статическим, чтобы достать из него конфигурацию. Наверное, можно найти более гибкое решение.

Можно зарегистрировать экземпляр IConfiguration как сервис:

public class Startup
{
	public IConfiguration Configuration
	{
		get;
		set;
	}


	public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
	{
		...
		Configuration = builder.Build();
		...
	}

	public void ConfigureServices(IServiceCollection services)
	{
		services.AddInstance(Configuration);
		...
	}		
	...
}

А потом получить этот экземпляр с помощью dependency injection (через конструктор или свойство помеченное атрибутом FromServices).

Information

Rating
5,411-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Fullstack Developer
Lead