Публікуйте веб-сайт без Roslyn


91

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

введіть тут опис зображення

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

Як опублікувати веб-сайт без roslynпопередньої версії Visual Studio?

EDIT: Я отримав цю помилку під час спроби отримати доступ до мого веб-сайту.

введіть тут опис зображення

Здається, IIS намагається виконати, roslyn\csc.exeале мій обліковий запис користувача не має дозволу на це. У попередній версії Visual Studio ця помилка не відображається.


Крім того, Roslyn - це лише набір бібліотек DLL. Господар не може знати чи піклуватися, що вони роблять.
— Слакс

3
@Slaks IIS намагається виконати csc.exe. Дивіться редагування.
— Niyoko Yuliawan

Якщо ви використовуєте Plesk, ви можете вимкнути "Виділений пул додатків IIS для своїх веб-сайтів", тоді вам навіть не потрібно видаляти ці пакети!
— Вахід Амірі,

Відповіді:


183

Я щойно стикався з тією ж проблемою. Коли ви створюєте новий веб-проект, два nuget-пакети автоматично додаються до вашого проекту. Якщо ви їх видалите, вашу проблему слід вирішити. Назви пакетів: " Microsoft.CodeDom.Providers.DotNetCompilerPlatform " та " Microsoft.Net.Compilers ".


Це працювало і підходить для сторонніх постачальників веб-хостингу. Є два запитання щодо цього: 1) Чи може видалення цих пакетів Nuget якось вплинути на продукт? 2) Чи можна вилучити ці пакети із самого шаблону проекту, щоб кожного разу уникати цієї вправи?
— нура

1) Не впливає на робочий процес продукту або логіку; але URL-адреса ( itorian.com/2015/09/roslyn-cscexe-and-vbcexe-deployment-on.html ), яку надає @ Ajay2707, говорить, що цей пакет впливає на час завантаження сторінки. 2) Я не знаю, як ти можеш це зробити, але якщо ти можеш, це не може бути проблемою.
— Кемаль Кефелі

3
Вилучено обидва пакунки NuGet. Видалено декларацію конфігурації. Проте ця папка створюється під час компіляції або публікації .. Тільки пакет NuGet, який використовує моя програма, - "Newtonsoft.Json". Чи потрібно мені його також видаляти?
— Ranjan Kumar

8
Майте на увазі, що видалення цих пакетів порушить використання функцій C # 6. Цю проблему можна вирішити, знявши прапорець біля пункту "Дозволити попередньо скомпільований сайт оновлюватись", який попередньо збирає представлення тощо.
— Rutix,

9
@RanjanKumar: Відкрийте файл csproj у текстовому редакторі та видаліть вузли, що відповідають пакетам NuGet, описаним у відповіді Кемаля. Сюди можуть входити Importвузли, Targetвузли (EnsureNugetPackageBuildImports) та Referenceвузли. Також видаліть <system.codedom>вузол вашого web.config.
— Брайан

16

У мене була та сама проблема. Виконували кроки звідси . В основному:

  1. Видаліть пакет

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


7
Таким чином, ви не можете використовувати функції C # 6 у поданнях.
— RokX,

2

Після пошуку того самого виданого, з яким я стикаюся, я просто прийшов сюди. Я прочитав наведену вище відповідь, яка є правильною.

Я даю відповідь, тому що ось хороша стаття для пояснення:

  1. Чому код публікації має цей exe, а також середовище розробки?
  2. У чому перевага і як видалити?

Це також дуже хороша стаття про історію цього exe


2

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


Не можу зрозуміти статтю за посиланням на веб-сайт, але слідуючи вашій пораді додати, що параметри побудови в MSBuild працюють .. Як ви вже сказали, результат такий самий, як і при публікації у файловій системі. Дякую
— Брюс,


0

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

Тож спочатку я оновився, щоб отримати їх однаковими. VS не повідомляє, що в цьому сценарії доступні оновлення (або, можливо, я їх пропустив?)

Потім мені довелося перезапустити VS2015 для належного очищення пакетів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.