Konfigurace cílení na více verzí
Aplikace .NET Multi-Platform App UI (.NET MAUI) používají k cílení na více platforem z jednoho projektu více platforem.
Projekt aplikace .NET MAUI obsahuje složku Platformy s každou podřízenou složkou představující platformu, na kterou může .NET MAUI cílit:
Složky pro každou cílovou platformu obsahují kód specifický pro platformu, který spouští aplikaci na každé platformě a veškerý další kód platformy, který přidáte. V době sestavení systém sestavení zahrnuje pouze kód z každé složky při sestavování pro danou konkrétní platformu. Když například sestavíte soubory pro Android soubory ve složce Platformy>Android budou součástí balíčku aplikace, ale soubory v jiných složkách Platformy nebudou.
Kromě tohoto výchozího přístupu pro více cílení můžou být aplikace .NET MAUI také více cílené na základě vlastních kritérií názvu souboru a složky. To umožňuje strukturovat projekt aplikace .NET MAUI tak, abyste nemuseli kód platformy umístit do podsložek složky Platformy .
Konfigurace cílení na více souborů na základě názvu souboru
Standardní model cílení na více platforem je zahrnout platformu jako rozšíření do názvu souboru kódu platformy. Například MyService.Android. cs by představovala Android konkrétní implementaci MyService třídy. Systém sestavení lze nakonfigurovat tak, aby používal tento vzor přidáním následujícího XML do souboru aplikace .NET MAUI (.csproj) jako podřízené <Project> položky uzlu:
<ItemGroup Condition="$(TargetFramework.StartsWith('net6.0-android')) != true">
<Compile Remove="**\**\*.Android.cs" />
<None Include="**\**\*.Android.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net6.0-ios')) != true AND $(TargetFramework.StartsWith('net6.0-maccatalyst')) != true">
<Compile Remove="**\**\*.iOS.cs" />
<None Include="**\**\*.iOS.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('-windows')) != true ">
<Compile Remove="**\*.Windows.cs" />
<None Include="**\*.Windows.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
Tento XML nakonfiguruje systém sestavení tak, aby odebral vzory názvů souborů založených na platformě za určitých podmínek:
- Nekopilujte kód jazyka C#, jehož název souboru končí příponou .Android. cs, pokud nestavíte Android.
- Nekopilujte kód jazyka C#, jehož název souboru končí příponou .iOS. cs, pokud nestavíte pro iOS nebo MacCatalyst.
- Nekopilujte kód jazyka C#, jehož název souboru končí příponou .Windows. cs, pokud nestavíte Windows.
Důležité
Cílení na více souborů je možné kombinovat s cílením na více složek. Další informace najdete v tématu Kombinování názvů souborů a složek s více cíleními.
Konfigurace cílení na více složek
Dalším standardním vzorem cílení na více platforem je zahrnout platformu jako název složky. Například složka s názvem Android by obsahovala Android specifický kód. Systém sestavení lze nakonfigurovat tak, aby používal tento vzor přidáním následujícího XML do souboru aplikace .NET MAUI (.csproj) jako podřízené <Project> položky uzlu:
<ItemGroup Condition="$(TargetFramework.StartsWith('net6.0-android')) != true">
<Compile Remove="**\Android\**\*.cs" />
<None Include="**\Android\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net6.0-ios')) != true AND $(TargetFramework.StartsWith('net6.0-maccatalyst')) != true">
<Compile Remove="**\iOS\**\*.cs" />
<None Include="**\iOS\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('-windows')) != true ">
<Compile Remove="**\Windows\**\*.cs" />
<None Include="**\Windows\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
Tento XML nakonfiguruje systém sestavení tak, aby odebral vzory složek založených na platformě za určitých podmínek:
- Nekompilujte kód jazyka C#, který je umístěný ve složce Android, ani podsložku složky Android, pokud nestavíte pro Android.
- Nekopilujte kód jazyka C#, který se nachází ve složce iOS nebo podsložce složky iOS, pokud nestavíte iOS ani MacCatalyst.
- Nekompilujte kód jazyka C#, který se nachází ve složce Windows, ani podsložku složky Windows, pokud nestavíte pro Windows.
Důležité
Cílení na více složek je možné kombinovat s více cíleními na názvy souborů. Další informace najdete v tématu Kombinování názvů souborů a složek s více cíleními.
Kombinování více cílových souborů a složek
V případě potřeby je možné cílení na více souborů kombinovat s cílením na více složek. Systém sestavení lze nakonfigurovat tak, aby používal tento vzor přidáním následujícího XML do souboru aplikace .NET MAUI (.csproj) jako podřízené <Project> položky uzlu:
<ItemGroup Condition="$(TargetFramework.StartsWith('net6.0-android')) != true">
<Compile Remove="**\**\*.Android.cs" />
<None Include="**\**\*.Android.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
<Compile Remove="**\Android\**\*.cs" />
<None Include="**\Android\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net6.0-ios')) != true AND $(TargetFramework.StartsWith('net6.0-maccatalyst')) != true">
<Compile Remove="**\**\*.iOS.cs" />
<None Include="**\**\*.iOS.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
<Compile Remove="**\iOS\**\*.cs" />
<None Include="**\iOS\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('-windows')) != true ">
<Compile Remove="**\*.Windows.cs" />
<None Include="**\*.Windows.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
<Compile Remove="**\Windows\**\*.cs" />
<None Include="**\Windows\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
Tento XML nakonfiguruje systém sestavení tak, aby za určitých podmínek odebral vzory souborů a složek založených na platformě:
- Nekopilujte kód jazyka C#, jehož název souboru končí příponou .Android. cs nebo se nachází ve složce Android nebo podsložce složky Android, pokud nestavíte Android.
- Nekopilujte kód jazyka C#, jehož název souboru končí příponou .iOS. cs nebo se nachází ve složce iOS nebo podsložce složky iOS, pokud nestavíte iOS nebo MacCatalyst.
- Nekopilujte kód jazyka C#, jehož název souboru končí příponou .Windows. cs nebo se nachází ve složce Windows nebo podsložce složky Windows, pokud nestavíte Windows.