นี่คือเวลาที่ฉันพยายามทำให้วิธีแก้ปัญหาดูง่ายขึ้น
AddRazorRuntimeCompilation()
ปัญหากว่าจะมีการใช้ โดยเฉพาะอย่างยิ่งใน startup.cs คุณน่าจะเพิ่มการรวบรวมรันไทม์ของมีดโกนดังนี้:
IMvcBuilder builder = services.AddControllersWithViews()
.AddRazorRuntimeCompilation();
และเพื่อสนับสนุนโครงการเว็บของคุณอาจมีการอ้างอิงถึง Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
แพ็คเกจ nuget นั้นมีการพึ่งพาMicrosoft.CodeAnalysis
ที่สร้างเอาท์พุทที่ไม่ต้องการทั้งหมดในโฟลเดอร์เผยแพร่
การแก้ไขคือการแก้ไขไฟล์โครงการและสร้างเงื่อนไขการพึ่งพาในโหมดดีบั๊กดังนี้:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
Version="3.1.0" Condition="'$(Configuration)' == 'Debug'" />
</ItemGroup>
และจากนั้นในไฟล์ startup.cs เรียกAddRazorRuntimeCompilation()
อย่างมีเงื่อนไขดังนี้:
IMvcBuilder builder = services.AddControllersWithViews();
#if DEBUG
if (Env.IsDevelopment()) {
builder.AddRazorRuntimeCompilation();
}
#endif
สิ่งนี้จะทำให้Microsoft.CodeAnalysis
librairies เหล่านั้นทั้งหมดจะออกเมื่อรวบรวมในโหมด Debug เท่านั้น ดังนั้นเมื่อคุณเผยแพร่โดยใช้โหมด Release พวกเขาจะไม่ได้เป็นส่วนหนึ่งของผลลัพธ์