Начиная с Xcode 4.2 и далее, вы можете использовать еще одну опцию. Просто нажмите один раз на имя файла .proj вверху на левой панели навигации, и оно будет доступно для переименования. Переименуйте его, и весь проект переименуется, а не только цель.
Некоторое время назад я отправил отчет об ошибке в MS Connect . Сегодня утром я получил ответ:
Спасибо за отчет об ошибке в Visual Studio 2008!
Как вы указываете в связанной публикации из блога Эрика Липперта, у нас есть ограничения на нашу способность делать вывод типов для таких вложенных лямбда-выражений. выражения в разумные сроки. Тем не менее, мы могли бы, конечно, попытаться ограничить такой вывод по времени или установить жесткое ограничение на вложение лямбда-выражений, чтобы предотвратить подобные проблемы. К сожалению, мы начинаем ограничивать то, что мы можем исправить в Visual Studio 2010, и мы не сможем применить такие ограничения в этом выпуске.
Мы обязательно учтем эту проблему при планировании будущих выпусков. !
Алекс Тернер
Менеджер программы
Компилятор Visual C #
и
Обновлен следующий элемент отзыва, отправленный вами на Microsoft Connect: Продукт / Технология - Visual Studio и .NET Framework - Идентификатор отзыва - 476133 Заголовок отзыва - Вложенный Linq Min () дает сбой в Visual Studio 2008 IDE. Изменены следующие поля или значения: Состояние поля изменено с [Активно] на [Решено]
Разрешение поля изменено с [Нет] на [Не исправлять]
Мне удалось воспроизвести это при установке Visual Studio 2008. Похоже, языковая служба заходит в бесконечный цикл и в конечном итоге исчерпывает память. Не могли бы вы сообщить об ошибке на сайте подключения?
Connect: http://connect.microsoft.com
Если вы все же сообщаете об ошибке, пожалуйста, добавьте комментарий к моему ответу с номером ошибки.
Вывод типа для вложенных лямбда-выражений занимает экспоненциальное время . Поэтому неудивительно, что компилятор замедляется, когда вы делаете слишком много вложений.
Однако в идеале IDE могла бы обрабатывать такие случаи и прерывать вывод типа, если это занимает слишком много времени.
Вам даже не нужно заходить так далеко. VS завис, когда я набирал часть d
вложенного выражения LINQ.
Подумал, что стоит отметить, что он также "зависает" VS 2010, и более того, почти вся моя система зависает!
Использование базовой рекурсии вместо попытки «угадать» глубину, увеличение сложности на каждом уровне
public static class TestExt
{
public static int Min(this Test test)
{
return Math.Min(test.val, test.Tests.Min(x => x.Min()));
}
}
public class Test
{
public int val;
public List<Test> Tests;
}
public class LinqTest
{
public void GetMin()
{
Test t = new Test();
var min = t.Min();
}
}
Как указал Райан Версо, вы также можете сделать это без таких методов расширения:
public class Test
{
public int val;
public List<Test> Tests;
public int Min()
{
return Math.Min(val,Tests.Min(x => x.Min()));
}
}
Думаю, я только что испытал нечто подобное. Я просматривал свой код и использовал var
в строках, где я объявлял и инициализировал переменные для new SomeClass ()
. Мой код скомпилирован. Когда я пытался запустить какой-либо модульный тест Visual Studio 2008, Visual Studio вылетала с CLR20r3 в качестве имени / типа ошибки. После отмены всех моих изменений var
тесты проходят нормально.