gpt4 book ai didi

wpf - UriFormatException : Invalid URI: Invalid port specified

转载 作者:行者123 更新时间:2023-12-02 06:19:51 24 4
gpt4 key购买 nike

下面用作 Uri 参数的程序集限定字符串在 XAML 中工作,但在代码中使用时会出现错误。

我尝试了各种 UriKind,结果都相同。我该如何解决这个问题?

[Test]
public void LargeImageSource_IsKnown()
{
var uri = new Uri(
"pack://application:,,,/" +
"MyAssembly.Core.Presentation.Wpf;component/" +
"Images/Delete.png", UriKind.RelativeOrAbsolute);

Assert.That(
_pickerActivityCollectionVm.DeleteActivityCommand.LargeImageSource,
Is.EqualTo(uri));
}

System.UriFormatException : Invalid URI: Invalid port specified.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri..ctor(String uriString, UriKind uriKind)

更新

根据 Thomas 的出色回答和我自己对可读性的评论,我最终在 BaseTestFixture 类中使用了以下内容。希望这对其他人有帮助。

    protected virtual void OnFixtureSetUp() {
// logging, other one time setup stuff...

const string scheme = "pack";
if (!UriParser.IsKnownScheme(scheme)) {
Assert.That(PackUriHelper.UriSchemePack, Is.EqualTo(scheme));
}
}

最佳答案

这是因为您在 pack:// 方案尚未注册时执行此代码。当您创建 Application 对象时会注册此方案。您可以在测试装置的设置中添加此代码:

[SetUp]
public void Setup()
{
if (!UriParser.IsKnownScheme("pack"))
new System.Windows.Application();
}
<小时/>

编辑:实际上,似乎 pack:// 方案已在 PackUriHelper 类的类型初始值设定项中注册(该类恰好由 Application 使用) 类)。因此,实际上您不需要创建 Application 的实例,只需访问 PackUriHelper 的静态成员即可确保类型初始值设定项已运行:

[SetUp]
public void Setup()
{
string s = System.IO.Packaging.PackUriHelper.UriSchemePack;
}

关于wpf - UriFormatException : Invalid URI: Invalid port specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com