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

时间:2016-11-16 18:49:54

标签: mono roslyn pdb-files xbuild 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)

不确定要在我的项目中更改要编译的内容。

5 个答案:

答案 0 :(得分:14)

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

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

  2. NON-HACK 根本原因是使用Roslyn编译器/工具进行ASP.NET Web项目,并且此工具生成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" />
    
  3. 目前还不清楚通过删除这两个包来牺牲什么。这允许我使用包含的调试信息构建受影响的项目。受影响的项目仅包含webapi端点,并且不使用MVC或Razor引擎。如果他们在这一变化的上游存在问题,那么听听别人的经历会很高兴。

    HTH

答案 1 :(得分:5)

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

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

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

之后的

基本上,我们希望Mac上的DebugType属性为portable,而非Windows平台上的Roslyn csc.exe支持该属性,而不是pdb

答案 2 :(得分:3)

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

  1. 选择项目

  2. 右键单击并选择选项

  3. 选择标签构建 - &gt;编译器
  4. 调试信息 - &gt;无
  5. 它解决了这个错误,但又给了我一个

    &#34; System.IO.FileNotFoundException无法找到文件&#34; / Users /.../.../ bin \ roslyn \ csc.exe&#34;

答案 3 :(得分:0)

我希望不要来得太晚,我通过以下措施解决了这个问题:

  1. 右键单击解决方案,然后选择“选项”,

  2. 选择标签Build-> Configurations

  3. 在“配置A”中。选择“调试”并禁用所有构建标记,然后单击接受,

  4. 清洁,重建和执行项目。

我希望这会有所帮助。

答案 4 :(得分:0)

删除行后

<DebugType>pdbonly</DebugType>

.csproj文件开始,构建成功。