Quando publico um projeto do ASP.NET Core 3.0, recebo algumas pastas localizadas em que os 4 assemblies mostrados estão em cada uma dessas pastas. Não sei por que essas pastas e arquivos são incluídos. Nenhum dos meus pacotes faz referência a um CodeAnalysis
pacote.
Eu adicionei <PreserveCompilationContext>false</PreserveCompilationContext>
no arquivo csproj, mas não ajudou. Existe uma maneira de excluí-los?
asp.net-core
visual-studio-2019
asp.net-core-3.0
Tony_Henrich
fonte
fonte
Respostas:
Você recebe muitas pastas de idiomas que contêm
CodeAnalysis.dll
arquivos na saída publicada, se você tiver uma referência ao projetoMicrosoft.VisualStudio.Web.CodeGeneration.Design
, necessária para os controladores de andaimes. Se isso for verdade para o seu projeto, altere a referência do pacote no seu.csproj
arquivo para incluirExcludeAssets="all"
Por exemplo,
*.csproj
arquivo antigoNovo arquivo
*.csproj
deve serfonte
No meu caso, a origem dessas pastas localizadas era do pacote Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Depende do Microsoft.CodeAnalysis.Razor. Você pode ler mais sobre o objetivo do pacote aqui: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.1
Você não pode simplesmente excluir um ativo ao tentar tirar proveito do pacote. Minha solução alternativa foi incluir condicionalmente a referência do pacote sempre que o projeto estiver no modo de depuração. referência de pacote condicional
Em seguida, usei uma diretiva #if pré-processador para executar condicionalmente o código que permite a compilação do razor runtime. diretiva pré-processador compilação em tempo de execução
Observação: pode ser necessário excluir sua pasta bin para ver as pastas removidas após uma compilação. Além disso, verifique se está construindo com a configuração correta da solução.
Consegui encontrar um problema no Github descrevendo esse cenário exato, mas infelizmente nunca foi resolvido. https://github.com/dotnet/extensions/issues/2247
fonte