CSC: ошибка CS0041: непредвиденная ошибка отладки информации об ошибке - "Операция на этой платформе не поддерживается".
Просто загрузите Visual Studio Professional для Mac, и я не могу ничего построить, поскольку всегда получаю ту же ошибку:
/Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/xbuild/14.0/bin/Microsoft.CSharp.targets (CoreCompile target) ->
CSC: error CS0041: Unexpected error writing debug information -- 'Operation is not supported on this platform.'
19 Warning(s)
1 Error(s)
Не уверен, что изменить в моем проекте, чтобы получить возможность компилироваться.
Ответы
Ответ 1
Мне удалось решить эту проблему двумя способами:
-
HACK Удалив символы отладки из сборки (в окнах VS: Свойства проекта → вкладка "Создание" → кнопка "Дополнительно" → изменить раскрывающийся список "Отладка информации" до "нет" - не уверен, какой эквивалент в VS для Mac/Xamarin Studio) Я сделал это для всех конфигураций затронутых проектов. Возврат к macOS env, сборка теперь преуспевает. Конечно, нет отладочной информации, но она работает, не нарушая никаких отпечатков.
-
НЕСЧАС Коренная причина - использование компилятора/инструментов Roslyn для веб-проектов ASP.NET, и этот инструмент создает файлы PDB вместо файлов MDB, а сборка не позволяет создавать PDB файлы на платформе macOS (не использовать "платформу без поддержки".) Зная основную причину, мы также можем удалить следующие пакеты nuget из затронутых проектов:
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net45" />
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net45" developmentDependency="true" />
Непонятно, что принесено в жертву, удалив эти два пакета. Это позволяет мне создавать затронутые проекты с включенной информацией об отладке. В затронутых проектах содержались только конечные точки webapi и не использовались MVC и Razor. Было бы неплохо услышать опыт других, если у них возникли проблемы перед этим изменением.
НТН
Ответ 2
Это ошибка, которая будет исправлена в ближайшее время. Тем временем вы можете отредактировать файл csproj, чтобы добавить
<DebugType Condition="'$(OS)' != 'Windows_NT'">portable</DebugType>
после строки с <DebugType>full</DebugType>
или <DebugType>pdbonly</DebugType>
По сути, мы хотим, чтобы свойство DebugType
на Mac было portable
, которое поддерживается Roslyn csc.exe
на платформах, отличных от Windows, вместо pdb
.
Ответ 3
Чтобы решить эту проблему, вам нужно сделать:
Он решил эту ошибку, но дал мне еще один
"System.IO.FileNotFoundException Не удалось найти файл" /Users/.../.../bin\roslyn\csc.exe "
Ответ 4
Я надеюсь, что не опоздаю, я сделал следующее, чтобы решить проблему:
-
Щелкните правой кнопкой мыши в решении и выберите "Параметры",
-
Выберите вкладку Build → Configurations,
-
В "Конфигурации А". выберите "Отладка" и отключите все метки сборки и нажмите "принять",
-
Очистить, перестроить и выполнить проект.
Надеюсь, это поможет.