Generowanie błędu dla zduplikowanych plików w danych wyjściowych publikowania
Zestaw .NET SDK generuje nowy błąd (NETSDK1152
) w przypadkach, gdy pliki z różnych ścieżek źródłowych zostaną skopiowane do tej samej ścieżki pliku w danych wyjściowych publikowania. Może się tak zdarzyć, gdy projekt i jego odwołania do projektu zawierają plik o takiej samej nazwie, która jest uwzględniona w danych wyjściowych publikowania.
Wprowadzona wersja
Zestaw .NET SDK 6.0.100
Stare zachowanie
Oba pliki zostały skopiowane do tego samego miejsca docelowego. Drugi plik, który ma zostać skopiowany, zastępuje pierwszy plik i który plik "won" był w większości dowolny.
W niektórych przypadkach kompilacja nie powiodła się. Na przykład podczas próby utworzenia aplikacji z jednym plikiem pakiet zakończył się niepowodzeniem z elementem ArgumentException, jak pokazano w następujących danych wyjściowych kompilacji:
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]
Nowe zachowanie
Począwszy od platformy .NET 6, program MSBuild usuwa zduplikowane pliki, które są kopiowane do folderu publikowania, jeśli zarówno źródło, jak i miejsce docelowe są takie same. Jeśli istnieją pozostałe duplikaty, NETSDK1152
jest generowany błąd i wyświetla listę plików, które są zduplikowane.
Przyczyna wprowadzenia zmiany
Zduplikowane pliki w danych wyjściowych publikowania czasami spowodowały awarie kompilacji lub nieprzewidywalne zachowanie.
Zalecana akcja
W idealnym przypadku należy zaktualizować projekt, aby uniknąć sytuacji, w których wiele plików o tej samej nazwie jest kopiowanych do danych wyjściowych publikowania. Komunikat o błędzie zawiera nazwę zduplikowanego pliku. Oto niektóre przyczyny zduplikowanych plików:
- Projekt ASP.NET Core, który odwołuje się do usługi internetowej ASP.NET Core, a każdy z nich ma własny plik appsettings.json .
- Element projektu, w którym
CopyToOutputDirectory
jest niepotrzebnie ustawiony naAlways
wartość .
Pliki dziennika binarnego mogą być przydatne do znalezienia przyczyny zduplikowanych plików.
Alternatywnie można ustawić właściwość ErrorOnDuplicatePublishOutputFiles na
false
wartość .
Dotyczy interfejsów API
Nie dotyczy