我正在为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中删除此构造。单元测试。有人对我该如何解决有任何想法吗?