.NET 5 – CA1416: Situs panggilan ini dapat dijangkau di semua platform. hanya didukung pada Windows 7.0 dan yang lebih baru

.NET 5 - CA1416: Situs panggilan ini dapat dijangkau di semua platform.  hanya didukung pada Windows 7.0 dan yang lebih baru

Halo semua,

Arsitek perangkat lunak kami baru saja memutakhirkan perpustakaan kelas khusus kami yang berisi kelas akses data umum, utilitas khusus, dan fungsi untuk tugas sehari-hari kami dari .NET Framework 4.7x ke .NET 5. Karena kami hanya menerapkan aplikasi kami ke pengguna windows, atur nilai TargetFramework ke net5.0-windows di file .csproj.

Bacaan Lainnya

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>

<PropertyGroup>
<TargetFramework>net5.0-windows</TargetFramework>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<UseWPF>true</UseWPF>
<PackageId>Utilities.XYZLibNET</PackageId>
<Version>1.0.0.3</Version>
<Authors>Development Team</Authors>
<Description>Library of common classes and functions for net5.0-windows</Description>
<Copyright>2021</Copyright>
<PackageReleaseNotes>Initial Release</PackageReleaseNotes>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
<PackageReference Include="System.Security.Principal.Windows" Version="5.0.0" />
</ItemGroup>

<ItemGroup>
<None Update="XYZLib.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>

Setelah mengkompilasi pustaka tersebut, saya langsung mereferensikan file dll ke proyek saya yang menargetkan kerangka kerja .NET 5.0 dan memanggil metode kelas basis data dalam aplikasi saya. Yang mengejutkan saya, itu menghasilkan banyak pesan peringatan sehubungan dengan CA1416: Situs panggilan ini dapat dijangkau di semua platform. “pernyataan” hanya didukung pada Windows 7.0 dan yang lebih baru.

Sesuai dokumentasi, Analisis kode sumber .NET, CA1416 adalah peringatan tentang kompatibilitas platform yang diaktifkan secara default di mana pesan atau pelanggaran ini dilaporkan jika API khusus platform digunakan dalam konteks platform yang berbeda atau jika platform tidak diverifikasi (netral platform). Pelanggaran juga dilaporkan jika API yang tidak didukung untuk platform target proyek digunakan. Setelah meneliti kemungkinan solusi, saya menemukan dua solusi untuk menghapus pesan peringatan ini. Pertama adalah menonaktifkan analisis kode proyek (.csproj) yang mereferensikan .NET 5 dll dengan menyetel EnableNETAnalyzers ke false seperti yang disebutkan dalam dokumen ini Referensi MSBuild untuk proyek .NET SDK

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<EnableNETAnalyzers>false</EnableNETAnalyzers>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
</ItemGroup>

<ItemGroup>
<Reference Include="GGSLibNet">
<HintPath>......ProjectsbinDebugnet5.0-windowsUtilities.dll</HintPath>
</Reference>
</ItemGroup>

<ItemGroup>
<None Update="XYZSettings.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>

Solusi lainnya adalah mengubah TargetFramework proyek yang mereferensikan dll dari net5.0 ke net5.0-windows yang identik dengan TargetFramework dari perpustakaan proyek kustom kami.

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
</ItemGroup>

<ItemGroup>
<Reference Include="GGSLibNet">
<HintPath>......ProjectsbinDebugnet5.0-windowsUtilities.dll</HintPath>
</Reference>
</ItemGroup>

<ItemGroup>
<None Update="XYZSettings.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>

Setelah itu, pesan peringatan ini akan hilang.

Editor: NEXCloud Team

Pos terkait