2016-11-16 125 views
10

剛剛下載的Visual Studio專業版的Mac和我似乎無法構建任何東西,因爲我總是得到同樣的錯誤:CSC:錯誤CS0041:編寫調試信息時出現意外錯誤 - '該平臺不支持操作。'

/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) 

不知道改變我的項目得到什麼東西來編譯。

+0

這似乎與生產PDB文件?這也打擊了我,雖然這沒有使用'visual-studio-mac'(這是xbuild的一個問題,我只在一個項目上體驗過,一個基於Windows的web/asp.net項目很好,而且那麼在Mac上的主機好,但不建立在Mac上。) –

+0

這就是我所發現的,只是沒有解決方法正在爲我工​​作,但 – Slee

+0

它也出現了nuget打包'csc.exe'(微軟。 NET)被用於編譯而不是'mcs'(Mono) –

回答

10

我能解決這個問題有兩種方法:

  1. HACK通過從構建刪除調試符號(在VS窗口:項目屬性 - > Build選項卡 - >高級按鈕 - >變化「調試信息」下拉爲「無」 - 不知道在VS/Mac/Xamarin Studio中有什麼等價物)我爲受影響的項目的所有配置做了這個。拉回到macOS env,建立成功。當然沒有調試信息,但它的工作原理沒有破壞任何代價。

  2. NON-HACK根本原因是使用了羅斯林編譯/於ASP.NET Web項目的工具,而這種工具產生的,而不是MDB文件PDB文件,並生成失敗試圖生產在MacOS平臺PDB文件(ER去「的平臺不支持」。)瞭解根本原因,我們也可以從受影響的項目刪除以下的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

+0

我有同樣的困境 - 我試圖讓MONO上的CI進程運行,並且在Roslyn相關的編譯器問題上失敗。我只有一個純WebAPI2項目(帶有一個Angular2前端) - 我已經刪除了所有的Roslyn編譯器鏈接,這似乎工作,但我不完全理解其含義... – Rodney

5

這是一個即將解決的錯誤。同時,您可以編輯您的csproj文件,<DebugType>full</DebugType><DebugType>pdbonly</DebugType>

本質上線後添加

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

,我們希望在Mac上DebugType屬性爲portable,這是在非羅斯林的csc.exe支持Windows平臺,而不是pdb

+4

剛剛嘗試過,並得到以下錯誤時建立在VS 2016 for Mac:「錯誤CS1902:無效選項'便攜式'的/調試;必須是完整或pdbonly(CS1902)」 – Icet

+0

是否有連接()問題或類似,我們可以跟蹤這個錯誤,我仍然在使用這裏提到的其他解決方法之一,並不確定是否/如何積壓/跟蹤(即我們如何知道它何時按預期工作?)謝謝! –

3

爲了解決這個問題,你需要做的:

  1. 選擇項目

  2. 右鍵單擊並選擇選項

  3. 選擇標籤生成 - >編譯器
  4. 調試信息 - >無

它解決了這個呃ROR但給了我另外一個

「System.IO.FileNotFoundException找不到文件‘/Users/.../.../bin\roslyn\csc.exe’

相關問題