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
我能够通过两种方式解决这个问题:
HACK通过从构建中删除调试符号(在VS窗口中:项目属性 - >构建选项卡 - >高级按钮 - >将"调试信息"下拉列表更改为"无" - 不确定VS for Mac/Xamarin Studio中的等效项)我为受影响的项目的所有配置做了这个.回到macOS env,现在构建成功.当然没有调试信息,但它可以在不破坏任何代码的情况下工作.
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
这是一个很快就会修复的错误.同时,您可以编辑要添加的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.
要解决此问题,您需要执行以下操作:
选择项目
右键单击并选择选项
它解决了这个错误,但又给了我一个
“System.IO.FileNotFoundException 找不到文件“/Users/.../.../bin\roslyn\csc.exe”
| 归档时间: |
|
| 查看次数: |
8952 次 |
| 最近记录: |