Я публикую сайт ASP.NET Core MVC 3.0, и выходная папка содержит множество ссылок на Microsoft.CodeAnalysis
библиотеки на многих языках , кто-то знает почему?
Конечно, FxCopAnalyzers
пакет Nuget установлен в проекте, но он не был опубликован в более ранней версии проекта, поэтому я не понимаю, почему это так, поскольку он должен быть полезен только во время разработки, а не в производственной среде.
asp.net-core
fxcop
microsoft.codeanalysis
Джонатан
источник
источник
Ответы:
Я столкнулся с той же проблемой, когда использовал версию 3.0. Но я не думаю , что это вызвано .net ядро 3 компилирования взглядов на публикацию , потому что есть также вид ViewCompilation в
release/2.1
отрасли.Я верю, что ты прав. Эти Анализы должны использоваться только во время разработки.
Но когда я удаляю SDK (3.0) вручную и снова устанавливаю последний SDK , я не могу больше не воспроизводить. Я не знаю, почему это происходит, может быть, это было исправлено сейчас. Скорее всего, это вызвано другой причиной: я случайно добавил дополнительную ссылку на другие пакеты, которая зависит от Microsoft.CodeAnalysis ). В любом случае, пожалуйста, сначала обновите ваш SDK до последней версии.
Еще одна важная вещь: при использовании Visual Studio для добавления контроллера он автоматически добавит ссылку
Microsoft.VisualStudio.Web.CodeGeneration.Design
. Обратите внимание, что этотMicrosoft.CodeAnalysis.Common
пакет косвенно зависит от пакета. ЗдесьMicrosoft.CodeAnalysis.Common
это общий пакет, используемый платформой компилятора Microsoft .NET («Roslyn»). Если вы скачаете этот пакет и разархивируете эту библиотеку вручную, вы обнаружите, что естьMicrosoft.CodeAnalysis.dll
:Этот пакет необходим только в Dev-Time. Если вы не удалите эту зависимость, вы получите довольно много dll, связанных с
Microsoft.CodeAnalysis
вашей папкой публикации.Удалите те пакеты, от которых зависит
Microsoft.CodeAnalysis
, и тогда у вас не должно бытьMicrosoft.CodeAnalysis
связанных dll:источник
dotnet aspnet-codegenerator controlller ...
Для меня эта строка внутри
*.csproj
файла как-то решила проблему. Это все еще развертываетMicrosoft.CodeAnalysis
, но только дляen
:Смотрите комментарий (Джонатон Марольф) по проблеме Github.
источник
Вот моя попытка сделать решение легче увидеть.
Проблема, скорее всего, заключается в использовании
AddRazorRuntimeCompilation()
. В частности, в файле startup.cs вы, вероятно, добавите сборку времени выполнения бритвы следующим образом:и чтобы поддержать это, ваш веб-проект, вероятно, имеет ссылку на
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Этот пакет nuget зависит от
Microsoft.CodeAnalysis
того, производит ли этот нежелательный вывод в папке публикации.Исправление состоит в том, чтобы отредактировать файл проекта и сделать зависимость зависимой в режиме отладки следующим образом:
а затем в файле startup.cs условно вызвать
AddRazorRuntimeCompilation()
так:Это приведет к тому, что все эти
Microsoft.CodeAnalysis
библиотеки будут отсутствовать только при компиляции в режиме отладки. Так что теперь, когда вы публикуете в режиме Release, они не будут частью вывода.источник
Может быть, это может кому-то помочь, в моем случае проблема была "Microsoft.VisualStudio.Web.CodeGeneration.Desig", мне нужно было изменить ссылку на пакет в файле ".csproj", чтобы включить ExcludeAssets = "all":
источник