Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O SDK do .NET gera um novo erro (NETSDK1152) nos casos em que arquivos de caminhos de origem diferentes seriam copiados para o mesmo caminho de arquivo na saída de publicação. Isso pode acontecer quando um projeto e suas referências de projeto incluem um arquivo com o mesmo nome incluído na saída de publicação.
Versão introduzida
SDK do .NET 6.0.100
Comportamento antigo
Ambos os arquivos foram copiados para o mesmo destino. O segundo arquivo a ser copiado substituiu o primeiro arquivo e qual arquivo "ganhou" foi principalmente arbitrário.
Em alguns casos, a compilação falhou. Por exemplo, ao tentar criar um aplicativo de arquivo único, o empacotador falhou com um ArgumentException, conforme mostrado na seguinte saída de build:
C:\Program Files\dotnet\sdk\5.0.403\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(962,5): error MSB4018: The "GenerateBundle" task failed unexpectedly. [C:\repro\repro.csproj]
C:\Program Files\dotnet\sdk\5.0.403\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(962,5): error MSB4018: System.ArgumentException: Invalid input specification: Found multiple entries with the same BundleRelativePath [C:\repro\repro.csproj]
C:\Program Files\dotnet\sdk\5.0.403\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(962,5): error MSB4018: at Microsoft.NET.HostModel.Bundle.Bundler.GenerateBundle(IReadOnlyList`1 fileSpecs) [C:\repro\repro.csproj]
Novo comportamento
A partir do .NET 6, o MSBuild remove arquivos duplicados que são copiados para a pasta de publicação se a origem e o destino forem iguais. Se houver duplicatas restantes, um NETSDK1152 erro será gerado e listará os arquivos duplicados.
Motivo da alteração
Arquivos duplicados nos resultados de publicação às vezes causavam quebras de compilação ou comportamento imprevisível.
Ação recomendada
Idealmente, você deve atualizar seu projeto para evitar situações em que vários arquivos com o mesmo nome sejam copiados para a saída de publicação. A mensagem de erro inclui o nome do arquivo duplicado. Algumas causas para arquivos duplicados incluem:
- Um projeto do ASP.NET Core que faz referência a um serviço Web do ASP.NET Core e cada um tem seu próprio arquivo appsettings.json .
- Um item de projeto em que
CopyToOutputDirectoryé desnecessariamente definido comoAlways.
Os arquivos de log binário podem ser úteis para localizar a causa dos arquivos duplicados.
Como alternativa, você pode definir a propriedade ErrorOnDuplicatePublishOutputFiles como
false.
APIs afetadas
Não aplicável