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)
不确定要对我的项目进行哪些更改才能编译。
我可以通过两种方式解决这个问题:
HACK 通过从构建中删除调试符号(在 VS windows 中:项目属性 -> 构建选项卡 -> 高级按钮 -> 更改"Debug Info" 到 "none" 的下拉列表——不确定 VS 中 Mac / Xamarin Studio 的等效项)我对受影响项目的所有配置都这样做了。拉回 macOS 环境,现在构建成功。当然没有调试信息,但它可以在不破坏任何依赖的情况下工作。
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
.
要解决这个问题你需要做:
Select 项目
右键单击和 select 选项
- Select 选项卡构建 -> 编译器
- 调试信息 -> None
它解决了这个错误,但给了我另一个错误
"System.IO.FileNotFoundException Could not find file "/用户/.../.../bin\roslyn\csc.exe"
希望不要来得太晚,我做了以下事情来解决问题:
在解决方案中右击 select "Options",
Select 选项卡构建 -> 配置,
在"Configuration A."select"Debug"中禁用所有构建标记并点击接受,
清理、重建并执行项目。
希望对您有所帮助。
我删除了那行之后
<DebugType>pdbonly</DebugType>
从 .csproj
文件,构建成功。
刚刚下载 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)
不确定要对我的项目进行哪些更改才能编译。
我可以通过两种方式解决这个问题:
HACK 通过从构建中删除调试符号(在 VS windows 中:项目属性 -> 构建选项卡 -> 高级按钮 -> 更改"Debug Info" 到 "none" 的下拉列表——不确定 VS 中 Mac / Xamarin Studio 的等效项)我对受影响项目的所有配置都这样做了。拉回 macOS 环境,现在构建成功。当然没有调试信息,但它可以在不破坏任何依赖的情况下工作。
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
.
要解决这个问题你需要做:
Select 项目
右键单击和 select 选项
- Select 选项卡构建 -> 编译器
- 调试信息 -> None
它解决了这个错误,但给了我另一个错误
"System.IO.FileNotFoundException Could not find file "/用户/.../.../bin\roslyn\csc.exe"
希望不要来得太晚,我做了以下事情来解决问题:
在解决方案中右击 select "Options",
Select 选项卡构建 -> 配置,
在"Configuration A."select"Debug"中禁用所有构建标记并点击接受,
清理、重建并执行项目。
希望对您有所帮助。
我删除了那行之后
<DebugType>pdbonly</DebugType>
从 .csproj
文件,构建成功。