Skip to content
This repository was archived by the owner on Oct 29, 2022. It is now read-only.

Commit 4fd128f

Browse files
committed
Updated DynModLib with latest compatible Mono.CSharp.dll for BT 1.7
1 parent 7236fb9 commit 4fd128f

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

Mono.CSharp.dll

231 KB
Binary file not shown.

source/DynModLib.csproj

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
<AppDesignerFolder>Properties</AppDesignerFolder>
99
<RootNamespace>DynModLib</RootNamespace>
1010
<AssemblyName>DynModLib</AssemblyName>
11-
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
11+
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
1212
<FileAlignment>512</FileAlignment>
13+
<TargetFrameworkProfile />
1314
</PropertyGroup>
1415
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
1516
<DebugSymbols>true</DebugSymbols>
@@ -20,6 +21,7 @@
2021
<ErrorReport>prompt</ErrorReport>
2122
<WarningLevel>4</WarningLevel>
2223
<LangVersion>default</LangVersion>
24+
<Prefer32Bit>false</Prefer32Bit>
2325
</PropertyGroup>
2426
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
2527
<DebugType>none</DebugType>
@@ -29,6 +31,7 @@
2931
<ErrorReport>prompt</ErrorReport>
3032
<WarningLevel>4</WarningLevel>
3133
<DebugSymbols>false</DebugSymbols>
34+
<Prefer32Bit>false</Prefer32Bit>
3235
</PropertyGroup>
3336
<ItemGroup>
3437
<Reference Include="System" />
@@ -57,6 +60,10 @@
5760
<HintPath>..\..\..\BattleTech_Data\Managed\UnityEngine.dll</HintPath>
5861
<Private>False</Private>
5962
</Reference>
63+
<Reference Include="UnityEngine.CoreModule">
64+
<HintPath>..\..\..\BattleTech_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
65+
<Private>False</Private>
66+
</Reference>
6067
<Reference Include="UnityEngine.Networking">
6168
<HintPath>..\..\..\BattleTech_Data\Managed\UnityEngine.Networking.dll</HintPath>
6269
<Private>False</Private>

source/Main.cs

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ public static void Start(string modDirectory, string json)
2424
try
2525
{
2626
var compilerAssembly = Assembly.LoadFrom(Path.Combine(lib.Directory, "Mono.CSharp.dll"));
27+
28+
{
29+
// fix for misbehaving of AssemblyDefinition CheckReferencesPublicToken
30+
var harmony = HarmonyInstance.Create("DynModLib.CSharp");
31+
var mOriginal = compilerAssembly.GetType("Mono.CSharp.AssemblyDefinition").GetMethod("CheckReferencesPublicToken", BindingFlags.Instance | BindingFlags.NonPublic);
32+
var mPrefix = typeof(Main).GetMethod(nameof(Prefix), BindingFlags.Static | BindingFlags.Public);
33+
harmony.Patch(mOriginal, new HarmonyMethod(mPrefix));
34+
}
35+
2736
var references = CollectReferences();
2837
var compiler = new ModCompiler(compilerAssembly, references);
2938

@@ -45,6 +54,11 @@ public static void Start(string modDirectory, string json)
4554
}
4655
}
4756

57+
public static bool Prefix()
58+
{
59+
return false;
60+
}
61+
4862
private static List<string> CollectReferences()
4963
{
5064
var references = GetManagedAssemblyPaths();
@@ -75,11 +89,23 @@ internal class ModCompiler
7589
{
7690
private readonly Assembly compilerAssembly;
7791
private readonly List<string> references;
92+
private readonly DateTime lastestAssemblyWriteTime;
7893

7994
internal ModCompiler(Assembly compilerAssembly, List<string> references)
8095
{
8196
this.compilerAssembly = compilerAssembly;
8297
this.references = references;
98+
99+
var latestWriteTime = DateTime.MinValue;
100+
foreach (var reference in references)
101+
{
102+
var writeTime = File.GetLastWriteTime(reference);
103+
if (writeTime.CompareTo(latestWriteTime) > 0)
104+
{
105+
latestWriteTime = writeTime;
106+
}
107+
}
108+
lastestAssemblyWriteTime = latestWriteTime;
83109
}
84110

85111
private Mod mod;
@@ -171,18 +197,24 @@ private void CompileAssembly(string outPath, List<string> refPaths, List<string>
171197
}
172198
}
173199

174-
private static bool HasCachedAssembly(string outPath, List<string> srcPaths)
200+
private bool HasCachedAssembly(string outPath, List<string> srcPaths)
175201
{
176202
if (!File.Exists(outPath))
177203
{
178204
return false;
179205
}
180206

181207
var assemblyDateTime = File.GetLastWriteTime(outPath);
208+
209+
if (lastestAssemblyWriteTime.CompareTo(assemblyDateTime) > 0)
210+
{
211+
return false;
212+
}
213+
182214
foreach (var sourceFile in srcPaths)
183215
{
184216
var sourceDateTime = File.GetLastWriteTime(sourceFile);
185-
if (sourceDateTime.Subtract(assemblyDateTime).Ticks > 0)
217+
if (sourceDateTime.CompareTo(assemblyDateTime) > 0)
186218
{
187219
return false;
188220
}

0 commit comments

Comments
 (0)