2015-08-29 3 views
60

Я пытаюсь создать веб-приложение с использованием Visual Studio 2015 и .NET 4.5.1. Когда я публикую веб-сайт, визуальная студия создаст папку с именем roslyn.Публикация сайта без roslyn

enter image description here

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

Как опубликовать сайт без roslyn, как предыдущая версия Visual Studio?

EDIT: Я получил эту ошибку, пытаясь получить доступ к моему сайту.

enter image description here

кажется IIS пытается выполнить roslyn\csc.exe, но моя учетная запись пользователя не имеет разрешения, чтобы сделать это. С предыдущей версией Visual Studio эта ошибка не появляется.

+0

Кроме того, Roslyn - это всего лишь набор DLL. Хозяин не может знать или заботиться о том, что они делают. – SLaks

+2

@Slaks IIS пытается выполнить csc.exe. См. Править. –

+0

Если вы используете Plesk, вы можете отключить «Специальный пул приложений IIS для своих сайтов», тогда вам даже не нужно удалять эти пакеты! – VSG24

ответ

133

Я столкнулся с той же проблемой. Когда вы создаете новый веб-проект, в ваш проект автоматически добавляются два пакета nuget. Если вы их удалите, ваша проблема должна быть решена. Имена пакетов: «Microsoft.CodeDom.Providers.DotNetCompilerPlatform» и «Microsoft.Net.Compilers».

+0

Ты потрясающий парень –

+0

Добро пожаловать :) –

+0

хороший ответ для новой технологии. – Ajay2707

0

После поиска того же выпущенного лица, я только что пришел сюда. Я правильно прочитал приведенный выше ответ.

Я даю ответ, из-за Here это хорошая статья объяснить:

  1. Почему публиковать код есть этот ехе, а также среды разработки?
  2. В чем преимущество и как его удалить?

This is also the very good article, about the history of this exe

7

Я была такая же проблема. Затем выполните шаги от here. В основном:

  1. Удалите пакет

    Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform <Your Web API project name> 
    
  2. В ваших публикующих настройках профиля, снимите флажок "Разрешить предкомпилированного узлу быть обновляемым". Вы можете найти это в разделе Настройки> Прекомпиляция при публикации> Настройка

+1

Таким образом, вы не можете использовать функции C# 6 в представлениях. – RokX

+0

человек, вы только что спасли мне жизнь! –

0

Я была такая же проблема в Sept2016, когда я взял на существующую программу ASP.NET. Я обнаружил, что несколько версий двух пакетов компиляторов, упомянутых Kemal, были установлены в разных проектах решения.

Итак, во-первых, я обновился, чтобы получить их одинаково. VS не говорит вам, что обновления доступны в этом сценарии (или, может быть, я их пропустил?)

Затем мне пришлось перезапустить VS2015 для правильной очистки пакетов.

0

После бесчисленного усилия .... и в соответствии с этим website. Я нахожу, что вы можете использовать /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false в MSBuild для преобразования web.config, это также включает компилятор roslyn в сборке. Результат такой же, как и для публикации в Visual Studio в файловой системе

2

В репозитории roslyn есть open bug.

В моем случае все, что мне нужно было сделать, это понизить dll Microsoft.CodeDom.Providers.DotNetCompilerPlatform с версии 1.0.6 до 1.0.5.

Смежные вопросы