target .NET framework XX for compiling DLLs (e.g., 3.5, 4.0)?

Started by Lord Fappington, December 27, 2014, 03:19:53 PM

Previous topic - Next topic

Lord Fappington

As the title says, what is the appropriate .NET framework for an alpha 8 compatible mod when compiling your C# DLL?

If anyone has an example they can let me look at (particularly the solution pre-assembly) would be helpful to ensure I've gotten everything right.

I'm working on the romance mod and made some progress on key features; debugged in xamarian using the associated game DLLs but when I load the mod in game screen goes black and I'm not sure how to debug it at that point :(.

Best,
Lord Fap

Temeez

I'm under the impression that its 3.5, at least the mod I'm currently working on works with that.

At the black screen, alt tab and go find the output_log.txt file inside the RimWorld data folder, it should help. I use JetBrains dotPeek to.. peek inside .dll files.

Hope this helps somehow.

- Temeez

EdB

Quote from: Lord Fappington on December 27, 2014, 03:19:53 PM
As the title says, what is the appropriate .NET framework for an alpha 8 compatible mod when compiling your C# DLL?

I'm also using Xamarin/MonoDevelop and have seen the black screen when using the wrong target runtime.  3.5 is the one you want.

Lord Fappington

Thank you both EdB & Temez, indeed helpful insights!

Based on the Haplo/Mrofa tutorial I had targeted 3.5 so I had that right, thanks for the confirmation.  Therefore, thanks for the tip on the output_log.txt file to take a peak at wahts throwing the error.  My initial strategy was to deconstruct each module and load them piecemeal to see which caused the error.  Maybe the output_log can help reduce the time I go through that process.

Thanks for the decompiler tip Temeez, I've been using .NET Reflector 8 up until now.

Thank you both again for your tips!

Best,
Fap

Lord Fappington

Heres what I saw in output_log.txt, any insights?


(Filename: C:/BuildAgent/work/d63dfc6385190b60/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)

Could not find a type named WorkGiver_Romance

(Filename: C:/BuildAgent/work/d63dfc6385190b60/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)

Knowledge data was missing key LovemakingTutorial. Adding it...

(Filename: C:/BuildAgent/work/d63dfc6385190b60/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)

Knowledge data was missing key LovemakingTutorial. Adding it...

(Filename: C:/BuildAgent/work/d63dfc6385190b60/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)

ArgumentNullException: Argument cannot be null.

Parameter name: type
  at System.Activator.CheckType (System.Type type) [0x00000] in <filename unknown>:0

  at System.Activator.CreateInstance (System.Type type, BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes) [0x00000] in <filename unknown>:0

  at System.Activator.CreateInstance (System.Type type, System.Object[] args, System.Object[] activationAttributes) [0x00000] in <filename unknown>:0

  at System.Activator.CreateInstance (System.Type type, System.Object[] args) [0x00000] in <filename unknown>:0

  at RimWorld.JobGiver_WorkRoot.ResolveReferences () [0x00000] in <filename unknown>:0

  at Verse.AI.ThinkNode.ResolveReferences () [0x00000] in <filename unknown>:0

  at Verse.AI.ThinkNode.ResolveReferences () [0x00000] in <filename unknown>:0

  at Verse.ThinkTreeDef.ResolveReferences () [0x00000] in <filename unknown>:0

  at Verse.DefDatabase`1[Verse.ThinkTreeDef].ResolveAllReferences () [0x00000] in <filename unknown>:0

  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)

  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0

  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0

  at Verse.GenGeneric.InvokeStaticMethodOnGenericType (System.Type genericBase, System.Type genericParam, System.String methodName) [0x00000] in <filename unknown>:0

  at Verse.PlayDataLoader.LoadAllPlayData () [0x00000] in <filename unknown>:0

  at VerseBase.Root.Start () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at Verse.KeyBindingDef.get_JustPressed () [0x00000] in <filename unknown>:0

  at Verse.TakeScreenshot.Update () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0

(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at VerseBase.Root.OnGUI () [0x00000] in <filename unknown>:0


EdB

Quote from: Lord Fappington on December 27, 2014, 07:53:20 PM
Thanks for the decompiler tip Temeez, I've been using .NET Reflector 8 up until now.

Note that MonoDevelop/Xamarin has a built in decompiler that saves you from switching between tools.  Just double click one of the reference DLLs in your project, and it opens a class browser.  I find that it decompiles slightly better than JetBrains, but JetBrains has a couple of additional tools/features, so I occasionally use it as well.

Rikiki

This line "Could not find a type named WorkGiver_Romance" says that it cannot find your custom workgiver.
Is it correctly placed in the folder structure?
Correct the errors one by one as there may be a dawnfall.