LibZipSharp icon indicating copy to clipboard operation
LibZipSharp copied to clipboard

Project with Unicode characters `随机生成器` fail to create zip file on Windows.

Open dellis1972 opened this issue 2 years ago • 1 comments

Context https://i.azdo.io/1714603

The error is below. It looks like GetAttributes is throwing an exception which we are not handling. However the file does exists.... so it should work.

C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028: System.IO.FileNotFoundException: Could not find file 'C:\Users\vhtmf\source\repos\随机生成器\随机生成器\obj\Release\net7.0-android\android-arm\aot\随机生成器.dll.so'. [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028: File name: 'C:\Users\vhtmf\source\repos\随机生成器\随机生成器\obj\Release\net7.0-android\android-arm\aot\随机生成器.dll.so' [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028:    at Xamarin.Tools.Zip.WindowsPlatformServices.IsDirectory(ZipArchive archive, String path, Boolean& result) in /Users/runner/work/1/s/LibZipSharp/Xamarin.Tools.Zip/WindowsPlatformServices.cs:line 46 [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028:    at Xamarin.Tools.Zip.PlatformServices.CallServices(Func`2 code) in /Users/runner/work/1/s/LibZipSharp/Xamarin.Tools.Zip/PlatformServices.cs:line 160 [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028:    at Xamarin.Tools.Zip.PlatformServices.IsDirectory(ZipArchive archive, String path) in /Users/runner/work/1/s/LibZipSharp/Xamarin.Tools.Zip/PlatformServices.cs:line 77 [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028:    at Xamarin.Tools.Zip.ZipArchive.AddFile(String sourcePath, String archivePath, EntryPermissions permissions, CompressionMethod compressionMethod, Boolean overwriteExisting) in /Users/runner/work/1/s/LibZipSharp/Xamarin.Tools.Zip/ZipArchive.cs:line 435 [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028:    at Xamarin.Android.Tasks.BuildApk.ExecuteWithAbi(String[] supportedAbis, String apkInputPath, String apkOutputPath, Boolean debug, Boolean compress, IDictionary`2 compressedAssembliesInfo, String assemblyStoreApkName) [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028:    at Xamarin.Android.Tasks.BuildApk.RunTask() [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.4\tools\Xamarin.Android.Common.targets(2088,3): error XABBA7028:    at Microsoft.Android.Build.Tasks.AndroidTask.Execute() in /Users/runner/work/1/s/xamarin-android/external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/AndroidTask.cs:line 22 [C:\Users\vhtmf\source\repos\随机生成器\随机生成器\随机生成器.csproj::TargetFramework=net7.0-android]

dellis1972 avatar Jan 24 '23 14:01 dellis1972

Another question/concern which comes to mind is around NormalizationForm; see also (?):

  • https://github.com/xamarin/xamarin-android/commit/578e781ba15326f3141e475977e7d1dc75057a42
  • https://unicode.org/reports/tr15/

What gives me pause about this question is that afaik Unicode Normalization only comes in when there is more than one way to represent a given character, e.g. \u202b Å is \u0041\u030a Å in NFD and \u00c5 Å in NFC.

For Chinese characters, there doesn't appear to be a difference in normalization forms, i.e. this is likely not relevant:

var s = "随机生成器";
string.Equals(s, s.Normalize(NormalizationForm.FormC),  StringComparison.Ordinal); // true
string.Equals(s, s.Normalize(NormalizationForm.FormD),  StringComparison.Ordinal); // true
string.Equals(s, s.Normalize(NormalizationForm.FormKC), StringComparison.Ordinal); // true
string.Equals(s, s.Normalize(NormalizationForm.FormKD), StringComparison.Ordinal); // true

jonpryor avatar Feb 21 '23 19:02 jonpryor