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)

Не уверен, что нужно изменить в моем проекте, чтобы все было скомпилировано.


person Slee    schedule 16.11.2016    source источник
comment
похоже, это связано с созданием файлов PDB? это тоже поразило меня, хотя это происходит без использования visual-studio-mac (это проблема с xbuild, я испытываю это только в одном проекте, проекте web / asp.net, который отлично работает в Windows, а затем размещается на Mac нормально, но не работает на Mac.)   -  person Shaun Wilson    schedule 16.11.2016
comment
это то, что я тоже нашел, просто у меня пока не работает никакая работа   -  person Slee    schedule 16.11.2016
comment
также кажется, что для компиляции используется упакованный в nuget csc.exe (Microsoft .NET) вместо mcs (Mono)   -  person Shaun Wilson    schedule 16.11.2016
comment
Вы переопределяете свойство CscToolExe? По умолчанию должно быть mcs.exe. С какими проектами вы сталкиваетесь с этой проблемой?   -  person radical    schedule 17.11.2016
comment
любой проект, который включает <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net45" developmentDependency="true" />, будет иметь эту проблему - исправление, вероятно, потребует модификации этого компилятора для платформы mono / xamarin / mac / env. как давний разработчик .NET, мне все равно, какой компилятор использовать, главное, чтобы он работал и полученные изображения можно было отлаживать после компиляции.   -  person Shaun Wilson    schedule 18.11.2016


Ответы (5)


Мне удалось обойти эту проблему двумя способами:

  1. HACK Удалив символы отладки из сборки (в окнах VS: Свойства проекта -> Вкладка «Сборка» -> кнопка «Дополнительно» -> измените раскрывающийся список «Информация об отладке» на «Нет») - не знаете, какой эквивалент находится в VS для Mac / Xamarin Studio) Я сделал это для всех конфигураций затронутых проектов. Вернулся в macOS env, сборка успешно завершена. Нет, конечно, отладочной информации, но она работает без каких-либо проблем.

  2. НЕ-HACK. Основная причина заключается в использовании компилятора / инструментов 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. Было бы неплохо услышать опыт других, если бы у них возникли проблемы до этого изменения.

HTH

person Shaun Wilson    schedule 16.11.2016
comment
У меня та же дилемма - я пытаюсь запустить процесс CI на MONO, и он не работает из-за проблем с компилятором, связанных с Roslyn. У меня есть только чистый проект WebAPI2 (с интерфейсом Angular2) - я удалил все ссылки компилятора Roslyn, и, похоже, это работает, но я не полностью понимаю последствия ... - person Rodney; 12.02.2017
comment
Вариант NON-HACK мне подходит, но я также должен удалить код из csproj: ‹Error Condition =! Exists ('.. \ packages \ Microsoft.Net.Compilers.1.0.0 \ build \ Microsoft.Net.Compilers. реквизит ') ..... - person Cairo; 17.03.2018
comment
У меня возникла та же проблема с использованием образа mono:5.12.0.226 в докере на хосте контейнера Linux при попытке создать ASP.NET MVC (.NET v4.5.2). Вариант №2 решил мою проблему - person Samuel Slade; 29.06.2018

Это ошибка, которая будет исправлена ​​в ближайшее время. Между тем, вы можете отредактировать свой файл csproj, чтобы добавить

<DebugType Condition="'$(OS)' != 'Windows_NT'">portable</DebugType>

после строки с <DebugType>full</DebugType> или <DebugType>pdbonly</DebugType>

По сути, мы хотим, чтобы свойство DebugType на Mac было portable, которое поддерживается Roslyn csc.exe на платформах, отличных от Windows, вместо pdb.

person radical    schedule 18.11.2016
comment
Просто попробовал это и получил следующую ошибку при сборке в VS 2016 для Mac: Ошибка CS1902: недопустимый параметр «переносимый» для / debug; должен быть полным или пустым (CS1902) - person Icet; 11.12.2016
comment
Есть ли проблема с connect () или что-то подобное, с помощью которой мы можем отследить эту ошибку, я все еще использую один из других обходных путей, упомянутых здесь, и не уверен, что / как это задерживается / отслеживается (т.е. как мы узнаем, работает ли он как задумано?) Спасибо! - person Shaun Wilson; 02.01.2017

Для решения этой проблемы вам необходимо сделать:

  1. Выбрать проект

  2. Щелкните правой кнопкой мыши и выберите параметры

  3. Выберите вкладку Build -> Compiler
  4. Информация об отладке -> Нет

Он решил эту ошибку, но дал мне еще одну

"System.IO.FileNotFoundException Не удалось найти файл" /Users/.../.../bin\roslyn\csc.exe "

person Icet    schedule 10.12.2016

После того, как я удалил строку

<DebugType>pdbonly</DebugType>

из файла .csproj сборка прошла успешно.

person Darius    schedule 30.05.2019

Надеюсь не опоздать, для решения проблемы я сделал следующее:

  1. Щелкните правой кнопкой мыши решение и выберите «Параметры»,

  2. Выберите вкладку Build -> Configurations,

  3. В «Конфигурации А.» выберите «Отладка», отключите все метки сборок и нажмите «Принять»,

  4. Очистить, перестроить и выполнить проект.

Надеюсь, это поможет.

person Alan Uscanga    schedule 22.01.2019