【问题标题】:Xamarin.Forms SDK-Style multiplatform project with XAML带有 XAML 的 Xamarin.Forms SDK 样式多平台项目
【发布时间】:2020-07-30 15:21:52
【问题描述】:

已定义多目标项目:

<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 开发一些自定义控件。 但是我在 MyView 对象中对方法 InitializeComponent() 进行了模棱两可的调用错误。 如何在 .csproj 中进行正确的条件配置,以便编译器理解 *.xaml 和 *.xaml.cs 文件?

【问题讨论】:

  • 你的目标是什么?您想创建特定于平台的库吗?
  • 是的,它是多平台 Nuget 的自定义组件解决方案。

标签: xamarin.forms csproj multitargeting


【解决方案1】:

将这些属性添加到 common ItemGroup 解决了这个问题:

    <None Remove="**\Shared\*.xaml" />
    <Compile Include="**\Shared\*.xaml.cs" DependentUpon="%(Filename)" />
    <EmbeddedResource Include="**\Shared\*.xaml" Generator="MSBuild:UpdateDesignTimeXaml" />

【讨论】:

  • 您可以稍后标记此答案,这将帮助更多有相同问题的人:)。
猜你喜欢
  • 1970-01-01
  • 2016-09-11
  • 2021-12-03
  • 2018-05-28
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 2023-03-14
相关资源
最近更新 更多