Có một loạt các câu hỏi liên quan về vấn đề này, mặc dù hầu hết các câu trả lời đều xác định Roslyn và / hoặc cung cấp "bản sửa lỗi" cho một số vấn đề ( exe
, với các nhà cung cấp dịch vụ lưu trữ, v.v.)
Những gì tôi dường như không thể theo dõi là "tại sao" và "để làm gì" (có lẽ chỉ trong ngữ cảnh của ASP.Net MVC / Web API) trong /bin/roslyn
.
Tôi đã gặp phải các vấn đề tương tự (lưu trữ - .exe
hạn chế, hỗ trợ 4.6
, v.v.) và "cách khắc phục" của tôi là "chỉ triển khai cho Azure" (tất nhiên mọi thứ hoạt động mà không gặp trở ngại). Nhưng thực sự, điều này không trả lời:
tại sao chúng cần thiết?- điều này có nghĩa là chúng được sử dụng để
runtime
biên dịch(bộ não của tôi chỉ ra điều này, nhưng đó là một suy đoán hoàn toàn / có lẽ sai lầm của tôi), như bài đăng SO này cho thấy- trừ khi được sửa chữa, đây là "nó" (thêm bên dưới). - có vẻ như "loại bỏ gói" là một "sửa chữa" (dựa trên một số câu trả lời trong quá khứ) ,
nhưng nếu vậy, nó (lại) đặt ra câu hỏi
Tôi nghĩ hiểu được điều này sẽ có ích - ví dụ: tôi không thể là người duy nhất nhướng mày khi thấy.exe
"cần thiết" ....
Cập nhật
Để chứng tỏ rằng "những viên ngọc ẩn" tồn tại :) Tôi đã đọc đi đọc lại điều này ... dù sao thì nó đã ở đó một thời gian rồi - nhưng không phải là chuỗi nhận xét - liên kết được tham chiếu ban đầu, khoảng năm 2014, đã được thiết kế lại bởi Microsoft và các bình luận không còn hiển thị nữa ... rất may là các phần liên quan ở bên dưới.
Sai lầm LỚN - nó đã nhìn chằm chằm vào tôi suốt thời gian qua (hoặc ít nhất là kể từ cuộc trao đổi này):
Dmitry Dzygin 2 thg 6, 2015 12:53 SA
Tôi đã thử phiên bản mới nhất của gói NuGet, nhưng dường như có sự khác biệt trong cách trình biên dịch được tải / thực thi.
Trong v0.2.0.0, trình biên dịch Roslyn sẽ được tải vào bộ nhớ, cải thiện hiệu suất đáng kể cho các trang web không được biên dịch trước với nhiều tệp * .as * x / *. Cshtml. Phiên bản mới, tuy nhiên, có một
/bin/roslyn/csc.exe
tệp , được thực thi một lần cho mỗi tệp, loại bỏ hoàn toàn tính năng tối ưu hóa đã đề cập ở trên .....
Vàng:
XMao 2 tháng sáu 2015 1:22 CH
@Dmitry Công việc của
csc.exe
in/bin/Roslyn
là gọiVBCSCompiler.exe
, nằm trong cùng một thư mục.VBCSCompiler.exe
là quá trình thực hiện công việc biên dịch thực tế. Nếu VBCSCompiler đang chạy thì csc.exe sẽ sử dụng lại nó và do đó chúng tôi sẽ vẫn đạt được sự cải thiện hiệu suất đã đề cập.
Hth ...
Cập nhật: 10/2017
Có vẻ như điều này có liên quan sau tất cả thời gian này để cập nhật thêm.
Câu trả lời dưới đây của @Donny V là một lựa chọn . Bằng cách biên dịch đầy đủ ứng dụng của bạn, bao gồm tất cả Views
( .cshtml
/ .vbhtml
), bạn sẽ không cần điều đóexe
trong ứng dụng của mình.
Điều này đúng ngay cả khi Visual Studio (cho đến ngày nay, VS 2017, một cách khó hiểu) vẫn sẽ tạo /bin/roslyn
và nội dung của nó trong Publish
quá trình này, ngay cả khi "biên dịch đầy đủ" được đặt .
Bạn có thể kiểm tra điều này bằng cách trừ các /bin/roslyn
thư mục và nội dung của nó khi đẩy ứng dụng của bạn để cung cấp dịch vụ lưu trữ của bạn.
Cảnh báo :
Như đã đề cập, việc biên dịch đầy đủ ứng dụng của bạn có nghĩa là bạn sẽ phải biên dịch lại nó, ngay cả khi View
thay đổi cấp độ.