私は Win7 64 ビット、Visual Studio 2010 を使用しており、Vs2010 用のアドインを開発しました。
エラーリストWindows VSでメッセージを表示してみます。
アドインの OnBuildProjConfigDone ビルド イベントで ErrorListProvider を使用します
this._buildEvents.OnBuildProjConfigDone += new _dispBuildEvents_OnBuildProjConfigDoneEventHandler(_buildEvents_OnBuildProjConfigDone);
このエラーが発生します InvalidOperationException
この機能を使用するには、サービス 'Microsoft.VisualStudio.Shell.Interop.IVsTaskList' をインストールする必要があります。このサービスが利用可能であることを確認してください。
接続
public partial class Connect : IDTExtensibility2, IDTCommandTarget, System.Windows.Forms.IWin32Window, IOleCommandTarget
OnBuildProjConfigDone
void _buildEvents_OnBuildProjConfigDone(string project, string projectConfig, string platform, string solutionConfig, bool success)
{
// Omitted
if (!resul)
{
project.DTE.ExecuteCommand("Build.Cancel");
var errorListHelper = new ErrorListHelper();
ErrorListProvider errorProvider = errorListHelper.GetErrorListProvider();
var newError = new ErrorTask();
newError.ErrorCategory = TaskErrorCategory.Message;
newError.Category = TaskCategory.BuildCompile;
newError.Text = "Cualquier mensaje de error aqui";
errorProvider.Tasks.Add(newError);
}
}
エラーリストヘルパー
public class ErrorListHelper : System.IServiceProvider
{
public ErrorListProvider GetErrorListProvider()
{
ErrorListProvider provider = new ErrorListProvider(this);
provider.ProviderName = "Provider";
provider.ProviderGuid = System.Guid.NewGuid();
return provider;
}
public object GetService(Type serviceType)
{
return Package.GetGlobalService(serviceType);
}
}
@JohnL による提案: GetService メソッドにブレークポイントを設定しましたが、Package.GetGlobalService は null を返しています。
助言がありますか?