У меня проблема: мое решение содержит папку node_modules с некоторыми библиотеками с длинными путями.
Эти файлы не нужны в выходном каталоге, поскольку они нужны только на другом этапе сборки.
Когда я запускаю команду сборки из Visual Studio, сборка завершается с ошибкой MSB3027 и MSB3021, в которых говорится, что файлы не могут быть скопированы в выходной каталог. Исходный файл ошибки Microsoft.Common.CurrentVersion.targets.
Я исключил проблемную папку из решения разными способами:
<None Remove = "App_Plugins\**\node_modules\**" />
<ItemGroup>
<Content Remove = "App_Plugins\**\node_modules\**" />
<Compile Remove = "App_Plugins\**\node_modules\**" />
<EmbeddedResource Remove = "App_Plugins\**\node_modules\**" />
<None Remove = "App_Plugins\**\node_modules\**" />
</ItemGroup>
но Visual Studio все равно пытается их скопировать.
Ошибка:
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(5270,5): error MSB3027: Could not copy "C:\src\ORB\MyComp\src\Cms\Company.Cms\App_Plugins\welcome-dashboard\node_modules\@umbraco-cms\backoffice\dist-cms\packages\core\workspace\components\workspace-breadcrumb\workspace-variant-menu-breadcrumb\workspace-variant-menu-breadcrumb.kind.d.ts" to "bin\Debug\net8.0\App_Plugins\welcome-dashboard\node_modules\@umbraco-cms\backoffice\dist-cms\packages\core\workspace\components\workspace-breadcrumb\workspace-variant-menu-breadcrumb\workspace-variant-menu-breadcrumb.kind.d.ts". Exceeded retry count of 10. Failed.
Почему команда dotnet build работает? Разве MSBuild не используется в обоих случаях?
Как убедить Visual Studio оставить эти файлы?
Пробовали ли вы сопоставить диск с папкой, в которой находится решение, и работать оттуда, чтобы сократить путь?





Оказывается, Visual Studio использовала другой двоичный файл MSBuild в качестве команды dotnet build CLI.
PS C:\src> msbuild -version
Microsoft (R) Build Engine version 16.11.2+f32259642 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\src> dotnet msbuild -version
MSBuild version 17.10.4+10fbfbf2e for .NET
17.10.4.21802
После изменения переменной PATH на более новую версию двоичного файла MSBuild (C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\) сборка начала работать нормально.
Кроме того, вывод версии MSBuil теперь отличается, но не такой, как в команде CLI, но номер версии тот же.
PS C:\src> msbuild -version
MSBuild version 17.10.4+10fbfbf2e for .NET Framework
17.10.4.21802
PS C:\src> dotnet msbuild -version
MSBuild version 17.10.4+10fbfbf2e for .NET
17.10.4.21802
Обновлено:
Причина, по которой исключение <ItemGroup> не сработало, заключается в том, что в одном из указанных пакетов есть файл .targets, который копирует именно эту папку.
MSBuild пытается скопировать файл в каталог `\bin\Debug\net8.0`, где полный путь назначения составляет 265 символов.