Estou publicando um site do ASP.NET Core MVC 3.0 e a pasta de saída contém muitas referências em vários idiomas para Microsoft.CodeAnalysis
librairies, alguém sabe por quê?
É claro que o FxCopAnalyzers
pacote Nuget está instalado no projeto, mas não foi publicado em uma versão anterior do projeto, então não entendo por que é agora, pois ele deve ser útil apenas no momento do desenvolvimento, não em um ambiente de produção.
asp.net-core
fxcop
microsoft.codeanalysis
Jonathan
fonte
fonte
Respostas:
Eu encontrei o mesmo problema quando usei a versão 3.0. Mas acho que não foi causado pela compilação de visualizações .net core 3 na publicação, porque também há View ViewCompilation na
release/2.1
ramificação.Eu acredito que você está correto. Essas análises devem ser usadas apenas no tempo de devoção.
Mas quando desinstalo o SDK (3.0) manualmente e instalo o SDK mais recente novamente , não consigo mais reproduzir. Não sei por que isso acontece, talvez tenha sido corrigido agora. É mais provável que seja causado por outro motivo: eu adicionei uma referência extra em outros pacotes que dependem do Microsoft.CodeAnalysis por acidente). De qualquer forma, atualize seu SDK para a versão mais recente primeiro.
Outra coisa importante é que, ao usar o Visual Studio para adicionar um controlador, ele adicionará uma referência
Microsoft.VisualStudio.Web.CodeGeneration.Design
automaticamente. Observe que este pacote dependeMicrosoft.CodeAnalysis.Common
indiretamente do pacote. AquiMicrosoft.CodeAnalysis.Common
está um pacote compartilhado usado pela Microsoft .NET Compiler Platform ("Roslyn"). Se você baixar este pacote e descompactar esta lib manualmente, verá que háMicrosoft.CodeAnalysis.dll
:Este pacote é necessário apenas no Dev-Time. Se você não remover essa dependência, receberá muitas DLLs relacionadas à
Microsoft.CodeAnalysis
sua pasta de publicação.Remova os pacotes que dependem
Microsoft.CodeAnalysis
e, em seguida, você não deverá obterMicrosoft.CodeAnalysis
dlls relacionadas:fonte
dotnet aspnet-codegenerator controlller ...
Para mim, essa linha dentro do
*.csproj
arquivo resolveu o problema de alguma forma. Ele ainda implementa oMicrosoft.CodeAnalysis
, mas apenas paraen
:Veja o comentário (de Jonathon Marolf) sobre a questão do Github.
fonte
Aqui está minha opinião sobre como tornar a solução mais fácil de ver.
O problema, mais do que provável, é o uso de
AddRazorRuntimeCompilation()
. Mais especificamente, no startup.cs é provável que você adicione a compilação do razor runtime da seguinte forma:e, para apoiar isso, seu projeto da web provavelmente tem uma referência a
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Esse pacote de pepitas depende de
Microsoft.CodeAnalysis
que está produzindo toda essa saída indesejada na pasta de publicação.A correção é editar o arquivo do projeto e tornar a dependência condicional no modo de depuração da seguinte maneira:
e, em seguida, no arquivo startup.cs chame condicionalmente da seguinte
AddRazorRuntimeCompilation()
maneira:Isso fará com que todas essas
Microsoft.CodeAnalysis
librairies fiquem fora apenas quando compilar no modo Debug. Portanto, agora quando você publicar usando o modo Release, eles não farão parte da saída.fonte
Talvez isso possa ajudar alguém, no meu caso o problema era "Microsoft.VisualStudio.Web.CodeGeneration.Desig", eu precisava alterar a referência do pacote no arquivo ".csproj" para incluir ExcludeAssets = "all":
fonte