C#WPF UserControl的自定义抽象层在移动到NuGet-Package时使其不再起作用

dnph8jn4  于 2023-05-08  发布在  C#
关注(0)|答案(1)|浏览(95)

在我的工作中,我们有一个自定义类public partial class ExtendedWebBrowser : UserControl, IDisposable。此类具有以下XAML

<UserControl x:Class="Judex.AmPHI.MobileClient.Components.View.xaml.ExtendedWebBrowser"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:helper="clr-namespace:Judex.AmPHI.MobileClient.Components.View.Helpers"
             xmlns:AmphiSysWebBrowser="clr-namespace:AmphiSys.WebBrowser.Abstractions;assembly=AmphiSys.WebBrowser.Abstractions"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800"
             x:Name="ExtendedWebBrowserControl">
    <AmphiSysWebBrowser:WebBrowser x:FieldModifier="public" x:Name="WebBrowserControl" 
                helper:WebBrowserHelper.Source="{Binding ElementName=ExtendedWebBrowserControl, Path=Source}" 
                helper:WebBrowserHelper.SuppressScriptErrors="{Binding ElementName=ExtendedWebBrowserControl, Path=SuppressScriptErrors}"
                helper:WebBrowserHelper.ShouldAlwaysOpenLinkInCurrentWindow="{Binding ElementName=ExtendedWebBrowserControl, Path=ShouldAlwaysOpenLinkInCurrentWindow}" />
</UserControl>

正如我们在XAML中看到的,我们为Microsoft创建的WebBrowser组件使用了一个自定义抽象类(AmphiSys.WebBrowser.Abstractions)。这个类看起来像:

[ContentProperty(nameof(WebBrowserControl))]
public sealed class WebBrowser : Control, IDisposable
{
    public static Func<IWebBrowser> WebBrowserControlInitializer;

    public static readonly DependencyProperty WebBrowserControlProperty = DependencyProperty.Register(nameof(WebBrowserControl),
                                                                                                      typeof(IWebBrowser),
                                                                                                      typeof(WebBrowser),
                                                                                                      new PropertyMetadata(default(IWebBrowser)));

    public IWebBrowser WebBrowserControl
    {
        get
        {
            return (IWebBrowser)GetValue(WebBrowserControlProperty);
        }
        set
        {
            SetValue(WebBrowserControlProperty, value);
        }
    }

    public static readonly DependencyProperty AddressProperty = DependencyProperty.Register(nameof(Address),
                                                                                            typeof(string),
                                                                                            typeof(WebBrowser),
                                                                                            new PropertyMetadata(default(string), PropertyChangedCallback));

    private static void PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var webBrowser = (WebBrowser)d;
        webBrowser.WebBrowserControl.Address = e.NewValue.ToString();
    }

    public void Dispose()
    {
        WebBrowserControl.Dispose();
    }

    public string Address
    {
        get
        {
            return (string)GetValue(AddressProperty);
        }
        set
        {
            SetValue(AddressProperty, value);
        }
    }

    static WebBrowser()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(WebBrowser), new FrameworkPropertyMetadata(typeof(WebBrowser)));
    }

    public WebBrowser()
    {
        WebBrowserControl = WebBrowserControlInitializer();
    }
}

当这段代码捆绑在同一个项目中时,意味着我们有一个'AmphiSys.WebBrowser.Abstractions'的库项目,WebBrowser组件就像它应该的那样工作。但是,当这个项目被移动到一个NuGet包的可重用性,Web浏览器现在只显示一个黑屏。没有抛出任何异常,我也无法在任何日志文件中找到任何有用的信息。在看了几个小时之后,我现在迷路了,因为我似乎无法理解为什么将类库项目移动到NuGet-Package中会使它不再起作用,而这是唯一的变化。

aemubtdh

aemubtdh1#

我意识到我错误地删除了“AssemblyInfo.cs”文件,这导致库类“AmphiSys.WebBrowser.Abstractions”在移动到NuGet包时无法按预期工作

相关问题