added files

This commit is contained in:
timerix 2022-10-30 14:24:48 +06:00
commit c2befca326
34 changed files with 551 additions and 0 deletions

View File

@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/contentModel.xml
/projectSettingsUpdater.xml
/modules.xml
/.idea.stellaris-mod-merger.iml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="com.jetbrains.rider.android.RiderAndroidMiscFileCreationComponent">
<option name="ENSURE_MISC_FILE_EXISTS" value="true" />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoGeneratedRunConfigurationManager">
<projectFile>paradox-localisation-auto.csproj</projectFile>
<projectFile>stellaris-mod-merger.csproj</projectFile>
</component>
<component name="ChangeListManager">
<list default="true" id="5c53725f-719f-4c52-8014-aa387ea6df34" name="Changes" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/861e23c672704a4a8eca9c234af0cac552e590/57/d879f9dd/Encoding.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/861e23c672704a4a8eca9c234af0cac552e590/59/1205fdfc/UTF8Encoding.cs" root0="SKIP_HIGHLIGHTING" />
</component>
<component name="MarkdownSettingsMigration">
<option name="stateVersion" value="1" />
</component>
<component name="ProjectId" id="2GqSiiQhdoMqtxtASvRsA97CqKe" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"WebServerToolWindowFactoryState": "false",
"nodejs_package_manager_path": "npm",
"settings.editor.selected.configurable": "advanced.settings",
"vue.rearranger.settings.migration": "true"
}
}]]></component>
<component name="RunManager" selected=".NET Project.paradox-localisation-auto">
<configuration name="paradox-localisation-auto" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/paradox-localisation-auto.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="Console" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="stellaris-mod-merger" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/paradox-mod-merger.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="Console" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="5c53725f-719f-4c52-8014-aa387ea6df34" name="Changes" comment="" />
<created>1667114752922</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1667114752922</updated>
<workItem from="1667114759225" duration="2002000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="UnityUnitTestConfiguration" currentTestLauncher="NUnit" />
<component name="VcsManagerConfiguration">
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
</component>
</project>

BIN
7z/7-zip.dll Normal file

Binary file not shown.

BIN
7z/7-zip32.dll Normal file

Binary file not shown.

BIN
7z/7z.dll Normal file

Binary file not shown.

BIN
7z/7z.exe Normal file

Binary file not shown.

228
ParadoxModMerger.cs Normal file
View File

@ -0,0 +1,228 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using DTLib;
using DTLib.Filesystem;
using DTLib.Logging;
using DTLib.Extensions;
static class ParadoxModMerger
{
// вывод лога в консоль и файл
static ConsoleLogger logger = new ConsoleLogger("merger-logs", "merger");
static void Log(params string[] msg) => logger.Log(msg);
static void Main(string[] args)
{
try
{
PublicLog.LogEvent += Log;
// хелп
if (args.Length == 0 || args[0] == "/?" || args[0] == "-h")
{
Log(
"b", "paradox mod merger help:\n",
"c", "-clear \"steamworkshop dir\" -out \"utput dir\" ",
"b", "clear mod files and put them into separate dirs in output dir\n",
"c", "-merge \"dir with mods\" -out \"output dir\" ",
"b", "merge mods and show conflicts\n",
"c", "-merge-single \"dir with mod\" -out \"output dir\" ",
"b", "copy single mod files and show conflicts\n",
"c", "-diff \"dir with mods\" \"another dir with mods\" -out \"output file\" ",
"b", "compare mod files hashes for finding different files");
Console.ResetColor();
return;
}
Log("c", "args: ");
string srcdir = "";
string srcdir2 = "";
string outdir = "";
int mode = -1;
// определение всех аргументов
for (sbyte i = 0; i < args.Length; i++)
{
Log("g", $" {args[i]}");
switch (args[i])
{
case "-clear":
srcdir = args[++i].Replace("\"", "");
Log("g", $" {args[i]}");
mode = 0;
break;
case "-merge":
srcdir = args[++i].Replace("\"", "");
Log("g", $" {args[i]}");
mode = 1;
break;
case "-diff":
srcdir = args[++i].Replace("\"", "");
Log("g", $" {args[i]}");
srcdir2 = args[++i].Replace("\"", "");
Log("g", $" {args[i]}");
mode = 2;
break;
case "-merge-single":
srcdir = args[++i].Replace("\"", "");
Log("g", $" {args[i]}");
mode = 3;
break;
case "-out":
outdir = args[++i].Replace("\"", "");
Log("g", $" {args[i]}");
break;
default:
throw new Exception($"invalid argument: <{args[i]}>");
}
}
Log("");
var conflicts = new List<string>();
string[] moddirs = Directory.GetDirectories(srcdir);
switch (mode)
{
case 0:
Log("b", $"found {moddirs.Length} mod dirs");
for (int i = 0; i < moddirs.Length; i++)
{
string modarch = "";
if (Directory.GetFiles(moddirs[i], "*.zip").Length != 0) modarch = Directory.GetFiles(moddirs[i], "*.zip")[0];
string modname = "";
if (modarch.Length != 0)
{
Log("y", $"archive found: {modarch}");
var pr = new Process();
pr.StartInfo.CreateNoWindow = true;
pr.StartInfo.UseShellExecute = false;
pr.StartInfo.FileName = "7z\\7z.exe";
pr.StartInfo.Arguments = $"x -y -o_TEMP \"{modarch}\"";
pr.Start();
pr.WaitForExit();
moddirs[i] = "_TEMP";
Log("g", "\tfiles extracted");
}
modname = File.ReadAllText($"{moddirs[i]}\\descriptor.mod");
modname = modname.Remove(0, modname.IndexOf("name=\"") + 6);
modname = modname.Remove(modname.IndexOf("\""))
.Replace("\\", "").Replace(":", "").Replace("?", "").Replace("\"", "").Replace("/", "")
.Replace("\'", "").Replace("|", "").Replace("<", "").Replace(">", "").Replace("*", "");
Log("b", $"[{i + 1}/{moddirs.Length}] copying mod ", "c", $"{modname}");
string[] subdirs = Directory.GetDirectories(moddirs[i]);
for (sbyte n = 0; n < subdirs.Length; n++)
{
subdirs[n] = subdirs[n].Remove(0, subdirs[n].LastIndexOf('\\') + 1);
switch (subdirs[n])
{
// stellaris
case "common":
case "events":
case "flags":
case "fonts":
case "gfx":
case "interface":
case "localisation":
case "localisation_synced":
case "map":
case "music":
case "prescripted_countries":
case "sound":
// hoi4
case "history":
case "portraits":
Directory.Copy($"{moddirs[i]}\\{subdirs[n]}", $"{outdir}\\{modname}\\{subdirs[n]}", out List<string> _conflicts, true);
conflicts.AddRange(_conflicts);
break;
default:
break;
}
}
if (Directory.Exists("_TEMP")) Directory.Delete("_TEMP");
}
break;
case 1:
Log("b", $"found {moddirs.Length} mod dirs");
for (short i = 0; i < moddirs.Length; i++)
{
Log("b", $"[{i + 1}/{moddirs.Length}] merging mod ", "c", $"{moddirs[i]}");
Directory.Copy(moddirs[i], outdir, out List<string> _conflicts, true);
conflicts.AddRange(_conflicts);
}
break;
case 2:
var hasher = new Hasher();
var diff = new Dictionary<string, byte[]>();
// добавление файлов из первой папки
List<string> files = Directory.GetAllFiles(srcdir);
var mods = new List<string>();
for (short i = 0; i < files.Count; i++)
{
byte[] hash = hasher.HashFile(files[i]);
files[i] = files[i].Replace(srcdir, "");
diff.Add(files[i], hash);
AddMod(files[i]);
}
// убирание совпадающих файлов
files = Directory.GetAllFiles(srcdir2);
for (short i = 0; i < files.Count; i++)
{
byte[] hash = hasher.HashFile(files[i]);
files[i] = files[i].Replace(srcdir2, "");
if (diff.ContainsKey(files[i]) && diff[files[i]].HashToString() == hash.HashToString()) diff.Remove(files[i]);
else
{
diff.Add(srcdir2 + files[i], hash);
AddMod(files[i]);
}
}
void AddMod(string mod)
{
mod = mod.Remove(0, 1);
mod = mod.Remove(mod.IndexOf('\\'));
if (!mods.Contains(mod)) mods.Add(mod);
}
// вывод результата
StringBuilder output = new StringBuilder();
output.Append($"[{DateTime.Now}]\n\n");
foreach (string mod in mods)
{
output.Append('\n').Append(mod).Append("\n{\n");
foreach (string file in diff.Keys)
{
if (file.Contains(mod))
{
output.Append('\t');
if (!file.Contains(srcdir2)) output.Append(srcdir).Append(file).Append('\n');
output.Append(file).Append('\n');
}
}
output.Append("}\n");
// не убирать, это полезное
if (output[output.Length - 4] == '{') output.Remove(output.Length - mod.Length - 5, mod.Length + 5);
}
// хоть называется outdir, в данном случае это путь к файлу
var _outStr = output.ToString();
File.WriteAllText(outdir, _outStr);
Log("g", $"output written to {outdir}");
break;
case 3:
Directory.Copy(srcdir, outdir, out List<string> __conflicts, true);
conflicts.AddRange(__conflicts);
break;
}
// вывод конфликтующих файлов при -merge и -clear если такие есть
if (conflicts.Count > 0)
{
Log("r", $"found {conflicts.Count} conflicts:");
foreach (string conflict in conflicts) Log("m", $"{conflict}");
}
}
catch (Exception ex)
{
Log("r", $"{ex.Message}\n{ex.StackTrace}");
}
Console.ResetColor();
}
}

View File

@ -0,0 +1,37 @@
using System;
using DTLib;
using DTLib.Extensions;
using DTLib.Filesystem;
using DTLib.Logging;
static class ParadoxRusLocalisationGen
{
static ConsoleLogger logger = new ConsoleLogger("autoloc-logs", "merger");
static void Main(string[] args)
{
if (args.Length != 2 || args[0] == "/?" || args[0] == "help" || args[0] == "--help")
{
Console.WriteLine("[dir with eng localisation] [dir with rus localisation]");
return;
}
string engDir = args[0];
string rusir = args[1];
foreach (string enfFileName in Directory.GetAllFiles(engDir))
{
string rusFileName = enfFileName
.Replace(engDir, rusir)
.Replace("l_english", "l_russian");
if(!File.Exists(rusFileName))
{
string text = File.ReadAllText(enfFileName)
.Replace("l_english:", "l_russian: ");
byte[] bytes = StringConverter.UTF8BOM.GetBytes(text);
File.WriteAllBytes(rusFileName, bytes);
ColoredConsole.Write("g",$"file {rusFileName} created\n");
}
else ColoredConsole.Write("y", $"file {rusFileName} already exists\n");
}
}
}

BIN
bin/7z/7-zip.dll Normal file

Binary file not shown.

BIN
bin/7z/7-zip32.dll Normal file

Binary file not shown.

BIN
bin/7z/7z.dll Normal file

Binary file not shown.

BIN
bin/7z/7z.exe Normal file

Binary file not shown.

BIN
bin/DTLib.dll Normal file

Binary file not shown.

BIN
bin/paradox-mod-merger.exe Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

View File

@ -0,0 +1 @@
cd5b5a8959157e453943c7f5e137b9f6db4c3a48

View File

@ -0,0 +1,11 @@
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-mod-merger.csproj.AssemblyReference.cache
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-mod-merger.csproj.SuggestedBindingRedirects.cache
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-mod-merger.csproj.CoreCompileInputs.cache
C:\projects\c#\paradox-mod-merger\bin\paradox-mod-merger.exe
C:\projects\c#\paradox-mod-merger\bin\DTLib.dll
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-mod-merger.csproj.CopyComplete
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-mod-merger.exe
C:\projects\c#\paradox-mod-merger\bin\7z\7-zip.dll
C:\projects\c#\paradox-mod-merger\bin\7z\7-zip32.dll
C:\projects\c#\paradox-mod-merger\bin\7z\7z.dll
C:\projects\c#\paradox-mod-merger\bin\7z\7z.exe

Binary file not shown.

View File

@ -0,0 +1 @@
2cf7a3a56d0e3301c25b927c61148c0736238ae8

View File

@ -0,0 +1,7 @@
C:\projects\c#\paradox-mod-merger\bin\paradox-rus-localisation-gen.exe
C:\projects\c#\paradox-mod-merger\bin\DTLib.dll
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-rus-localisation-gen.csproj.AssemblyReference.cache
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-rus-localisation-gen.csproj.SuggestedBindingRedirects.cache
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-rus-localisation-gen.csproj.CoreCompileInputs.cache
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-rus-localisation-gen.csproj.CopyComplete
C:\projects\c#\paradox-mod-merger\obj\Build\paradox-rus-localisation-gen.exe

Binary file not shown.

46
paradox-mod-merger.csproj Normal file
View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{076BFCFF-1D3E-44FB-B434-73716B79A135}</ProjectGuid>
<OutputType>Exe</OutputType>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>10</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Build|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
</ItemGroup>
<ItemGroup>
<Compile Include="ParadoxModMerger.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DTLib\DTLib\DTLib.csproj">
<Project>{e22e3abf-b364-46a0-814e-48e1035697cb}</Project>
<Name>DTLib</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="7z\**">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>del /f stellaris-mod-merger.exe.config</PostBuildEvent>
</PropertyGroup>
</Project>

44
paradox-mod-merger.sln Normal file
View File

@ -0,0 +1,44 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30907.101
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "paradox-mod-merger", "paradox-mod-merger.csproj", "{076BFCFF-1D3E-44FB-B434-73716B79A135}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DTLib", "..\DTLib\DTLib\DTLib.csproj", "{E22E3ABF-B364-46A0-814E-48E1035697CB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "paradox-rus-localisation-gen", "paradox-rus-localisation-gen.csproj", "{839133EF-6481-498A-B70D-878404BB78A4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Build|Any CPU = Build|Any CPU
Build|x64 = Build|x64
Build|x86 = Build|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{076BFCFF-1D3E-44FB-B434-73716B79A135}.Build|Any CPU.ActiveCfg = Build|Any CPU
{076BFCFF-1D3E-44FB-B434-73716B79A135}.Build|Any CPU.Build.0 = Build|Any CPU
{076BFCFF-1D3E-44FB-B434-73716B79A135}.Build|x64.ActiveCfg = Build|Any CPU
{076BFCFF-1D3E-44FB-B434-73716B79A135}.Build|x64.Build.0 = Build|Any CPU
{076BFCFF-1D3E-44FB-B434-73716B79A135}.Build|x86.ActiveCfg = Build|Any CPU
{076BFCFF-1D3E-44FB-B434-73716B79A135}.Build|x86.Build.0 = Build|Any CPU
{E22E3ABF-B364-46A0-814E-48E1035697CB}.Build|Any CPU.ActiveCfg = Debug|Any CPU
{E22E3ABF-B364-46A0-814E-48E1035697CB}.Build|Any CPU.Build.0 = Debug|Any CPU
{E22E3ABF-B364-46A0-814E-48E1035697CB}.Build|x64.ActiveCfg = Debug|Any CPU
{E22E3ABF-B364-46A0-814E-48E1035697CB}.Build|x64.Build.0 = Debug|Any CPU
{E22E3ABF-B364-46A0-814E-48E1035697CB}.Build|x86.ActiveCfg = Debug|Any CPU
{E22E3ABF-B364-46A0-814E-48E1035697CB}.Build|x86.Build.0 = Debug|Any CPU
{839133EF-6481-498A-B70D-878404BB78A4}.Build|Any CPU.ActiveCfg = Build|Any CPU
{839133EF-6481-498A-B70D-878404BB78A4}.Build|Any CPU.Build.0 = Build|Any CPU
{839133EF-6481-498A-B70D-878404BB78A4}.Build|x64.ActiveCfg = Build|Any CPU
{839133EF-6481-498A-B70D-878404BB78A4}.Build|x64.Build.0 = Build|Any CPU
{839133EF-6481-498A-B70D-878404BB78A4}.Build|x86.ActiveCfg = Build|Any CPU
{839133EF-6481-498A-B70D-878404BB78A4}.Build|x86.Build.0 = Build|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7288F317-0289-4953-8D01-F04EC8809E0F}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Build</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{839133EF-6481-498A-B70D-878404BB78A4}</ProjectGuid>
<OutputType>Exe</OutputType>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<LangVersion>10</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Build|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup>
<Compile Include="ParadoxRusLocalisationGen.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DTLib\DTLib\DTLib.csproj">
<Project>{e22e3abf-b364-46a0-814e-48e1035697cb}</Project>
<Name>DTLib</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>del /f paradox_localisation_auto.exe.config</PostBuildEvent>
</PropertyGroup>
</Project>