MSBuild выводит все файлы в верхнем регистре

Мы используем Azure Devops для создания наших проектов .NET и задачи Visual Studio build. Наш сервер сборки решил начать выводить все файлы в верхнем регистре. Это приводит к последующим сбоям в наших конвейерах сборки и выпуска.

Я могу воспроизвести это поведение на нашем сервере сборки, используя следующую команду:

MSBuild.exe OurSolution.sln /p:Configuration=Release /p:Platform = "Any CPU"

Каждый файл, выводимый в папку \bin, пишется ПРОПИСНЫМИ РЕГИСТРАМИ. В файлах .csproj нет ничего подозрительного, и это происходит во всех решениях и проектах, в которых несколько дней назад не было этой проблемы.

В качестве примечания я попытался обновить агент сборки Azure Devops и инструменты сборки Visual Studio 2022, установленные на сервере.

Редактировать: Журнал MSBuild показывает правильный регистр в выходных файлах. В папке \obj также содержатся файлы с правильным регистром. Таким образом, похоже, что переименование в верхнем регистре происходит при копировании файлов из папки \obj в папку \bin.

Попробуйте msbuild.exe OurSolution.sln /p:Configuration=Release /p:Platform = "Any CPU" /verbosity:diagnostic получить полную информацию о том, что там делает msbuild (если проблема может быть в msbuild или каком-то целевом файле)

Marcus.D 08.05.2024 16:07

Я попытался с помощью нового консольного приложения сделать журнал управляемым. MSBuild отображает выходные файлы в правильном регистре, однако выходные данные по-прежнему переименовываются в верхний регистр. Интересно, что свойства файла показывают исходное имя файла в правильном регистре.

Rob Kite 08.05.2024 18:01

Если в журнале MSBuild указан правильный регистр, возможно, это не MSBuild.

Jonathan Dodds 08.05.2024 20:05

Согласен, но я в недоумении, что еще может быть причиной этого

Rob Kite 08.05.2024 23:06

Не могли бы вы попробовать запустить тот же код на агенте, размещенном Microsoft, чтобы проверить, сохраняется ли проблема? Это может помочь сузить проблему. Кроме того, вы можете проверить, установила ли ваша VS функцию свойства, чтобы преобразовать выходной файл в верхний регистр. Пожалуйста, обратитесь к этому вопросу.

Miao Tian-MSFT 09.05.2024 09:07

Эта проблема не возникает ни на агенте, размещенном Microsoft, ни на моем компьютере, поэтому она, похоже, специфична для этого сервера сборки. Я не вижу никаких функций свойств, но теперь я также попробовал удалить все инструменты сборки VS и переустановить Visual Studio на сервере — все в порядке, если я собираю через VS, но проблема сохраняется, если я использую MSBuild напрямую («C: \Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe")

Rob Kite 09.05.2024 12:26

Кажется, на вашем сервере возникла какая-то проблема. Если есть возможность, можно попробовать перенастроить сервер. Кстати, вы также можете попробовать задачу DotNetCoreCLI@2 вместо задачи сборки Visual Studio, чтобы посмотреть, может ли это быть решением проблемы.

Miao Tian-MSFT 10.05.2024 08:44

Привет @RobKite, могу ли я узнать, нашли ли вы причину проблемы?

Miao Tian-MSFT 16.05.2024 10:37

К сожалению, пока нет. Задача DotNetCoreCLI@2 — это обходной путь для сборки решения, однако я все еще обнаружил, что наши пакеты NuGet (созданные как часть этой задачи) изменяются на верхний регистр при копировании в промежуточный каталог артефакта перед их отправкой в ​​наш Сервер NuGet (процесс выпуска в настоящее время завершается неудачей, поскольку поиск файлов .nupkg чувствителен к регистру). Мы находимся в процессе настройки альтернативной машины с агентом сборки, поскольку она действительно зависит от машины, но нам не удалось решить проблему напрямую.

Rob Kite 16.05.2024 11:31

Спасибо за ваше обновление. Похоже, проблема возникает при копировании файлов в другую папку. Поскольку причина проблемы еще не найдена, и проблема возникает только на этом сервере сборки, перенастройка нового сервера сборки действительно является лучшим выбором.

Miao Tian-MSFT 17.05.2024 07:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
131
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно проведенному вами устранению неполадок, мы можем резюмировать, что проблема возникает при копировании файлов в другую папку. И проблема не связана с Azure DevOps.

Задача DotNetCoreCLI@2 служит обходным путем для создания решения, но по-прежнему возникают проблемы с изменением пакетов NuGet на верхний регистр при копировании в промежуточный каталог артефакта.

Поскольку проблема возникает только на этом сервере сборки, перенастройка нового сервера сборки действительно является лучшим выбором.

к сожалению, в этом случае единственное решение, которое мы смогли найти, - это переконфигурировать новый сервер, надеясь, что это больше не повторится!

Rob Kite 11.06.2024 15:59

Другие вопросы по теме