2016-11-16 76 views
10

Chỉ cần tải về Visual Studio Professional dành cho Mac và tôi dường như không thể xây dựng bất cứ điều gì như tôi luôn luôn nhận được lỗi tương tự:CSC: lỗi CS0041: Lỗi không mong muốn khi ghi thông tin gỡ lỗi - 'Thao tác không được hỗ trợ trên nền tảng này'.

/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) 

Không chắc chắn những gì để thay đổi về dự án của tôi để có được những điều để biên dịch.

+0

này dường như có liên quan đến sản xuất Các tệp PDB?điều này đã đánh tôi, mặc dù điều này xảy ra mà không sử dụng 'visual-studio-mac' (đó là vấn đề với xbuild, tôi chỉ trải nghiệm điều này trên một dự án, một dự án web/asp.net được xây dựng trên Windows, và sau đó lưu trữ trên Mac tốt, nhưng không xây dựng trên mac.) –

+0

đó là những gì tôi đã tìm thấy là tốt, chỉ cần không có công việc xung quanh đang làm việc cho tôi chưa – Slee

+0

nó cũng xuất hiện một nuget đóng gói 'csc.exe' (Microsoft. NET) đang được sử dụng để biên dịch thay vì 'mcs' (Mono) –

Trả lời

10

tôi đã có thể làm việc xung quanh vấn đề này theo hai cách:

  1. HACK Bằng cách loại bỏ ký hiệu gỡ lỗi từ việc xây dựng (trong cửa sổ VS: Project Properties -> Xây dựng Tab -> nút Advanced -> thay đổi "Gỡ lỗi thông tin" thả xuống để "không" - không chắc chắn những gì tương đương là trong VS cho Mac/Xamarin Studio) Tôi đã làm điều này cho tất cả các cấu hình của dự án bị ảnh hưởng (s). Kéo trở lại macOS env, xây dựng bây giờ thành công. Không có thông tin gỡ lỗi của khóa học, nhưng nó hoạt động mà không vi phạm bất kỳ deps.

  2. KHÔNG khôi phục Nguyên nhân gốc là sử dụng trình biên dịch/công cụ Roslyn cho dự án Web ASP.NET và công cụ này tạo tệp PDB thay vì tệp MDB và xây dựng không cố gắng tạo tệp PDB trên nền tảng macOS (er đi "nền tảng được hỗ trợ".) Biết được nguyên nhân gốc rễ chúng ta cũng có thể loại bỏ các gói NuGet sau đây từ các dự án bị ảnh hưởng:

    <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" /> 
    

Đó là chưa rõ ràng những gì đang hy sinh bằng cách loại bỏ hai gói này. Điều này cho phép tôi xây dựng các dự án bị ảnh hưởng với thông tin gỡ lỗi đi kèm. Các dự án bị ảnh hưởng chỉ chứa các điểm cuối webapi, và không sử dụng công cụ MVC hoặc Razor. Thật tuyệt khi nghe những trải nghiệm của người khác nếu họ có vấn đề ngược dòng từ sự thay đổi này.

HTH

+0

Tôi có cùng một tình trạng khó xử - tôi đang cố gắng để có được một quá trình CI trên MONO để chạy và nó không thành công trên các vấn đề trình biên dịch liên quan đến Roslyn. Tôi chỉ có một WebAPI2 porject thuần túy (với Angular2 front-end) - tôi đã gỡ bỏ tất cả các liên kết trình biên dịch Roslyn và dường như nó hoạt động nhưng tôi không hoàn toàn hiểu được hàm ý ... – Rodney

5

Đây là lỗi sẽ được khắc phục trong thời gian ngắn. Trong khi đó, bạn có thể chỉnh sửa tập tin csproj của bạn để thêm

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

sau khi phù hợp với <DebugType>full</DebugType> hoặc <DebugType>pdbonly</DebugType>

Về cơ bản, chúng tôi muốn các DebugType tài sản trên Mac là portable, được hỗ trợ bởi Roslyn của csc.exe trên không nền tảng cửa sổ, thay vì pdb.

+4

Chỉ cần thử điều này và nhận được lỗi sau xây dựng trong VS 2016 cho Mac: "Lỗi CS1902: Tùy chọn không hợp lệ 'di động' cho/gỡ lỗi; phải đầy hoặc pdbonly (CS1902)" – Icet

+0

Có sự cố kết nối() hay tương tự chúng tôi có thể theo dõi lỗi này, tôi vẫn đang sử dụng một trong những cách giải quyết khác được đề cập ở đây và không chắc liệu/cách này được backlogged/tracking (nghĩa là làm cách nào chúng ta biết khi nào nó hoạt động như dự định?) Cảm ơn! –

3

Để giải quyết vấn đề này bạn cần làm:

  1. Chọn dự án

  2. Nhấp chuột phải và chọn tùy chọn

  3. Chọn tab Build -> Compiler
  4. thông tin Debug -> Không

Nó giải quyết được điều này ROR nhưng mang lại cho tôi một số khác

"System.IO.FileNotFoundException Không thể tìm thấy tập tin '/Users/.../.../bin\roslyn\csc.exe'

Các vấn đề liên quan