CS0411: Аргументы типа для метода X не могут быть выведены из использования при сборке с TeamCity - PullRequest
3 голосов
/ 24 ноября 2010

Это длинный выстрел, но у меня закончились собственные идеи.

Недавно мои сборки TeamCity начали выдавать мне эту ошибку:

File.cs (строка, столбец): ошибка CS0411: Аргументы типа для метода «System.Linq.Enumerable.Select (System.Collections.Generic.IEnumerable, System.Func) 'не может быть выведено из Использование. Попробуйте указать тип аргументы явно.

Но в моем коде (или конфигурации проекта) нет ошибок.

Он прекрасно компилируется, если я делаю это либо из самого Visual Studio (2010), либо из MSBuild, как это делал бы агент построения. (Даже на сборке машины.)

Просто для справки, код выглядит примерно так:

 public ISet<Task> Tasks {get; set;}

 public IEnumerable<GradedTask> FindGradedTasks(){  
    return Tasks.Select(GetResult).Where(t=>t.HasResult).ToList(); // error   
 }

 public GradedTask GetResult(Task task) {  
    return new GradedTask(this, task);  
 }

Кто-нибудь видел что-нибудь подобное раньше? Что может быть причиной такого поведения?

1 Ответ

2 голосов
/ 30 ноября 2010

Похоже, вы используете ISet интерфейс, но он определен только в .NET 4.0

TeamCity абсолютно прав. Это VS ошибка. Мы были избиты этим. Случайно Reshaper ввести необязательный аргумент. И VS компилирует это просто отлично. Но TeamCity нет.

...