Saya menerbitkan situs web ASP.NET Core MVC 3.0 dan folder keluaran berisi banyak referensi dalam banyak bahasa untuk Microsoft.CodeAnalysis
librairies, ada yang tahu mengapa?
Tentu saja FxCopAnalyzers
paket Nuget diinstal pada proyek, tetapi tidak diterbitkan dalam versi proyek sebelumnya, jadi saya tidak mengerti mengapa sekarang karena itu hanya berguna pada waktu dev tidak di lingkungan produksi.
asp.net-core
fxcop
microsoft.codeanalysis
Jonathan
sumber
sumber
Jawaban:
Saya memang mengalami masalah yang sama ketika saya menggunakan versi 3.0. Tapi saya tidak berpikir itu disebabkan oleh .net core 3 mengkompilasi pandangan pada publikasi karena ada juga ViewCompilation di
release/2.1
cabang.Saya yakin Anda benar. Analisis ini harus digunakan pada saat devtime saja.
Tetapi ketika saya menghapus SDK (3.0) secara manual dan menginstal SDK terbaru lagi , saya tidak bisa lagi mereproduksi. Saya tidak mengapa itu terjadi, mungkin itu sudah diperbaiki sekarang. Ini lebih mungkin disebabkan oleh alasan lain: Saya menambahkan referensi tambahan pada paket lain yang tergantung pada Microsoft.CodeAnalysis secara tidak sengaja). Bagaimanapun, harap tingkatkan SDK Anda ke versi terbaru terlebih dahulu.
Hal penting lainnya adalah, ketika menggunakan Visual Studio untuk menambahkan controller, itu akan menambahkan referensi
Microsoft.VisualStudio.Web.CodeGeneration.Design
secara otomatis. Catatan paket ini memiliki ketergantungan padaMicrosoft.CodeAnalysis.Common
paket secara tidak langsung. Di siniMicrosoft.CodeAnalysis.Common
adalah paket bersama yang digunakan oleh Microsoft .NET Compiler Platform ("Roslyn"). Jika Anda mengunduh paket ini dan unzip lib ini secara manual, Anda akan menemukan bahwa adaMicrosoft.CodeAnalysis.dll
:Paket ini hanya diperlukan pada Dev-Time. Jika Anda tidak menghapus ketergantungan ini, Anda akan mendapatkan cukup banyak dll yang terkait dengan
Microsoft.CodeAnalysis
dalam folder publikasikan Anda.Hapus paket-paket yang tergantung
Microsoft.CodeAnalysis
, dan Anda seharusnya tidak mendapatkanMicrosoft.CodeAnalysis
dll terkait:sumber
dotnet aspnet-codegenerator controlller ...
Bagi saya, baris di dalam
*.csproj
file ini entah bagaimana menyelesaikan masalah. Itu masih menyebarkanMicrosoft.CodeAnalysis
, tetapi hanya untuken
:Lihat komentar (oleh Jonathon Marolf) tentang masalah Github.
sumber
Inilah pendapat saya untuk mencoba membuat solusi lebih mudah dilihat.
Masalahnya, kemungkinan besar adalah penggunaan
AddRazorRuntimeCompilation()
. Lebih khusus, di startup.cs Anda cenderung menambahkan kompilasi runtime razor seperti:dan untuk mendukung itu, proyek web Anda mungkin memiliki referensi
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Paket nuget itu memiliki ketergantungan pada
Microsoft.CodeAnalysis
yang menghasilkan semua output yang tidak diinginkan dalam folder publish.Cara mengatasinya adalah mengedit file proyek dan membuat ketergantungan bergantung pada mode Debug seperti:
dan kemudian dalam file startup.cs bersyarat panggilan
AddRazorRuntimeCompilation()
seperti:Ini akan menyebabkan semua
Microsoft.CodeAnalysis
librairies hanya keluar saat kompilasi dalam mode Debug. Jadi sekarang ketika Anda mempublikasikan menggunakan mode Rilis mereka tidak akan menjadi bagian dari output.sumber
Mungkin ini dapat membantu seseorang, dalam kasus saya masalahnya adalah "Microsoft.VisualStudio.Web.CodeGeneration.Desig", saya perlu mengubah referensi paket dalam file ".csproj" untuk memasukkan ExcludeAssets = "all":
sumber