Я пытаюсь добавить цвет к выходным данным сборки Visual Studio. Итак, я пытаюсь получить классификатор IClassifierProvider. Но GetClassifier () не вызывается. В чем может быть проблема? Пример исходного кода приведен ниже. Когда я пытаюсь использовать расширение VSColorOutput, оно запускается. Скажите, пожалуйста, что мне не хватает?
[ContentType("output")]
[Export(typeof(IClassifierProvider))]
public class OutputClassifierProvider : IClassifierProvider
{
[Import]
internal IClassificationTypeRegistryService ClassificationRegistry;
[Import]
internal SVsServiceProvider ServiceProvider;
public static OutputClassifier OutputClassifier { get; private set; }
public IClassifier GetClassifier(ITextBuffer buffer)
{
MessageBox.Show("asd");
try
{
if (OutputClassifier == null)
{
OutputClassifier = new OutputClassifier();
}
}
catch (Exception ex)
{
throw;
}
return OutputClassifier;
}
}
public class OutputClassifier: IClassifier
{
public event EventHandler<ClassificationChangedEventArgs> ClassificationChanged;
public IList<ClassificationSpan> GetClassificationSpans(SnapshotSpan span)
{
return new List<ClassificationSpan>();
}
}
Vsix манифест
<?xml version="1.0" encoding="utf-8"?>
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
<Identifier Id="3ac9d6e9-a3dc-4a27-a048-f4bb7fe5889b">
<Name>Sample</Name>
<Author>Company</Author>
<Version>1.0</Version>
<Description xml:space="preserve">It conatains set of features which will ease the life of Atmel Studio user.</Description>
<Locale>1033</Locale>
<InstalledByMsi>false</InstalledByMsi>
<SupportedProducts>
<VisualStudio Version="10.0">
<Edition>Pro</Edition>
</VisualStudio>
</SupportedProducts>
<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.0" />
</Identifier>
<References>
<Reference Id="Microsoft.VisualStudio.MPF" MinVersion="10.0">
<Name>Visual Studio MPF</Name>
</Reference>
</References>
<Content>
<VsPackage>XFeatures.pkgdef</VsPackage>
</Content>
</Vsix>
1 ответ
Спасибо, Джейсон Малиновски. Я проанализировал код манифеста и обнаружил, что там отсутствует контент MEF. После добавления MEF в тег содержимого он теперь работает.
<Content>
<VsPackage>|%CurrentProject%;PkgdefProjectOutputGroup|</VsPackage>
<MefComponent>|%CurrentProject%|</MefComponent>
</Content>
Похожие вопросы
Новые вопросы
visual-studio-2010
Visual Studio 2010 - это интегрированная среда разработки (IDE) от Microsoft. Используйте этот тег только для вопросов, возникающих в связи с использованием этой конкретной версии Visual Studio, а не для какого-либо кода, только что написанного в нем.