Как стать автором
Обновить

Комментарии 23

Тоже хочу себе такую штуку! )
Зарелизю только если кто-нть упакует решение под SQL Server CE, сделает инсталлятор с автообновлением, и пофиксит код.
Ну за добавлением автоматически генерируемых врапперов на COM все равно придется лезть в Add reference :)

PS: на фоне остального этого выглядит как-то никак :)

bulbItems.Add(new RefBulbItem(
provider,
r.GetString(2).Trim(),
r.GetString(3).Trim(),
r.GetString(4).Trim()));
Так а что делать? Тут не воспользоваться ни Linq2SQL ни EF.
и тут:

if (parent == null || parent.GetType().Name != «ReferenceName» || parent.Parent == null
|| string.IsNullOrEmpty(parent.Parent.GetText()))
return false;
string s = parent.Parent.GetText();
if (string.IsNullOrEmpty(s))
return false;

Нижний if лишний ибо содержится в верхнем
Я конечно, вас уважаю и люблю почитать ваши статьи, но: если мне не изменяет память, в R# есть ф-ция для добавления сборок, автоматом, лучше бы add-in для студии сделали. Плюс я, конечно, всё понимаю, но за наличие var иногда готов «покусать» :).
в R# есть ф-ция для добавления сборок, автоматом

если бы она была в той форме, в которой я описал тут, я бы не писал этот плагин. насколько я помню, в R# есть автодобавление ссылок только при использовании методов LINQ – например пишу new[]{}.Where() и R# предлагает «Reference System.Core and import System.Linq»

Что касается var, этот конструкт очень полезен в случаях когда не знаешь тип возвращаемого значения. А я в чужих API плохо разбираюсь.
Буквально вчера R# предложил на ConfigurationManager «Reference and import System.Configuration»
Значит не только на LINQ влияет. Возможно ссылка была на эту сборку в другом проекте, вот R# ее и поймал. На самом деле я точно алгоритм не знаю. Иногда такая опция появляется, но редко.
Надо просто написать правильно класс из другой сборки.
Правда судя по всему только из подключенных проектов.

Ну а в 2010 студии сделали по умолчанию открытым окошко с проектами + асинхронная подгрузка всех остальных вкладок.
R# предлагает сделать только для сборок, на которые уже есть ссылки в solution
Лень — двигатель прогресса :)
кстати, в VS 2010 пофиксили баг с долгой загрузкой списка библиотек при добавлении референсов.
Ага, видел уже. В принципе проблема еще в том, что не все важное фигурирует в Add Reference, а добавлять ссылку 100 раз из одной и той же папочки надоедает.
Долго не мог понять что значит 2 в степени х :)
Такое веселое типографирование :)
реестре может, а не регистре?
Спасибо, исправил.
Вместо этого:

var element = GetSelectedElement(false);
if (element == null)
return false;
var parent = element.ToTreeNode().Parent;
if (parent == null || parent.GetType().Name != «ReferenceName» || parent.Parent == null
|| string.IsNullOrEmpty(parent.Parent.GetText()))
return false;
string s = parent.Parent.GetText();
if (string.IsNullOrEmpty(s))
return false;

Можно просто написать:

var element = GetSelectedElement(true);
if(element == null) return false;
var s = element.ShortName;

Но еще правильнее сделать так:

var und = GetSelectedElement(true); // проверяем что мы внутри using-директивы
if(und == null) return false;
if(und.ImportedNamespace != null) return false; // проверяем, что namesapce красный
var s = und. ImportedNamespaceReference .ShortName;

И потом, isAvailable должен быть быстрым. Поэтому код, который лезет в базу данных хорошо бы перенести в свойсво Items, тогда этот когда будет вызываться только если пользователь открывает меню по alt-enter.

И, кстати, можно все это сделать QuickFix-ом, потому что демон уже сам делает проверку всех ссылок, а ваш CA как раз должен возбуждаться только на ошибки:

[QuickFix]
class MyQF: IQuickFix
{
public MyQF(NotResolvedError error)
{
rn = error.Reference.GetElement() as IReferenceName;
// потом в IsAvailable проверить: rn.GetContainignElement(true) != null;
}


}
Вау, спасибо! А какой тип переменной und?
Сорри, разобрался. Просто хабр съел скобочки.

Кстати, насчет QuickFix — несогласен. :) Иногда пространство имен «разбито» на несколько сборок, и IQuickFix перестал бы мне давать возможность сделать ссылку на «составную часть» пространства имен.

Но как вариант учту, спасибо.
Вау, спасибо! А какой тип переменной und?
Упс, не туда запостил.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории