Внезапное изменение метода обратного расширения, вызывающее ошибки сборки.C#

Место общения программистов C#
Anonymous
Внезапное изменение метода обратного расширения, вызывающее ошибки сборки.

Сообщение Anonymous »

У меня есть следующий код (урезанный до минимума)

Код: Выделить всё

using System;
using System.Linq;

namespace Test;

public class TestSomething
{
public byte[] DoAThing(byte[] input)
{
return input.Reverse().ToArray();
}
}
В реальном коде есть что-то полезное, но это просто для того, чтобы показать проблему.
В прошлом месяце это работало отлично. Сегодня на нашем сервере git было запущено автоматическое сканирование кода, и при вызове Reverse возникла ошибка компиляции, поскольку, очевидно, Reverse теперь недействителен?

ошибка CS0023: Оператор '.' нельзя применить к операнду типа void

Обратите внимание, что код не изменился. Эта ветка заблокирована в соответствии с политикой компании (как только код поступает в производство, мы создаем ветку, блокируем ее и запускаем периодическое сканирование кода, который, как мы знаем, был запущен в производство).
Когда я собираю его локально, он компилируется нормально. Reverse имеет подпись System.Collections.Generic.IEnumerable System.Collections.Generic.IEnumerable.Reverse()
Таким образом, это метод расширения IEnumerable, который возвращает IEnumerable, по крайней мере, на моей машине.
Этот проект строится как .NET. 4.8 и .NET 8 и получает одну и ту же ошибку на сервере сборки в обеих платформах.
Я обнаружил, что если я добавлю using static System.Linq.Enumerable; в раздел using вверху, он отлично компилируется на сервере сборки, но это будет ветка от заблокированной ветки. Если бы я мог исправить это с помощью запроса на включение, я бы это сделал, но это запрещено.
Итак, вопрос: что могло измениться внешне в моем репозитории? Есть ли в другом пространстве имен другой метод расширения, который выполняет обратное действие на месте и каким-то образом находит его? Есть ли какая-то конфигурация вне моего репозитория, которая принудительно использует операторы по умолчанию?

Вернуться в «C#»