在我的工作中,我们有一个自定义类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中会使它不再起作用,而这是唯一的变化。
1条答案
按热度按时间aemubtdh1#
我意识到我错误地删除了“AssemblyInfo.cs”文件,这导致库类“AmphiSys.WebBrowser.Abstractions”在移动到NuGet包时无法按预期工作