Подтвердить что ты не робот

Что/почему Roslyn "нужно" в папке /bin Asp.Net

На этом есть куча связанных вопросов, хотя большинство ответов определяют Roslyn и/или предоставляют "исправление" какой-либо проблемы (exe, с хостинг-провайдерами и т.д.)

То, что я не могу отслеживать, - это "почему" и "зачем" (возможно, только в контексте ASP.Net MVC/Web API) в /bin/roslyn.

Я столкнулся с подобными проблемами (хостинг - .exe ограничения, поддержка 4.6 и т.д.), и мое "исправление" состояло в том, чтобы "просто развернуть до Azure" (конечно, все работает без сбоев). Но на самом деле это не отвечает:

  • зачем они нужны?
  • означает ли это, что они используются для runtime компиляции (мой мозг указывает на это, но это полная догадка/мой, возможно, неправильный grok), это сообщение SO показывает - если не исправлено, это "это" (более подробно).
  • кажется, что "удаление пакета" - это "исправление" (на основе некоторых прошлых ответов), , но если да, то (re) запрашивает вопросзабастовкa >

Я думаю, что понимание этого поможет. Я не могу быть единственным, у кого будет бровь, видя, что нужно .exe "....


Update

Идет показать, что "скрытые драгоценные камни" существуют:) Я читал это снова и снова... ведь он был там для через некоторое время - но не поток комментариев. БОЛЬШАЯ ошибка - он смотрел на меня все это время (или, по крайней мере, с этого обмена):

Дмитрий Дзыгин 2 июня 2015 г. 12:53

Я пробовал последнюю версию пакета NuGet, но, похоже, есть разница в том, как компилятор загружается/выполняется.

В v0.2.0.0 компилятор Roslyn будет загружен в память, что значительно улучшит производительность для не предварительно скомпилированных веб-сайтов с несколько файлов *.as * x/*. cshtml. Однако в новой версии новый /bin/roslyn/csc.exe файл, который выполняется один раз для каждого файла, полностью удалив упомянутую выше функцию оптимизации.....

Золото:

XMao 2 июня 2015 1:22 вечера

@Dmitry Задача csc.exe в /bin/roslyn заключается в вызове VBCSCompiler.exe, который находится в той же папке. VBCSCompiler.exeэто процесс, который выполняет фактическую работу компиляции. Если VBCSCompiler уже запущен. Csc.exe будет повторно использовать его, и мы будем все еще получают указанное улучшение производительности.

Hth...


Обновление: 10/2017

Кажется, это актуально после всего этого времени, чтобы продолжить обновление.

Ниже представлен ответ @Donny V. Полностью компилируя приложение, включая все Views (.cshtml/.vbhtml), вам не понадобится exe в вашем приложении.

Это верно, даже если Visual Studio (по сей день VS 2017, смущающе) все равно создаст /bin/roslyn и это содержимое в процессе Publish, , даже если установлен "полный компилятор" .

Вы можете протестировать это, исключив папку /bin/roslyn и ее содержимое при нажатии вашего приложения на хостинг-провайдера.

Предостережение:

Как уже упоминалось, полная компиляция вашего приложения означает, что вам придется перекомпилировать его даже для изменений уровня View.

4b9b3361

Ответ 1

Это взято с форума MSDN.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/442b100a-2b88-4ac4-b655-0c1345791f15/roslyn-cscexe-web-api-2-on-hosting-server?forum=msbuild

Я заметил незначительный недостаток в удалении этого пакета:

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Некоторые из новых функций языка С# 6.0, если они используются в представлениях (MVC проект) не будет компилироваться. Многие из моих взглядов используют?. ноль проверяющий оператор для доступа к свойствам модели. Все эти взгляды теперь возвращают ошибки в моем приложении с поддержкой MVC 5. Myadaddy.

Эта ошибка возникает из-за того, что представления (по умолчанию) скомпилированы во время выполнения используя конвейер .NET(не предварительно скомпилированный).

Чтобы устранить эту проблему, просто снимите флажок "Разрешить предварительно скомпилированный сайт быть обновляемым" в ваших настройках профиля публикации. предварительно скомпилируйте свои представления и разрешите С# 6.0 (последняя версия Roslyn Компилятор), чтобы работать как чемпион.

Просто хотел, чтобы кто-нибудь смотрел на этот вопрос, чтобы узнать разветвление его удаления и почему его там в первую очередь

Ответ 2

Работала в этой проблеме все время в Visual Studio 2017 Community Edition, где проект не мог быть перестроен, потому что старые файлы в bin/roslyn не могли быть удалены. Основываясь на комментарии OP Gold, я теперь держу диспетчер задач открытым (Ctrl + Shift + Esc) и убиваю процесс VBCS.exe. Нарушительные файлы в bin/roslyn теперь можно удалить.

Ответ 3

Еще одна особенность этого заключается в том, что серверы сборки не требуют наличия зависимостей компилятора. Вы отправляете компилятор, который хотите использовать с кодом, на сервер сборки, и он просто использует именно то, что вы ему сказали.