Visual Studio DialogWindow的InitializeComponent()在Nunit测试中引发异常

时间:2018-10-09 19:08:28

标签: c# wpf nunit visual-studio-extensions visual-studio-sdk

我正在为Visual Studio开发一个扩展,该扩展使用Microsoft.VisualStudio.PlatformUI命名空间中的DialogWindow。我的窗口看起来像这样:

...
using Microsoft.VisualStudio.PlatformUI

namespace views
{
    public partial class MyDialog : DialogWindow
    {
        public MyDialog()
        {
            ...
            InitializeComponent();
        }
    }
    ...
}

我的xaml看起来像这样:

<platformUI:DialogWindow
        ...
        xmlns:platformUi="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.14.0"
        ...>
    ...
</platformUi:DialogWindow>

我的问题是在Nunit测试案例中构造此窗口时出现的。一旦调用InitializeComponent()就会引发此异常:

Message: System.Windows.Markup.XamlParseException : Provide value on 'System.Windows.Markup.StaticExtension' threw an exception.
  ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
  ----> System.NotSupportedException : Microsoft.VisualStudio.Shell.Interop.SVsSettingsManager

该窗口是使用Nunit设置方法构造的,但是只有第一个构造该窗口的方法会抛出此异常。我假设由于某种原因后续对InitializeComponent()的调用都不会通过,因此后续测试仍然可以通过。

我猜测引发此异常的原因是因为DialogWindow不能在Visual Studio的上下文之外使用,但我希望对此有解决方案,因为很难从Windows XP中删除此构造。单元测试。有人对我该如何解决有任何想法吗?

0 个答案:

没有答案