Skip to content

Commit

Permalink
✨ BinaryResource
Browse files Browse the repository at this point in the history
  • Loading branch information
AigioL committed Jun 18, 2024
1 parent 3f789cf commit ce06331
Show file tree
Hide file tree
Showing 36 changed files with 355 additions and 92 deletions.
6 changes: 6 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<UseArtifactsOutput>true</UseArtifactsOutput>
</PropertyGroup>
</Project>
20 changes: 20 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Project>
<ItemGroup>
<PackageVersion Include="BD.Common8.SourceGenerator.Bcl" Version="8.24.10618.11700">
</PackageVersion>
<PackageVersion Include="BD.Common8.SourceGenerator.ResX" Version="8.24.10618.11700">
</PackageVersion>
<PackageVersion Include="BD.Common8.Bcl" Version="8.24.10618.11700">
</PackageVersion>
<PackageVersion Include="7-Zip.NativeAssets.Win32" Version="24.5.0">
</PackageVersion>
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.5.0">
</PackageVersion>
<PackageVersion Include="NUnit" Version="3.13.3">
</PackageVersion>
<PackageVersion Include="NUnit3TestAdapter" Version="4.4.2">
</PackageVersion>
<PackageVersion Include="System.Net.Http" Version="4.3.4">
</PackageVersion>
</ItemGroup>
</Project>
10 changes: 5 additions & 5 deletions SevenZip.Tests/SevenZip.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="7-Zip.NativeAssets.Win32" Version="24.5.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
<PackageReference Include="System.Net.Http" Version="4.*" />
<PackageReference Include="7-Zip.NativeAssets.Win32" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="NUnit" />
<PackageReference Include="NUnit3TestAdapter" />
<PackageReference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<None Include="SevenZipTests.snk" />
Expand Down
201 changes: 201 additions & 0 deletions SevenZip/LibraryManager.BinaryResource.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
namespace SevenZip;

[BinaryResource(
"""
[
""" +
#if SFX
"""
{
"Path": "..\\res\\sfx\\7z.sfx",
"Name": "sfx_7z_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zCon.sfx",
"Name": "sfx_7zCon_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zS.sfx",
"Name": "sfx_7zS_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zSD.sfx",
"Name": "sfx_7zSD_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_All.sfx",
"Name": "sfx_7zxSD_All_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_All_x64.sfx",
"Name": "sfx_7zxSD_All_x64_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_Deflate.sfx",
"Name": "sfx_7zxSD_Deflate_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_Deflate_x64.sfx",
"Name": "sfx_7zxSD_Deflate_x64_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_LZMA.sfx",
"Name": "sfx_7zxSD_LZMA_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_LZMA_x64.sfx",
"Name": "sfx_7zxSD_LZMA_x64_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_LZMA2.sfx",
"Name": "sfx_7zxSD_LZMA2_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_LZMA2_x64.sfx",
"Name": "sfx_7zxSD_LZMA2_x64_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_PPMd.sfx",
"Name": "sfx_7zxSD_PPMd_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\7zxSD_PPMd_x64.sfx",
"Name": "sfx_7zxSD_PPMd_x64_sfx",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\Configs.xml",
"Name": "sfx_Configs_xml",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\Configs.xsd",
"Name": "sfx_Configs_xsd",
"Reverse": true
},
{
"Path": "..\\res\\sfx\\Configs.xslt",
"Name": "sfx_Configs_xslt",
"Reverse": true
},
""" +
#endif
"""
{
"Path": "..\\res\\arch\\Test.bzip2.7z",
"Name": "arch_Test_bzip2_7z",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.lzma.7z",
"Name": "arch_Test_lzma_7z",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.lzma2.7z",
"Name": "arch_Test_lzma2_7z",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.ppmd.7z",
"Name": "arch_Test_ppmd_7z",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.rar",
"Name": "arch_Test_rar",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.tar",
"Name": "arch_Test_tar",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.txt",
"Name": "arch_Test_txt",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.txt.bz2",
"Name": "arch_Test_txt_bz2",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.txt.gz",
"Name": "arch_Test_txt_gz",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.txt.xz",
"Name": "arch_Test_txt_xz",
"Reverse": true
},
{
"Path": "..\\res\\arch\\Test.zip",
"Name": "arch_Test_zip",
"Reverse": true
}
]
""",
"""
internal static byte[] GetManifestResource(string fileName, string dirName) => dirName switch
{
"arch" => fileName switch
{
"Test.bzip2.7z" => {arch_Test_bzip2_7z}(),
"Test.lzma.7z" => {arch_Test_lzma_7z}(),
"Test.lzma2.7z" => {arch_Test_lzma2_7z}(),
"Test.ppmd.7z" => {arch_Test_ppmd_7z}(),
"Test.rar" => {arch_Test_rar}(),
"Test.tar" => {arch_Test_tar}(),
"Test.txt" => {arch_Test_txt}(),
"Test.txt.bz2" => {arch_Test_txt_bz2}(),
"Test.txt.gz" => {arch_Test_txt_gz}(),
"Test.txt.xz" => {arch_Test_txt_xz}(),
"Test.zip" => {arch_Test_zip}(),
_ => [],
},
#if SFX
"sfx" => fileName switch
{
"7z.sfx" => {sfx_7z_sfx}(),
"7zCon.sfx" => {sfx_7zCon_sfx}(),
"7zS.sfx" => {sfx_7zS_sfx}(),
"7zSD.sfx" => {sfx_7zSD_sfx}(),
"7zxSD_All.sfx" => {sfx_7zxSD_All_sfx}(),
"7zxSD_All_x64.sfx" => {sfx_7zxSD_All_x64_sfx}(),
"7zxSD_Deflate.sfx" => {sfx_7zxSD_Deflate_sfx}(),
"7zxSD_Deflate_x64.sfx" => {sfx_7zxSD_Deflate_x64_sfx}(),
"7zxSD_LZMA.sfx" => {sfx_7zxSD_LZMA_sfx}(),
"7zxSD_LZMA_x64.sfx" => {sfx_7zxSD_LZMA_x64_sfx}(),
"7zxSD_LZMA2.sfx" => {sfx_7zxSD_LZMA2_sfx}(),
"7zxSD_LZMA2_x64.sfx" => {sfx_7zxSD_LZMA2_x64_sfx}(),
"7zxSD_PPMd.sfx" => {sfx_7zxSD_PPMd_sfx}(),
"7zxSD_PPMd_x64.sfx" => {sfx_7zxSD_PPMd_x64_sfx}(),
"Configs.xml" => {sfx_Configs_xml}(),
"Configs.xsd" => {sfx_Configs_xsd}(),
"Configs.xslt" => {sfx_Configs_xslt}(),
_ => [],
},
#endif
_ => [],
};
""")]
partial class LibraryManager
{
}
46 changes: 26 additions & 20 deletions SevenZip/LibraryManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace SevenZip
/// <summary>
/// 7-zip library low-level wrapper.
/// </summary>
internal static class SevenZipLibraryManager
internal static partial class SevenZipLibraryManager
{
/// <summary>
/// Synchronization root for all locking.
Expand Down Expand Up @@ -287,31 +287,37 @@ public static bool ModifyCapable
}
}

static readonly string Namespace = Assembly.GetExecutingAssembly().GetManifestResourceNames()[0].Split('.')[0];

private static string GetResourceString(string str)
private static unsafe bool ExtractionBenchmark(string archiveFileName, Stream outStream, ref LibraryFeature? features, LibraryFeature testedFeature)
{
return Namespace + ".arch." + str;
}
var bytes = LibraryManager.GetManifestResource(archiveFileName, "arch");

Check failure on line 292 in SevenZip/LibraryManager.cs

View workflow job for this annotation

GitHub Actions / build (Release)

'LibraryManager' does not contain a definition for 'GetManifestResource'

Check failure on line 292 in SevenZip/LibraryManager.cs

View workflow job for this annotation

GitHub Actions / build (LiteRelease)

'LibraryManager' does not contain a definition for 'GetManifestResource'
var bytes_span = bytes.AsSpan();
bytes_span.Reverse();
fixed (byte* ptr = bytes)
{
try
{
using UnmanagedMemoryStream stream = new(ptr, bytes.Length);

private static bool ExtractionBenchmark(string archiveFileName, Stream outStream, ref LibraryFeature? features, LibraryFeature testedFeature)
{
var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetResourceString(archiveFileName));
try
{
using (var extractor = new SevenZipExtractor(stream))
{
extractor.ExtractFile(0, outStream);
}
}
catch (Exception)
{
return false;
}

try
{
using (var extractor = new SevenZipExtractor(stream))
features |= testedFeature;
return true;
}
finally
{
extractor.ExtractFile(0, outStream);
bytes_span.Clear();
}
}
catch (Exception)
{
return false;
}

features |= testedFeature;
return true;
}

private static bool CompressionBenchmark(Stream inStream, Stream outStream, OutArchiveFormat format, CompressionMethod method, ref LibraryFeature? features, LibraryFeature testedFeature)
Expand Down
11 changes: 8 additions & 3 deletions SevenZip/SevenZip.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<AssemblyName>SevenZipSharp</AssemblyName>
<TargetFrameworks>netstandard2.0;net472;netcoreapp3.1;net8.0</TargetFrameworks>
<!--<TargetFrameworks>netstandard2.0;net472;netcoreapp3.1;net8.0</TargetFrameworks>-->
<TargetFrameworks>net8.0</TargetFrameworks>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>SevenZip.snk</AssemblyOriginatorKeyFile>
<AssemblyTitle>SevenZipSharp</AssemblyTitle>
Expand Down Expand Up @@ -33,7 +35,7 @@
<ItemGroup>
<None Include="SevenZip.snk" />
</ItemGroup>
<ItemGroup Condition="$(DefineConstants.Contains('SFX'))">
<!--<ItemGroup Condition="$(DefineConstants.Contains('SFX'))">
<EmbeddedResource Include="sfx\7z.sfx" />
<EmbeddedResource Include="sfx\7zCon.sfx" />
<EmbeddedResource Include="sfx\7zS.sfx" />
Expand Down Expand Up @@ -64,7 +66,7 @@
<EmbeddedResource Include="arch\Test.txt.gz" />
<EmbeddedResource Include="arch\Test.txt.xz" />
<EmbeddedResource Include="arch\Test.zip" />
</ItemGroup>
</ItemGroup>-->
<ItemGroup>
<!--<PackageReference Condition="'$(TargetFramework)' != 'net472'" Include="System.Configuration.ConfigurationManager" Version="4.5.0" />-->
<PackageReference Condition="'$(TargetFramework)' == 'netstandard2.0'" Include="System.Security.Permissions" Version="4.5.0" />
Expand All @@ -74,4 +76,7 @@
<HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll</HintPath>
</Reference>-->
</ItemGroup>
<ItemGroup>
<PackageReference Include="BD.Common8.Bcl" />
</ItemGroup>
</Project>
Loading

0 comments on commit ce06331

Please sign in to comment.