Hãy cẩn thận làm theo lời khuyên của câu trả lời này. Trong khi nó giải quyết vấn đề trong tầm tay, nó có thể gây ra các vấn đề khác nhau vào một ngày sau đó.
Tôi đã có cùng một vấn đề. Rõ ràng trình biên dịch .NET không được tải vào GAC
. Những gì tôi đã làm để giải quyết nó là:
Đầu tiên, trong loại bảng điều khiển trình quản lý gói:
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Bây giờ, vì một số lý do, các quý ông tốt bụng ở Microsoft đã quyết định không cài đặt nó vào GAC cho chúng tôi. Bạn có thể thực hiện thủ công bằng cách mở Dấu nhắc lệnh dành cho nhà phát triển và nhập:
gacutil -i "C:\*PATH TO YOUR APP CODE*\bin\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll"
Phần kết luận
Microsoft cố gắng khuyến khích tất cả mọi người làm mọi thứ với nuget, điều này có thể ổn nếu không có lỗi thường xuyên xảy ra với hệ thống nuget. Cố gắng sử dụng cùng một dự án trên các giải pháp khác nhau, vô tình (hoặc không) cập nhật một trong số nhiều nugets mà nó sử dụng trên một trong số chúng, và nếu bạn không may mắn, bạn sẽ thấy ý của tôi khi bạn cố gắng xây dựng giải pháp khác. Mặt khác, việc đặt các tệp vào GAC cũng có thể gây ra các vấn đề trong tương lai vì mọi người có xu hướng quên những gì họ đặt ở đó và sau đó khi thiết lập môi trường mới, họ quên không bao gồm các tệp này. Một giải pháp khả thi khác là đặt các tệp vào một thư mục trung tâm cho các dll của bên thứ 3 (mặc dù việc gọi trình biên dịch của bên thứ 3 là rất lạ), điều này tạo ra các vấn đề về các tham chiếu bị hỏng khi thiết lập môi trường mới. Nếu bạn quyết định cài đặt dll vào GAC, thận trọng và nhớ rằng bạn đã làm như vậy. Nếu bạn không, hãy tải xuống nuget cho từng dự án một lần nữa và chịu tất cả các lỗi gây phiền nhiễu do nó gây ra (ít nhất là đã xảy ra khi cuối cùng tôi phát bệnh và chỉ đặt các tệp trong GAC). Cả hai cách tiếp cận có thể khiến bạn đau đầu và tạo ra vấn đề, đó chỉ là câu hỏi về vấn đề nào bạn muốn giải quyết. Microsoft khuyên bạn nên sử dụng hệ thống nuget và nói chung, nên lắng nghe họ hơn là một lập trình viên chưa biết trong SO, trừ khi bạn hoàn toàn chán ngấy hệ thống nuget và sử dụng để đối phó với GAC đủ lâu để nó trở thành một giải pháp thay thế tốt hơn cho bạn. tải xuống nuget cho mỗi dự án một lần nữa và chịu tất cả các lỗi gây phiền nhiễu do nó gây ra (ít nhất là đã xảy ra khi cuối cùng tôi phát bệnh và chỉ đặt các tệp trong GAC). Cả hai cách tiếp cận có thể khiến bạn đau đầu và tạo ra vấn đề, đó chỉ là câu hỏi về vấn đề nào bạn muốn giải quyết. Microsoft khuyên bạn nên sử dụng hệ thống nuget và nói chung, nên lắng nghe họ hơn là một lập trình viên chưa biết trong SO, trừ khi bạn hoàn toàn chán ngấy hệ thống nuget và sử dụng để đối phó với GAC đủ lâu để nó trở thành một giải pháp thay thế tốt hơn cho bạn. tải xuống nuget cho mỗi dự án một lần nữa và chịu tất cả các lỗi gây phiền nhiễu do nó gây ra (ít nhất là đã xảy ra khi cuối cùng tôi phát bệnh và chỉ đặt các tệp trong GAC). Cả hai cách tiếp cận có thể khiến bạn đau đầu và tạo ra vấn đề, đó chỉ là câu hỏi về vấn đề nào bạn muốn giải quyết. Microsoft khuyên bạn nên sử dụng hệ thống nuget và nói chung, nên lắng nghe họ hơn là một lập trình viên chưa biết trong SO, trừ khi bạn hoàn toàn chán ngấy hệ thống nuget và sử dụng để đối phó với GAC đủ lâu để nó trở thành một giải pháp thay thế tốt hơn cho bạn.