Файлы Roslyn * .rsp * .config, отсутствующие после MSBuild, вызывают ошибку компиляции в IIS - PullRequest
0 голосов
/ 05 июня 2019

При создании нового проекта WebApi2 на моем локальном компьютере (через Visual Studio 2017 или MSBuild) я могу нормально запустить приложение через IISExpress или IIS.

Однако, когда я собираю его с сервера сборки нашей команды (через MSBuild), в каталоге вывода для roslyn отсутствуют следующие конкретные файлы:

Name
----
csc.exe.config
csc.rsp
csi.exe.config
csi.rsp
vbc.exe.config
vbc.rsp
VBCSCompiler.exe.config

Я убедился, что MSBuild вызывается с одинаковыми параметрами на моей машине и на сервере сборки. Я также проверил, что оба имеют одинаковую версию MSBuild, и на обоих установлен .NET 4.7 (версия, на которую я нацеливаюсь).

Если в каталоге roslyn отсутствуют указанные выше файлы config / rsp, я получаю следующие ошибки из IIS (усеченные повторы):

error CS0009: Metadata file 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.dll' could not be opened -- Could not load file or assembly 'System.Collections.Immutable, Version=1.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mytestapp\94741207\f208094f\App_global.asax.lejfnh-p.1.cs(13,12): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mytestapp\94741207\f208094f\App_global.asax.lejfnh-p.1.cs(12,51): error CS0103: The name 'System' does not exist in the current context
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mytestapp\94741207\f208094f\App_global.asax.lejfnh-p.1.cs(13,63): error CS0518: Predefined type 'System.String' is not defined or imported
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config(333,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mytestapp\94741207\f208094f\App_global.asax.lejfnh-p.0.cs(134,40): error CS0400: The type or namespace name 'mytestapp' could not be found 
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mytestapp\94741207\f208094f\App_global.asax.lejfnh-p.1.cs(27,9): error CS0518: Predefined type 'System.Void' is not defined or imported
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mytestapp\94741207\f208094f\App_global.asax.lejfnh-p.0.cs(136,24): error CS0518: Predefined type 'System.Boolean' is not defined or imported
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mytestapp\94741207\f208094f\App_global.asax.lejfnh-p.0.cs(138,10): error CS0518: Predefined type 'System.Object' is not defined or imported
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\mytestapp\94741207\f208094f\App_global.asax.lejfnh-p.0.cs(138,10): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)

Что я здесь не так делаю?

...