diff --git a/Compression.BSA.Test/App.config b/Compression.BSA.Test/App.config deleted file mode 100644 index d1d97acc..00000000 --- a/Compression.BSA.Test/App.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/Compression.BSA.Test/BSATests.cs b/Compression.BSA.Test/BSATests.cs new file mode 100644 index 00000000..75869179 --- /dev/null +++ b/Compression.BSA.Test/BSATests.cs @@ -0,0 +1,199 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Remoting.Channels; +using System.Threading.Tasks; +using Alphaleonis.Win32.Filesystem; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Wabbajack.Common; +using Wabbajack.Lib.Downloaders; +using Wabbajack.Lib.NexusApi; +using Directory = Alphaleonis.Win32.Filesystem.Directory; +using File = Alphaleonis.Win32.Filesystem.File; +using FileInfo = Alphaleonis.Win32.Filesystem.FileInfo; +using Path = Alphaleonis.Win32.Filesystem.Path; + +namespace Compression.BSA.Test +{ + [TestClass] + public class BSATests + { + private static string StagingFolder = "NexusDownloads"; + private static string BSAFolder = "BSAs"; + private static string TestDir = "BSA Test Dir"; + private static string TempDir = "BSA Temp Dir"; + + public TestContext TestContext { get; set; } + + [ClassInitialize] + public static void Setup(TestContext TestContext) + { + + Utils.LogMessages.Subscribe(f => TestContext.WriteLine(f)); + if (!Directory.Exists(StagingFolder)) + Directory.CreateDirectory(StagingFolder); + + if (!Directory.Exists(BSAFolder)) + Directory.CreateDirectory(BSAFolder); + + var mod_ids = new[] + { + (Game.SkyrimSpecialEdition, 12604), // SkyUI + (Game.Skyrim, 3863), // SkyUI + (Game.Skyrim, 51473), // iNeed + (Game.Fallout4, 22223) // 10mm SMG + }; + + mod_ids.Do(info => + { + var filename = DownloadMod(info); + var folder = Path.Combine(BSAFolder, info.Item1.ToString(), info.Item2.ToString()); + if (!Directory.Exists(folder)) + Directory.CreateDirectory(folder); + FileExtractor.ExtractAll(filename, folder); + }); + + } + + private static string DownloadMod((Game, int) info) + { + var client = new NexusApiClient(); + var results = client.GetModFiles(info.Item1, info.Item2); + var file = results.FirstOrDefault(f => f.is_primary) ?? results.OrderByDescending(f => f.uploaded_timestamp).First(); + var src = Path.Combine(StagingFolder, file.file_name); + + if (File.Exists(src)) return src; + + var state = new NexusDownloader.State + { + ModID = info.Item2.ToString(), + GameName = GameRegistry.Games[info.Item1].NexusName, + FileID = file.file_id.ToString() + }; + state.Download(src); + return src; + } + + public static IEnumerable BSAs() + { + return Directory.EnumerateFiles(BSAFolder, "*", DirectoryEnumerationOptions.Recursive) + .Where(f => Consts.SupportedBSAs.Contains(Path.GetExtension(f))) + .Select(nm => new object[] {nm}); + } + + [TestMethod] + [DataTestMethod] + [DynamicData(nameof(BSAs), DynamicDataSourceType.Method)] + public void BSACompressionRecompression(string bsa) + { + TestContext.WriteLine($"From {bsa}"); + TestContext.WriteLine("Cleaning Output Dir"); + if (Directory.Exists(TempDir)) Directory.Delete(TempDir, true); + //if (Directory.Exists(ArchiveTempDir)) Directory.Delete(ArchiveTempDir, true); + Directory.CreateDirectory(TempDir); + + TestContext.WriteLine($"Reading {bsa}"); + using (var a = BSADispatch.OpenRead(bsa)) + { + Parallel.ForEach(a.Files, file => + { + var abs_name = Path.Combine(TempDir, file.Path); + ViaJson(file.State); + + if (!Directory.Exists(Path.GetDirectoryName(abs_name))) + Directory.CreateDirectory(Path.GetDirectoryName(abs_name)); + + + using (var fs = File.OpenWrite(abs_name)) + { + file.CopyDataTo(fs); + } + + + Assert.AreEqual(file.Size, new FileInfo(abs_name).Length); + + }); + + /* + Console.WriteLine("Extracting via Archive.exe"); + if (bsa.ToLower().EndsWith(".ba2")) + { + var p = Process.Start(Archive2Location, $"\"{bsa}\" -e=\"{ArchiveTempDir}\""); + p.WaitForExit(); + + foreach (var file in a.Files) + { + var a_path = Path.Combine(TempDir, file.Path); + var b_path = Path.Combine(ArchiveTempDir, file.Path); + Equal(new FileInfo(a_path).Length, new FileInfo(b_path).Length); + Equal(File.ReadAllBytes(a_path), File.ReadAllBytes(b_path)); + } + }*/ + + + Console.WriteLine($"Building {bsa}"); + + using (var w = ViaJson(a.State).MakeBuilder()) + { + + Parallel.ForEach(a.Files, file => + { + var abs_path = Path.Combine(TempDir, file.Path); + using (var str = File.OpenRead(abs_path)) + { + w.AddFile(ViaJson(file.State), str); + } + }); + + w.Build("c:\\tmp\\tmp.bsa"); + } + + Console.WriteLine($"Verifying {bsa}"); + using (var b = BSADispatch.OpenRead("c:\\tmp\\tmp.bsa")) + { + + Console.WriteLine($"Performing A/B tests on {bsa}"); + Assert.AreEqual(JsonConvert.SerializeObject(a.State), JsonConvert.SerializeObject(b.State)); + + //Equal((uint) a.ArchiveFlags, (uint) b.ArchiveFlags); + //Equal((uint) a.FileFlags, (uint) b.FileFlags); + + // Check same number of files + Assert.AreEqual(a.Files.Count(), b.Files.Count()); + var idx = 0; + foreach (var pair in a.Files.Zip(b.Files, (ai, bi) => (ai, bi))) + { + idx++; + Assert.AreEqual(JsonConvert.SerializeObject(pair.ai.State), + JsonConvert.SerializeObject(pair.bi.State)); + //Console.WriteLine($" - {pair.ai.Path}"); + Assert.AreEqual(pair.ai.Path, pair.bi.Path); + //Equal(pair.ai.Compressed, pair.bi.Compressed); + Assert.AreEqual(pair.ai.Size, pair.bi.Size); + CollectionAssert.AreEqual(GetData(pair.ai), GetData(pair.bi)); + } + } + } + } + + private static byte[] GetData(IFile pairAi) + { + using (var ms = new MemoryStream()) + { + pairAi.CopyDataTo(ms); + return ms.ToArray(); + } + } + + public static T ViaJson(T i) + { + var settings = new JsonSerializerSettings + { + TypeNameHandling = TypeNameHandling.All + }; + return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(i, settings), settings); + } + } +} diff --git a/Compression.BSA.Test/Compression.BSA.Test.csproj b/Compression.BSA.Test/Compression.BSA.Test.csproj index 83abb030..3a358dd8 100644 --- a/Compression.BSA.Test/Compression.BSA.Test.csproj +++ b/Compression.BSA.Test/Compression.BSA.Test.csproj @@ -1,20 +1,26 @@  - + Debug AnyCPU - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9} - Exe + {9C004392-571A-4D28-A9F6-0E25115E6727} + Library + Properties Compression.BSA.Test Compression.BSA.Test v4.7.2 512 - true - true + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + - x64 true full false @@ -24,7 +30,6 @@ 4 - AnyCPU pdbonly true bin\Release\ @@ -38,9 +43,9 @@ DEBUG;TRACE full x64 + 7.3 prompt MinimumRecommendedRules.ruleset - true bin\x64\Release\ @@ -48,62 +53,47 @@ true pdbonly x64 - prompt - MinimumRecommendedRules.ruleset - true - - - true - bin\x86\Debug\ - DEBUG;TRACE - full - x86 7.3 prompt MinimumRecommendedRules.ruleset - true - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - 7.3 - prompt - MinimumRecommendedRules.ruleset - true + + ..\..\..\Users\tbald\.nuget\packages\reactiveui\10.5.7\lib\net461\ReactiveUI.dll + - - - - - - + - + - - - {ff5d892f-8ff4-44fc-8f7f-cd58f307ad1b} Compression.BSA + + {b3f3fb6e-b9eb-4f49-9875-d78578bc7ae5} + Wabbajack.Common + + + {0a820830-a298-497d-85e0-e9a89efef5fe} + Wabbajack.Lib + - - 12.0.2 + + 2.2.6 - - 1.2.0 + + 1.3.2 + + + 1.3.2 + \ No newline at end of file diff --git a/Compression.BSA.Test/Program.cs b/Compression.BSA.Test/Program.cs deleted file mode 100644 index 36a56bbe..00000000 --- a/Compression.BSA.Test/Program.cs +++ /dev/null @@ -1,205 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Newtonsoft.Json; - -namespace Compression.BSA.Test -{ - internal class Program - { - //private const string TestDirBSA = @"D:\MO2 Instances\F4EE"; - //private const string TestDirBA2 = @"D:\MO2 Instances\F4EE"; - private const string TestDir = @"D:\MO2 Instances"; - //private const string TestDir = @"D:\Steam\steamapps\common\Fallout 4"; - private const string TempDir = @"c:\tmp\out\f4ee"; - private const string ArchiveTempDir = @"c:\tmp\out\archive"; - - //private const string Archive2Location = @"D:\Steam\steamapps\common\Fallout 4\Tools\Archive2\Archive2.exe"; - - private static void Main(string[] args) - { - foreach (var bsa in Directory.EnumerateFiles(TestDir, "*.ba2", SearchOption.AllDirectories) - //.Concat(Directory.EnumerateFiles(TestDir, "*.bsa", SearchOption.AllDirectories)) - ) - { - Console.WriteLine($"From {bsa}"); - Console.WriteLine("Cleaning Output Dir"); - if (Directory.Exists(TempDir)) Directory.Delete(TempDir, true); - if (Directory.Exists(ArchiveTempDir)) Directory.Delete(ArchiveTempDir, true); - Directory.CreateDirectory(TempDir); - - Console.WriteLine($"Reading {bsa}"); - using (var a = BSADispatch.OpenRead(bsa)) - { - Parallel.ForEach(a.Files, file => - { - var abs_name = Path.Combine(TempDir, file.Path); - ViaJson(file.State); - - if (!Directory.Exists(Path.GetDirectoryName(abs_name))) - Directory.CreateDirectory(Path.GetDirectoryName(abs_name)); - - - using (var fs = File.OpenWrite(abs_name)) - { - file.CopyDataTo(fs); - } - - - Equal(file.Size, new FileInfo(abs_name).Length); - - }); - - /* - Console.WriteLine("Extracting via Archive.exe"); - if (bsa.ToLower().EndsWith(".ba2")) - { - var p = Process.Start(Archive2Location, $"\"{bsa}\" -e=\"{ArchiveTempDir}\""); - p.WaitForExit(); - - foreach (var file in a.Files) - { - var a_path = Path.Combine(TempDir, file.Path); - var b_path = Path.Combine(ArchiveTempDir, file.Path); - Equal(new FileInfo(a_path).Length, new FileInfo(b_path).Length); - Equal(File.ReadAllBytes(a_path), File.ReadAllBytes(b_path)); - } - }*/ - - - Console.WriteLine($"Building {bsa}"); - - using (var w = ViaJson(a.State).MakeBuilder()) - { - - Parallel.ForEach(a.Files, file => - { - var abs_path = Path.Combine(TempDir, file.Path); - using (var str = File.OpenRead(abs_path)) - { - w.AddFile(ViaJson(file.State), str); - } - }); - - w.Build("c:\\tmp\\tmp.bsa"); - } - - Console.WriteLine($"Verifying {bsa}"); - using (var b = BSADispatch.OpenRead("c:\\tmp\\tmp.bsa")) - { - - Console.WriteLine($"Performing A/B tests on {bsa}"); - Equal(JsonConvert.SerializeObject(a.State), JsonConvert.SerializeObject(b.State)); - - //Equal((uint) a.ArchiveFlags, (uint) b.ArchiveFlags); - //Equal((uint) a.FileFlags, (uint) b.FileFlags); - - // Check same number of files - Equal(a.Files.Count(), b.Files.Count()); - var idx = 0; - foreach (var pair in a.Files.Zip(b.Files, (ai, bi) => (ai, bi))) - { - idx++; - Equal(JsonConvert.SerializeObject(pair.ai.State), - JsonConvert.SerializeObject(pair.bi.State)); - //Console.WriteLine($" - {pair.ai.Path}"); - Equal(pair.ai.Path, pair.bi.Path); - //Equal(pair.ai.Compressed, pair.bi.Compressed); - Equal(pair.ai.Size, pair.bi.Size); - Equal(GetData(pair.ai), GetData(pair.bi)); - } - } - } - } - } - - private static byte[] GetData(IFile pairAi) - { - using (var ms = new MemoryStream()) - { - pairAi.CopyDataTo(ms); - return ms.ToArray(); - } - } - - public static T ViaJson(T i) - { - var settings = new JsonSerializerSettings - { - TypeNameHandling = TypeNameHandling.All - }; - return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(i, settings), settings); - } - - private static void Equal(HashSet a, HashSet b) - { - Equal(a.Count, b.Count); - - foreach (var itm in a) - Equal(b.Contains(itm)); - } - - private static void Equal(bool v) - { - if (!v) throw new InvalidDataException("False"); - } - - public static void Equal(uint a, uint b) - { - if (a == b) return; - - throw new InvalidDataException($"{a} != {b}"); - } - - public static void Equal(long a, long b) - { - if (a == b) return; - - throw new InvalidDataException($"{a} != {b}"); - } - - public static void Equal(ulong a, ulong b) - { - if (a == b) return; - - throw new InvalidDataException($"{a} != {b}"); - } - - public static void Equal(int a, int b) - { - if (a == b) return; - - throw new InvalidDataException($"{a} != {b}"); - } - - public static void Equal(string a, string b) - { - if (a == b) return; - - throw new InvalidDataException($"{a} != {b}"); - } - - public static void Equal(bool a, bool b) - { - if (a == b) return; - - throw new InvalidDataException($"{a} != {b}"); - } - - public static void Equal(byte[] a, byte[] b) - { - if (a.Length != b.Length) throw new InvalidDataException("Byte array sizes are not equal"); - - for (var idx = 0; idx < a.Length; idx++) - { - if (a[idx] != b[idx]) - { - Console.WriteLine($"Byte array contents not equal at {idx} - {a[idx]} vs {b[idx]}"); - } - } - } - } -} \ No newline at end of file diff --git a/Compression.BSA.Test/Properties/AssemblyInfo.cs b/Compression.BSA.Test/Properties/AssemblyInfo.cs index e39e4f04..1ac57c34 100644 --- a/Compression.BSA.Test/Properties/AssemblyInfo.cs +++ b/Compression.BSA.Test/Properties/AssemblyInfo.cs @@ -1,9 +1,7 @@ -using System.Reflection; +using System.Reflection; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. [assembly: AssemblyTitle("Compression.BSA.Test")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] @@ -13,23 +11,10 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("ba2cfea1-072b-42d6-822a-8c6d0e3ae5d9")] +[assembly: Guid("9c004392-571a-4d28-a9f6-0e25115e6727")] -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Wabbajack.Common/Consts.cs b/Wabbajack.Common/Consts.cs index 50d19067..40f14348 100644 --- a/Wabbajack.Common/Consts.cs +++ b/Wabbajack.Common/Consts.cs @@ -19,7 +19,7 @@ namespace Wabbajack.Common public static HashSet SupportedArchives = new HashSet {".zip", ".rar", ".7z", ".7zip", ".fomod", ".omod"}; - public static HashSet SupportedBSAs = new HashSet {".bsa", ".ba2"}; + public static HashSet SupportedBSAs = new HashSet {".bsa", ".ba2", ".BA2"}; public static HashSet ConfigFileExtensions = new HashSet {".json", ".ini", ".yml"}; public static HashSet ESPFileExtensions = new HashSet() { ".esp", ".esm", ".esl"}; diff --git a/Wabbajack.Test/EndToEndTests.cs b/Wabbajack.Test/EndToEndTests.cs index 2808f828..c5fca821 100644 --- a/Wabbajack.Test/EndToEndTests.cs +++ b/Wabbajack.Test/EndToEndTests.cs @@ -115,7 +115,7 @@ namespace Wabbajack.Test $"fileID={file.file_id}" }); - if (!File.Exists(file.file_name)) + if (!File.Exists(src)) { var state = DownloadDispatcher.ResolveArchive(ini.LoadIniString()); diff --git a/Wabbajack.sln b/Wabbajack.sln index 6e1451ab..1c0c35f6 100644 --- a/Wabbajack.sln +++ b/Wabbajack.sln @@ -9,8 +9,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wabbajack", "Wabbajack\Wabb EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compression.BSA", "Compression.BSA\Compression.BSA.csproj", "{FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compression.BSA.Test", "Compression.BSA.Test\Compression.BSA.Test.csproj", "{BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4EDEF6CC-2F5C-439B-BEAF-9D03895099F1}" ProjectSection(SolutionItems) = preProject CHANGELOG.md = CHANGELOG.md @@ -30,6 +28,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wabbajack.Lib", "Wabbajack. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wabbajack.Test.ListValidation", "Wabbajack.Test.ListValidation\Wabbajack.Test.ListValidation.csproj", "{BA013D05-1D70-452F-BB8F-272B31E6C74E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compression.BSA.Test", "Compression.BSA.Test\Compression.BSA.Test.csproj", "{9C004392-571A-4D28-A9F6-0E25115E6727}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug (no commandargs)|Any CPU = Debug (no commandargs)|Any CPU @@ -97,24 +97,6 @@ Global {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|x64.Build.0 = Release|x64 {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|x86.ActiveCfg = Release|x86 {FF5D892F-8FF4-44FC-8F7F-CD58F307AD1B}.Release|x86.Build.0 = Release|x86 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|x64.Build.0 = Debug|x64 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|x86.ActiveCfg = Debug|x86 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug (no commandargs)|x86.Build.0 = Debug|x86 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|x64.ActiveCfg = Debug|x64 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|x64.Build.0 = Debug|x64 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|x86.ActiveCfg = Debug|x86 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Debug|x86.Build.0 = Debug|x86 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|Any CPU.Build.0 = Release|Any CPU - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|x64.ActiveCfg = Release|x64 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|x64.Build.0 = Release|x64 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|x86.ActiveCfg = Release|x86 - {BA2CFEA1-072B-42D6-822A-8C6D0E3AE5D9}.Release|x86.Build.0 = Release|x86 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|x64.ActiveCfg = Debug|x64 @@ -123,8 +105,8 @@ Global {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x64.ActiveCfg = Debug|Any CPU - {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x64.Build.0 = Debug|Any CPU + {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x64.ActiveCfg = Debug|x64 + {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x64.Build.0 = Debug|x64 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x86.ActiveCfg = Debug|x86 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Debug|x86.Build.0 = Debug|x86 {5128B489-BC28-4F66-9F0B-B4565AF36CBC}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -141,8 +123,8 @@ Global {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x64.ActiveCfg = Debug|Any CPU - {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x64.Build.0 = Debug|Any CPU + {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x64.ActiveCfg = Debug|x64 + {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x64.Build.0 = Debug|x64 {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x86.ActiveCfg = Debug|x86 {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Debug|x86.Build.0 = Debug|x86 {A2913DFE-18FF-468B-A6C1-55F7C0CC0CE8}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -159,8 +141,8 @@ Global {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug (no commandargs)|x86.Build.0 = Debug|x86 {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x64.ActiveCfg = Debug|Any CPU - {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x64.Build.0 = Debug|Any CPU + {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x64.ActiveCfg = Debug|x64 + {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x64.Build.0 = Debug|x64 {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x86.ActiveCfg = Debug|x86 {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Debug|x86.Build.0 = Debug|x86 {A47FFF32-782B-4D9F-8704-C98FB32FA8CC}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -177,8 +159,8 @@ Global {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug (no commandargs)|x86.Build.0 = Debug|Any CPU {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug|x64.ActiveCfg = Debug|Any CPU - {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug|x64.Build.0 = Debug|Any CPU + {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug|x64.ActiveCfg = Debug|x64 + {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug|x64.Build.0 = Debug|x64 {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug|x86.ActiveCfg = Debug|Any CPU {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Debug|x86.Build.0 = Debug|Any CPU {0A820830-A298-497D-85E0-E9A89EFEF5FE}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -195,8 +177,8 @@ Global {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug (no commandargs)|x86.Build.0 = Debug|Any CPU {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug|x64.ActiveCfg = Debug|Any CPU - {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug|x64.Build.0 = Debug|Any CPU + {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug|x64.ActiveCfg = Debug|x64 + {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug|x64.Build.0 = Debug|x64 {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug|x86.ActiveCfg = Debug|Any CPU {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Debug|x86.Build.0 = Debug|Any CPU {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -205,6 +187,24 @@ Global {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Release|x64.Build.0 = Release|Any CPU {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Release|x86.ActiveCfg = Release|Any CPU {BA013D05-1D70-452F-BB8F-272B31E6C74E}.Release|x86.Build.0 = Release|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug (no commandargs)|Any CPU.ActiveCfg = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug (no commandargs)|Any CPU.Build.0 = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug (no commandargs)|x64.ActiveCfg = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug (no commandargs)|x64.Build.0 = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug (no commandargs)|x86.ActiveCfg = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug (no commandargs)|x86.Build.0 = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug|x64.ActiveCfg = Debug|x64 + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug|x64.Build.0 = Debug|x64 + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug|x86.ActiveCfg = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Debug|x86.Build.0 = Debug|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Release|Any CPU.Build.0 = Release|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Release|x64.ActiveCfg = Release|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Release|x64.Build.0 = Release|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Release|x86.ActiveCfg = Release|Any CPU + {9C004392-571A-4D28-A9F6-0E25115E6727}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Wabbajack/Wabbajack.csproj b/Wabbajack/Wabbajack.csproj index 8fd62a5d..29e01834 100644 --- a/Wabbajack/Wabbajack.csproj +++ b/Wabbajack/Wabbajack.csproj @@ -380,7 +380,7 @@ 4.1.0 - 6.13.20 + 6.13.21 6.0.4 @@ -417,7 +417,7 @@ 2.4.0 - 10.4.1 + 10.5.7 10.5.7