added files

This commit is contained in:
2022-10-30 14:24:48 +06:00
commit c2befca326
34 changed files with 551 additions and 0 deletions
+13
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
+6
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>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>
+6
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>
+6
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>
+93
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
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+228
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();
}
}
+37
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
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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")]
@@ -0,0 +1 @@
cd5b5a8959157e453943c7f5e137b9f6db4c3a48
@@ -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.
@@ -0,0 +1 @@
2cf7a3a56d0e3301c25b927c61148c0736238ae8
@@ -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
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
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
+40
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>