0
Pending Review

Automated builds do not work

btsslawa 2 months ago updated by Lazlo Bonin (Lead Developer) 2 months ago 2

Hello there,

when I manually build a PC development version of my empty project (only samplescene is included), everything works fine and I get my build after some time.

But I developed an automated buildpipeline with scriptable objects which are used by CI Tools like TeamCity. For quick testing I also included a big "BUILD" button into those scriptable objects which will trigger a manual build from the Unity Editor. Basically the same thing happens as if I would hit the Build Player Button in the Unity Build Settings, except that my ScriptableObjects hold already all the PlayerSettings data.

If I do that, though, I get a bunch of Errors like this:

Assets\Ludiq\Ludiq.PeekCore\Runtime\Collections\Obsolete\AotDictionaryFormatter.cs(6,12): error CS0246: The type or namespace name 'RegisterFormatterAttribute' could not be found (are you missing a using directive or an assembly reference?)

Assets\Ludiq\Ludiq.PeekCore\Runtime\Collections\Obsolete\AotListFormatter.cs(6,12): error CS0246: The type or namespace name 'RegisterFormatterAttribute' could not be found (are you missing a using directive or an assembly reference?)

Assets\Ludiq\Ludiq.PeekCore\Runtime\Reflection\NamespaceFormatter.cs(4,12): error CS0246: The type or namespace name 'RegisterFormatter' could not be found (are you missing a using directive or an assembly reference?)

Assets\Ludiq\Ludiq.PeekCore\Runtime\Collections\Obsolete\AotDictionaryFormatter.cs(2,13): error CS0234: The type or namespace name 'OdinSerializer' does not exist in the namespace 'Ludiq' (are you missing an assembly reference?)

Assets\Ludiq\Ludiq.PeekCore\Runtime\Serialization\Serialization.cs(18,42): error CS0234: The type or namespace name 'OdinSerializer' does not exist in the namespace 'Ludiq' (are you missing an assembly reference?)

Assets\Ludiq\Ludiq.PeekCore\Runtime\Unity\LudiqAsset.cs(3,37): error CS0234: The type or namespace name 'OdinSerializer' does not exist in the namespace 'Ludiq' (are you missing an assembly reference?)

Assets\Ludiq\Ludiq.PeekCore\Runtime\Collections\Obsolete\AotDictionaryFormatter.cs(21,62): error CS0246: The type or namespace name 'IDataReader' could not be found (are you missing a using directive or an assembly reference?)

Assets\Ludiq\Ludiq.PeekCore\Runtime\Collections\Obsolete\AotListFormatter.cs(21,27): error CS0115: 'AotListFormatter.Read(ref AotList, IDataReader)': no suitable method found to override

etc.

So what's going on here? I looked into the preferences of Peek and didn't found any special setting which could fix that :/

Further Details:

Installed Plugins:

- Unity 2019.3.0f5

- Peek (1.1.7)

- Odin (2.1.9)

Unity Version:
2019.3.0f5
Peek Version:
1.1.7

Just wanted to provide more details:

- This ScriptableObject (SO) variant should build a Standalone Windows build set to IL2CPP. Didn't work.
Set it to Mono, also didn't work.
- this BuildAutomation stuff is a custom package added via git through the PackageManager


However: I don't know if this is a valid fix, but this worked:
- Located the asmdef of Ludiq.PeekCore.Runtime

- Exluded Windows 32/64-bit Platform

- Mono AND IL2CPP Builds worked

I need confirmation that this is a valid workaround for now or if this will break anything else In Editor or within the builds until there is a fix.

+1
Pending Review

Hi Btsslawa,

Thanks for the report. I'll look into reproducing this on my end.

In the mean time, as I mentioned on Discord, your workaround should be perfectly safe. Peek requires no runtime assembly, it's just a side-effect of how our common library (Ludiq.Core) is structured to also be used with Bolt.