我有Win7 64位,Visual Studio 2010,並且我開發了一個Addin for Vs2010。顯示錯誤列表Visual Studio 2010中的Windows Addin
我嘗試在錯誤列表窗口VS.中顯示消息。
我用ErrorListProvider在OnBuildProjConfigDone建立事件外接
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);
}
}
ErrorListHelper
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。
有什麼建議嗎?
這很奇怪,我只是想發佈一個關於這個確切問題的問題(或者至少我認爲這是同樣的問題)。在我的例子中,'errorProvider.Tasks.Add'拋出了'InvalidOperationException',並帶有該錯誤消息。你可以在你的'GetService'方法中放置一個斷點,看看'Package.GetGlobalService'是否返回null? TA! – JohnL
只是我已經確認相同的代碼可以在VS2008和2010 VSPackage中使用。 (稍做修改是因爲Package已經有一個GetService方法)。 VS2010可能需要稍微不同的GetService實現。 – JohnL