Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
The proposed library would sit alongside cross-platform libraries in Xamarin apps for iOS and Android. However, it would include files with names like MyLibraryFile.android.cs MyLibraryFile.ios...
#5: Post edited
Library that is platform-specific via selective compilation?
- The proposed library would sit alongside cross-platform libraries in Xamarin apps for iOS and Android. However, it would include files with names like
`MyLibraryFile.android.csMyLibraryFile.ios.cs`- Each file would have platform-specific content, and all files would be visible in the solutions for each platform, i.e. in the solution for the Android app, under MyLibrary, you would also be able to see MyLibraryFile.ios.cs.
- The contents of the library would be steered via the project file, which would have a structure as follows.
- First, a list of target frameworks is set
`<PropertyGroup><TargetFrameworks>Xamarin.iOS10</TargetFrameworks><TargetFrameworks Condition="'$(OS)' != 'Unix'">$(TargetFrameworks);MonoAndroid12.0</TargetFrameworks></PropertyGroup>`- Then, the project file selects which .cs files to build based on the TargetFramework set in the app project.
`<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">- <Compile Include="**\*.android.cs"/>
</ItemGroup>`- My question is, is this a recognised pattern?
- I can't find anything about it.
- The proposed library would sit alongside cross-platform libraries in Xamarin apps for iOS and Android. However, it would include files with names like
- ```
- MyLibraryFile.android.cs
- MyLibraryFile.ios.cs
- ```
- Each file would have platform-specific content, and all files would be visible in the solutions for each platform, i.e. in the solution for the Android app, under MyLibrary, you would also be able to see MyLibraryFile.ios.cs.
- The contents of the library would be steered via the project file, which would have a structure as follows.
- First, a list of target frameworks is set
- ```
- <PropertyGroup>
- <TargetFrameworks>Xamarin.iOS10</TargetFrameworks>
- <TargetFrameworks Condition="'$(OS)' != 'Unix'">$(TargetFrameworks);MonoAndroid12.0</TargetFrameworks>
- </PropertyGroup>
- ```
- Then, the project file selects which .cs files to build based on the TargetFramework set in the app project.
- ```
- <ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">
- <Compile Include="**\*.android.cs"/>
- </ItemGroup>
- ```
- My question is, is this a recognised pattern?
- I can't find anything about it.
#3: Post edited
- The proposed library would sit alongside cross-platform libraries in Xamarin apps for iOS and Android. However, it would include files with names like
- `MyLibraryFile.android.cs
- MyLibraryFile.ios.cs`
- Each file would have platform-specific content, and all files would be visible in the solutions for each platform, i.e. in the solution for the Android app, under MyLibrary, you would also be able to see MyLibraryFile.ios.cs.
- The contents of the library would be steered via the project file, which would have a structure as follows.
- First, a list of target frameworks is set
- `<PropertyGroup>
- <TargetFrameworks>Xamarin.iOS10</TargetFrameworks>
- <TargetFrameworks Condition="'$(OS)' != 'Unix'">$(TargetFrameworks);MonoAndroid12.0</TargetFrameworks>
- </PropertyGroup>`
- Then, the project file selects which .cs files to build based on the TargetFramework set in the app project.
<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">- <Compile Include="**\*.android.cs"/>
</ItemGroup>- My question is, is this a recognised pattern?
- I can't find anything about it.
- The proposed library would sit alongside cross-platform libraries in Xamarin apps for iOS and Android. However, it would include files with names like
- `MyLibraryFile.android.cs
- MyLibraryFile.ios.cs`
- Each file would have platform-specific content, and all files would be visible in the solutions for each platform, i.e. in the solution for the Android app, under MyLibrary, you would also be able to see MyLibraryFile.ios.cs.
- The contents of the library would be steered via the project file, which would have a structure as follows.
- First, a list of target frameworks is set
- `<PropertyGroup>
- <TargetFrameworks>Xamarin.iOS10</TargetFrameworks>
- <TargetFrameworks Condition="'$(OS)' != 'Unix'">$(TargetFrameworks);MonoAndroid12.0</TargetFrameworks>
- </PropertyGroup>`
- Then, the project file selects which .cs files to build based on the TargetFramework set in the app project.
- `<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">
- <Compile Include="**\*.android.cs"/>
- </ItemGroup>`
- My question is, is this a recognised pattern?
- I can't find anything about it.
#2: Post edited
- The proposed library would sit alongside cross-platform libraries in Xamarin apps for iOS and Android. However, it would include files with names like
MyLibraryFile.android.csMyLibraryFile.ios.cs- Each file would have platform-specific content, and all files would be visible in the solutions for each platform, i.e. in the solution for the Android app, under MyLibrary, you would also be able to see MyLibraryFile.ios.cs.
- The contents of the library would be steered via the project file, which would have a structure as follows.
- First, a list of target frameworks is set
<PropertyGroup>- <TargetFrameworks>Xamarin.iOS10</TargetFrameworks>
- <TargetFrameworks Condition="'$(OS)' != 'Unix'">$(TargetFrameworks);MonoAndroid12.0</TargetFrameworks>
</PropertyGroup>- Then, the project file selects which .cs files to build based on the TargetFramework set in the app project.
- <ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">
- <Compile Include="**\*.android.cs"/>
- </ItemGroup>
- My question is, is this a recognised pattern?
- I can't find anything about it.
- The proposed library would sit alongside cross-platform libraries in Xamarin apps for iOS and Android. However, it would include files with names like
- `MyLibraryFile.android.cs
- MyLibraryFile.ios.cs`
- Each file would have platform-specific content, and all files would be visible in the solutions for each platform, i.e. in the solution for the Android app, under MyLibrary, you would also be able to see MyLibraryFile.ios.cs.
- The contents of the library would be steered via the project file, which would have a structure as follows.
- First, a list of target frameworks is set
- `<PropertyGroup>
- <TargetFrameworks>Xamarin.iOS10</TargetFrameworks>
- <TargetFrameworks Condition="'$(OS)' != 'Unix'">$(TargetFrameworks);MonoAndroid12.0</TargetFrameworks>
- </PropertyGroup>`
- Then, the project file selects which .cs files to build based on the TargetFramework set in the app project.
- <ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">
- <Compile Include="**\*.android.cs"/>
- </ItemGroup>
- My question is, is this a recognised pattern?
- I can't find anything about it.
#1: Initial revision
Library that is platform-specific via selective compilation?
The proposed library would sit alongside cross-platform libraries in Xamarin apps for iOS and Android. However, it would include files with names like MyLibraryFile.android.cs MyLibraryFile.ios.cs Each file would have platform-specific content, and all files would be visible in the solutions for each platform, i.e. in the solution for the Android app, under MyLibrary, you would also be able to see MyLibraryFile.ios.cs. The contents of the library would be steered via the project file, which would have a structure as follows. First, a list of target frameworks is set <PropertyGroup> <TargetFrameworks>Xamarin.iOS10</TargetFrameworks> <TargetFrameworks Condition="'$(OS)' != 'Unix'">$(TargetFrameworks);MonoAndroid12.0</TargetFrameworks> </PropertyGroup> Then, the project file selects which .cs files to build based on the TargetFramework set in the app project. <ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))"> <Compile Include="**\*.android.cs"/> </ItemGroup> My question is, is this a recognised pattern? I can't find anything about it.