CSC:错误CS0041:写入调试信息时出现意外错误 - "此平台不支持此操作".

Sle*_*lee 13 mono xbuild pdb-files roslyn visual-studio-mac

刚刚下载了Visual Studio Professional for 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)
Run Code Online (Sandbox Code Playgroud)

不知道在我的项目上要改变什么来编译.

Sha*_*son 15

我能够通过两种方式解决这个问题:

  1. HACK通过从构建中删除调试符号(在VS窗口中:项目属性 - >构建选项卡 - >高级按钮 - >将"调试信息"下拉列表更改为"无" - 不确定VS for Mac/Xamarin Studio中的等效项)我为受影响的项目的所有配置做了这个.回到macOS env,现在构建成功.当然没有调试信息,但它可以在不破坏任何代码的情况下工作.

  2. NON-HACK根本原因是使用Roslyn编译器/工具用于ASP.NET Web项目,并且此工具生成PDB文件而不是MDB文件,并且构建无法尝试在macOS平台上生成PDB文件(呃,"平台不支持") .)了解根本原因我们还可以从受影响的项目中删除以下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" />
    
    Run Code Online (Sandbox Code Playgroud)

目前还不清楚通过删除这两个包来牺牲什么.这允许我使用包含的调试信息构建受影响的项目.受影响的项目仅包含webapi端点,并且不使用MVC或Razor引擎.如果他们在这一变化的上游遇到问题,那么听听别人的经验会很高兴.

HTH


rad*_*cal 5

这是一个很快就会修复的错误.同时,您可以编辑要添加的csproj文件

<DebugType Condition="'$(OS)' != 'Windows_NT'">portable</DebugType>
Run Code Online (Sandbox Code Playgroud)

<DebugType>full</DebugType>或之后的行<DebugType>pdbonly</DebugType>

从本质上讲,我们希望DebugTypeMac上的属性portable是由Roslyn csc.exe在非Windows平台上支持的,而不是pdb.

  • 刚试过这个,在VS 2016 for Mac中构建时遇到以下错误:"错误CS1902:无效选项'portable'for/debug;必须是full或pdbonly(CS1902)" (4认同)

Ice*_*cet 5

要解决此问题,您需要执行以下操作:

  1. 选择项目

  2. 右键单击并选择选项

  3. 选择选项卡 Build -> Compiler
  4. 调试信息 -> 无

它解决了这个错误,但又给了我一个

“System.IO.FileNotFoundException 找不到文件“/Users/.../.../bin\roslyn\csc.exe”