CSC:错误 CS0041:写入调试信息时出现意外错误 -- 'Operation is not supported on this platform.'

CSC: error CS0041: Unexpected error writing debug information -- 'Operation is not supported on this platform.'

刚刚下载 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)

不确定要对我的项目进行哪些更改才能编译。

我可以通过两种方式解决这个问题:

  1. HACK 通过从构建中删除调试符号(在 VS windows 中:项目属性 -> 构建选项卡 -> 高级按钮 -> 更改"Debug Info" 到 "none" 的下拉列表——不确定 VS 中 Mac / Xamarin Studio 的等效项)我对受影响项目的所有配置都这样做了。拉回 macOS 环境,现在构建成功。当然没有调试信息,但它可以在不破坏任何依赖的情况下工作。

  2. NON-HACK 根本原因是在 ASP.NET Web 项目中使用 Roslyn compiler/tools,并且此工具会生成 PDB 文件而不是 MDB 文件,并且构建尝试在 macOS 平台上生成 PDB 文件失败(er go "platform unsupported"。)了解根本原因,我们还可以从受影响的项目中删除以下 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

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

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

<DebugType>full</DebugType><DebugType>pdbonly</DebugType>

行之后

本质上,我们希望 Mac 上的 DebugType 属性 为 portable,Roslyn 在非 [=23] 上的 csc.exe 支持=] 平台,而不是 pdb.

要解决这个问题你需要做:

  1. Select 项目

  2. 右键单击和 select 选项

  3. Select 选项卡构建 -> 编译器
  4. 调试信息 -> None

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

"System.IO.FileNotFoundException Could not find file "/用户/.../.../bin\roslyn\csc.exe"

希望不要来得太晚,我做了以下事情来解决问题:

  1. 在解决方案中右击 select "Options",

  2. Select 选项卡构建 -> 配置,

  3. 在"Configuration A."select"Debug"中禁用所有构建标记并点击接受,

  4. 清理、重建并执行项目。

希望对您有所帮助。

我删除了那行之后

<DebugType>pdbonly</DebugType>

.csproj 文件,构建成功。