(Причина, по которой файлы конфигурации изначально отсутствовали, заключается в том, что мои сценарии публикации обычно намеренно игнорируют файлы конфигурации, чтобы не перезаписывать существующие конфигурации).

своего рода продолжение моего вопроса "Как использовать C # 6 с типом проекта веб-сайта?«)

Я пытаюсь использовать возможности C # 7 с Visual Studio 2017.

Для этого я обновилMicrosoft.Net.Compilers Пакет NuGet для v2.0.0-rc4 в моем существующем приложении ASP.NET WebForms 4.6.2.

Кажется, хорошо работает изнутри Visual Studio 2017.

При развертывании на моем сайте все, что я вижу, это желтый экран смерти:

Ошибка компилятора с кодом ошибки 255.

[Подробный вывод компилятора]

Информация о версии: версия Microsoft .NET Framework: 4.0.30319; ASP.NET версия: 4.6.1590.0

Полный исходный код компилятора слишком длинный для размещения здесь (более 30 тыс. Символов),Я загрузил его в Pastebin.

Мой вопрос:

Есть ли возможность использовать новейший компилятор Roslyn в веб-приложении ASP.NET WebForms?

Обновление 1:

Конечно, я включилMicrosoft.CodeDom.Providers.DotNetCompilerPlatform Пакет NuGet и записи web.config,как описано здесь.

<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
  </compilers>
</system.codedom>

Я даже пытался изменить/langversion:6 параметр в XML выше/langversion:7 с отличным результатом.

Обновление 2:

Вероятно, вопрос и ответ будут аналогичными для использования функций C # 7 из представлений ASP.NET MVC в файлах .cshtml Razor.

Обновление 3:

Я копался в журнале событий и нашел (немецкая система, извините):

Anwendung: csc.exe    
Frameworkversion: v4.0.30319    
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.    
Ausnahmeinformationen: System.IO.FileLoadException    
   bei Microsoft.CodeAnalysis.CommandLine.BuildClient.GetCommandLineWindows(System.Collections.Generic.IEnumerable'1<System.String>)    
   bei Microsoft.CodeAnalysis.CommandLine.DesktopBuildClient.Run(System.Collections.Generic.IEnumerable'1<System.String>, System.Collections.Generic.IEnumerable'1<System.String>, Microsoft.CodeAnalysis.CommandLine.RequestLanguage, Microsoft.CodeAnalysis.CommandLine.CompileFunc, Microsoft.CodeAnalysis.IAnalyzerAssemblyLoader)    
   bei Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(System.String[], System.String[])    
   bei Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(System.String[])    

а также:

Exception information:     
   Exception type: HttpCompileException     
   Exception message: Eine externe Komponente hat eine Ausnahme ausgelöst.    
  bei System.Web.Compilation.AssemblyBuilder.Compile()    
  bei System.Web.Compilation.BuildProvidersCompiler.PerformBuild()    
  bei System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed)    
  bei System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories)    
  bei System.Web.Compilation.BuildManager.CompileResourcesDirectory()    
  bei System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()    
  bei System.Web.Compilation.BuildManager.CallAppInitializeMethod()    
  bei System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)    

Ответы на вопрос(1)

Ваш ответ на вопрос