2015-10-14 2 views
1

При установке .NET Compiler Platform SDK вы получаете шаблоны Visual Studio для создания «Анализатора с кодом Fix (NuGet + VSIX)» и «Рефакторинг кода (VSIX)».Рефакторинг кода корабля Roslyn как пакет NuGet

Почему нет шаблона для отправки кода рефакторинга с помощью NuGet (например, «Рефакторинг кода (NuGet + VSIX)»)?
Можно ли добавить поставщика рефакторинга кода из пакета NuGet (путем создания пакета NuGet вручную)?
Не имеет ли смысл устанавливать поставщика рефакторинга кода для проекта на проект?

EDIT: Мой прецедент - это рефакторинг кода, который генерирует тип C# из нетипизированных данных (например, JSON). Это в основном то, что провайдеры типа F # (хотя они, конечно, гораздо более мощные). Это означает, что пользователь создает класс, как следующий

[JsonProvider("http://example.com/data.json")] 
public class ExampleData 
{ 
} 

и рефакторинг заполняет его свойства из данных образцов она извлекается из URL в атрибуте:

[JsonProvider("http://example.com/data.json")] 
public class ExampleData 
{ 
    public string Property1 { get; private set; } 
    public int Property2 { get; private set; } 

    public void Load(Uri uri) { ... } 
    public void FromData(string data) { ... } 
    ... 
} 

Причина я не» t хотите создать анализатор, потому что пользователь должен иметь возможность решить, когда нужно обновлять тип C#. Потому что я не знаю, когда изменяются данные, на которые указывает URL. И я не хочу раздражать пользователя с изящной линией, от которой она не может избавиться.

+0

Можете ли вы расширить свой пример? Вы уверены, что этот рефакторинг, который должен применяться только к некоторым проектам, на самом деле не является переопределением анализатора/кода? –

+0

@Damien_The_Unbeliever thx, я обновил свой вопрос. –

ответ

3

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

+0

Я вижу, спасибо. Существуют ли технические трудности? Анализаторы и Code Refactorings кажутся довольно похожими. –

+2

@JohannesEgger: Рефакторинг загружается в среду IDE как экспорт MEF, а MEF не позволяет динамически изменять составной график при открытии и закрытии проектов (поэтому вы должны перезапустить VS после установки расширения). – SLaks

+2

Анализаторы, напротив, загружаются с помощью специальной системы определения местоположения, встроенной в Roslyn, в частности, чтобы избежать этой проблемы (а также потому, что они используются основными компиляторами, которые не построены на MEF) – SLaks

Смежные вопросы