C# Uri为WPF样式的Uri抛出无效端口

C# Uri为WPF样式的Uri抛出无效端口,c#,wpf,uri,C#,Wpf,Uri,我正在尝试用wpf样式的uri在代码中初始化BitmapImage实例 BitmapImage icon = new BitmapImage(new Uri("pack://application:,,,/MyAssembly;component/Icons/someIcon.ico", UriKind.Absolute)); 但问题是newURI抛出System.UriFormatException 无效URI:指定的端口无效 我做错了什么?这里的问题是,您试图在一个不是普通WPF应用程序的

我正在尝试用wpf样式的uri在代码中初始化BitmapImage实例

BitmapImage icon = new BitmapImage(new Uri("pack://application:,,,/MyAssembly;component/Icons/someIcon.ico", UriKind.Absolute));
但问题是
newURI
抛出
System.UriFormatException

无效URI:指定的端口无效


我做错了什么?

这里的问题是,您试图在一个不是普通WPF应用程序的应用程序中创建
Uri
<代码>Uri具有许多内置的“方案”,这些方案已在注册

UriParser类使您能够为新的URI方案创建解析器。您可以完整地编写这些解析器,也可以从已知的模式(HTTP、FTP和其他基于网络协议的模式)派生解析器

创建
System.Windows.Application
时,WPF会为“pack”方案添加一个解析器,这是WPF应用程序的正常入口点。在您的情况下,您只需在合成根目录中添加对此的调用:

new System.Windows.Application();

这里的问题是,您试图在一个不是普通WPF应用程序的应用程序中创建
Uri
<代码>Uri具有许多内置的“方案”,这些方案已在注册

UriParser类使您能够为新的URI方案创建解析器。您可以完整地编写这些解析器,也可以从已知的模式(HTTP、FTP和其他基于网络协议的模式)派生解析器

创建
System.Windows.Application
时,WPF会为“pack”方案添加一个解析器,这是WPF应用程序的正常入口点。在您的情况下,您只需在合成根目录中添加对此的调用:

new System.Windows.Application();

我们可以使用以下代码

UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1);

在尝试创建uri之前。

我们可以使用以下代码

UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1);

在尝试创建uri之前。

您在运行WPF应用程序时是否确实在执行此操作?如果“pack”方案未注册,并且在创建
System.Windows.Application
后立即注册,您将收到此消息。@CharlesMager在Winform托管的WPF应用程序上运行。我猜这就是为什么要添加
新的System.Windows.Application()
在你的
程序.Main
方法中(你初始化WinForms应用程序的地方)。@CharlesMager就像一个符咒。键入一个答案,我会非常高兴地接受它。您在运行WPF应用程序时真的这样做了吗?如果“pack”方案未注册,并且在创建
System.Windows.Application
后立即注册,您将收到此消息。@CharlesMager在Winform托管的WPF应用程序上运行。我猜这就是为什么要添加
新的System.Windows.Application()
在你的
程序.Main
方法中(你初始化WinForms应用程序的地方)。@CharlesMager就像一个符咒。键入一个答案,我将非常乐意接受它