gpt4 book ai didi

windows-phone-7 - 无法使用 xmlns :cl ="FooNamespace" in XAML

转载 作者:行者123 更新时间:2023-12-04 07:18:29 24 4
gpt4 key购买 nike

在我的 WP7 解决方案中,我有一个 PhoneClassLibrary1部件。在它的 AssemblyInfo.cs 中我有

[assembly: XmlnsPrefix("FooNamespace", "cl")]
[assembly: XmlnsDefinition("FooNamespace", "PhoneClassLibrary1")]

我在 PhoneClassLibrary1 中有一个简单的控件

using System.Windows.Controls;

namespace PhoneClassLibrary1
{
public class Class1 : Control {}
}

PhoneApp1同一解决方案中的项目的主页为

<phone:PhoneApplicationPage 
x:Class="PhoneApp1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:cl="FooNamespace">

<cl:Class1/>

</phone:PhoneApplicationPage>

编译得很好。但是当运行时,我得到 XamlParseException

{"The type 'Class1' was not found because 'FooNamespace' is an unknown namespace. [Line: 8 Position: 6]"}

我尝试为控件分配名称 <cl:Class1 x:Name="foo"/>在生成的代码中引用 Class1。同XamlParseException .

我在PhoneApp1中修改AppManifest.xml .请注意 AssemblyPart标签。

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Deployment.Parts>
<AssemblyPart x:Name="PhoneClassLibrary1" Source="PhoneClassLibrary1.dll" />
</Deployment.Parts>
</Deployment>

在该应用程序成功启动之后。


如果我检查 PhoneApp1.xap(这是一个部署包),我可以看到以下生成的 AppManifest.xml

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="PhoneApp1" EntryPointType="PhoneApp1.App" RuntimeVersion="4.7.50308.0">
<Deployment.Parts>
<AssemblyPart x:Name="PhoneApp1" Source="PhoneApp1.dll" />
<AssemblyPart x:Name="PhoneClassLibrary1" Source="PhoneClassLibrary1.dll" />
<AssemblyPart x:Name="PhoneClassLibrary1" Source="PhoneClassLibrary1.dll" />
</Deployment.Parts>
</Deployment>

这不是打字错误。应用程序只有在 <AssemblyPart x:Name="PhoneClassLibrary1" 时才能运行在生成的 AppManifest.xml 中指定了 TWICE


我做错了什么吗?我从事一个在多个解决方案中重复使用的控制项目,并且不想在所有这些众多项目中修改 AppManifset.xml。

XmlnsDefinition不修改 AppManifset.xml 也能工作吗?

最佳答案

我对 XmlnsPrefixAttribute 的假设是,它为工具提供了优先使用的提示,并且是可选的。 XAML 中的有效 xmlns 定义是:-xmlns:cl="clr-namespace:FooNamespace;Assembly=PhoneClassLibrary1"

clr-namespace 前缀用于创建包含命名空间的有效 Uri 和包含所需类型的程序集。

关于windows-phone-7 - 无法使用 xmlns :cl ="FooNamespace" in XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14393408/

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