Многоплатформенный проект в стиле Xamarin.Forms SDK с XAML

Определили многоцелевой проект:

<Project Sdk="MSBuild.Sdk.Extras/2.0.54">

    <PropertyGroup>
        <TargetFrameworks>netstandard2.0;xamarinios10;monoandroid9.0;</TargetFrameworks>
        <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
        <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Xamarin.Forms" Version="4.6.0.800" />
        <PackageReference Include="Xamarin.Essentials" Version="1.5.3" />
        <Compile Include="**\Shared\*.cs" />
    </ItemGroup>

    <ItemGroup Condition=" $(TargetFramework.StartsWith('xamarinios')) ">
        <Compile Include="**\iOS\*.cs" />
    </ItemGroup>

    <ItemGroup Condition=" $(TargetFramework.StartsWith('monoandroid')) ">
        <Compile Include="**\Android\*.cs" />
    </ItemGroup>

    <ItemGroup>
        <EmbeddedResource Include="Shared\MyView.xaml">
          <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
        </EmbeddedResource>
    </ItemGroup>

</Project>

Итак, когда я делаю свой пользовательский компонент только в коде, все компилируется и работает хорошо, но я хотел бы разработать некоторые пользовательские элементы управления с использованием XAML. Но я получил ошибку неоднозначного вызова метода InitializeComponent() в объекте MyView. Как сделать правильную условную конфигурацию в .csproj, чтобы компилятор понимал файлы *.xaml и *.xaml.cs?


person Arvis    schedule 30.07.2020    source источник
comment
Какова ваша цель? Вы хотите создавать библиотеки для конкретных платформ?   -  person Mouse On Mars    schedule 30.07.2020
comment
Да, это настраиваемое компонентное решение для мультиплатформенного Nuget.   -  person Arvis    schedule 31.07.2020


Ответы (1)


Добавление этих свойств в общую ItemGroup решило проблему:

    <None Remove="**\Shared\*.xaml" />
    <Compile Include="**\Shared\*.xaml.cs" DependentUpon="%(Filename)" />
    <EmbeddedResource Include="**\Shared\*.xaml" Generator="MSBuild:UpdateDesignTimeXaml" />
person Arvis    schedule 30.07.2020
comment
Вы можете отметить этот ответ позже, что поможет большему количеству людей с такой же проблемой :). - person Jack Hua; 31.07.2020