Почему Microsoft.CodeAnalysis публикуется на веб-сайте ASP.NET Core? - PullRequest
2 голосов
/ 08 октября 2019

Я публикую веб-сайт ASP.NET Core MVC 3.0, и выходная папка содержит множество ссылок на многие языки на Microsoft.CodeAnalysis библиотеки, кто-то знает почему?

Конечно, пакет FxCopAnalyzers Nugetустановлен в проекте, но он не был опубликован в более ранней версии проекта, поэтому я не понимаю, почему это так, поскольку это должно быть полезно только во время разработки, а не в производственной среде.

1 Ответ

2 голосов
/ 09 октября 2019

содержит множество ссылок на многие библиотеки Microsoft.CodeAnalysis

Я столкнулся с той же проблемой, когда использовал версию 3.0. Но я не думаю, что это вызвано компиляцией представлений .net core 3 при публикации, поскольку в ветви release/2.1 также есть View ViewCompilation .


это должно бытьполезно только во время разработки, а не в производственной среде.

  1. Я считаю, что вы правы. Эти Анализы должны использоваться только во время разработки.

  2. Но когда я удаляю SDK (3.0) вручную и снова устанавливаю последний SDK , я больше не могу воспроизводить. Я не знаю, почему это происходит, может быть, это было исправлено сейчас. Скорее всего, это вызвано другой причиной: я добавил дополнительную ссылку на другие пакеты, которая зависит от Microsoft.CodeAnalysis случайно). В любом случае, пожалуйста, сначала обновите SDK до последней версии.

  3. Еще одна важная вещь: при использовании Visual Studio для добавления контроллера он добавит ссылку на Microsoft.VisualStudio.Web.CodeGeneration.Design автоматически. Обратите внимание, что этот пакет косвенно зависит от пакета Microsoft.CodeAnalysis.Common. Здесь Microsoft.CodeAnalysis.Common является общим пакетом, используемым платформой компилятора Microsoft .NET («Roslyn»). Если вы загрузите этот пакет и разархивируете эту библиотеку вручную, вы обнаружите, что есть Microsoft.CodeAnalysis.dll:

    microsoft.codeanalysis.common.3.3.1/
    ├───lib/
    │   └───netstandard2.0/
    │       ├─── ...
    │       ├─── <b>Microsoft.CodeAnalysis.dll</b>
    │       ├─── Microsoft.CodeAnalysis.pdb
    │       ├─── Microsoft.CodeAnalysis.xml
    │       └─── ...
    ├───package/
    │   └───...
    └───_rels/
    

    Этот пакет необходим только в Dev-Time. Если вы не удалите эту зависимость, вы получите довольно много dll, связанных с Microsoft.CodeAnalysis в вашей папке публикации.

    <ItemGroup>
        <!-- this is not necessary when publishing -->
        <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" />
    </ItemGroup>
    

    Удалите те пакеты, которые зависят от Microsoft.CodeAnalysis, а затем выне должны получать Microsoft.CodeAnalysis связанных dll:

    enter image description here

...