3

私の 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

{「'FooNamespace' は不明な名前空間であるため、タイプ 'Class1' は見つかりませんでした。[行: 8 位置: 6]」}

<cl:Class1 x:Name="foo"/>生成されたコードで Class1 を参照するために、コントロールに名前を割り当てようとしました。同じXamlParseException

の AppManifest.xml を修正しPhoneApp1ます。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>

それはタイプミスではありません。生成された AppManifest.xml でTWICE<AssemblyPart x:Name="PhoneClassLibrary1"が指定されている場合にのみ、アプリケーションを実行できます


私は何か間違ったことをしていますか?私は、複数のソリューションで再利用されるコントロール プロジェクトに取り組んでおり、多数のプロジェクトすべてで AppManifset.xml を変更したくありません。

AppManifset.xmlXmlnsDefinitionを変更しなくても動作しますか?

4

1 に答える 1