Cities: Skylines II

Cities: Skylines II

View Stats:
SOLVED [ERROR] Cannot find central directory ZipException: Cannot find central directory
This is the solution for the subject error and many other similar errors.

Going forward for manual saves only CO added an auto file name update that prompts a logical (to them) new file name by adding a space and a number to your city name.

Previously your save name and city name could be different. Doing that now may cause errors on the first autosave, so just accept the way CO adds that number to each manual save.

If you accept the MANUAL save prompt things will be fine and autosave will understand what to do with the next one but if you change the save name you may cause future errors or crashes.

Presumably that MANUAL save number prompt will increase by "1" with each manual save. Follow this new scheme and Autosave will work the same as it always did, no problem there.

Along with that auto filename for manual saves came a new bug that causes launch errors if you have other old random file names that it does not like, even in some some cloud saves, so turn Cloud off for now.

Its best to move all those pre patch saves completely out of the windows path. Windows will follow the save file even if you rename it in C drive so it has to be moved off the OS drive. Once moved you may be able to rename the files and restore them to saves.

Your save folder is here;
C:\Users\YourUserName\AppData\LocalLow\Colossal Order\Cities Skylines II\Saves\76561199551686661 <--This long number is your Steam account identity. If you have multiple accounts there will be so numbered folders as subdirectories in "saves".

Renaming is simple, just click once on the file name and remove all the new gibberish from the name up to .♥♥♥
Like this;
YourCityName%2E1%2E2%2E25%2E.♥♥♥ to simply YourCityName.♥♥♥

When you put the file back in the saves folder it should run without errors.

For what is worth I think these changes to saving from CO are good. Again it is the communication that failed.
Last edited by Major Kudos™; Mar 20 @ 2:35pm
< >
Showing 1-15 of 16 comments
I have the same issue .. hope someone has an idea
Same issue, guess mods. A lot of crashes also but well
I’m not sure if I’m getting the same message but I am getting some error message. Seems to be about a specific save file that I haven’t played since launch so I just click away and the game runs fine.
Originally posted by SkyHigh64:
I’m not sure if I’m getting the same message but I am getting some error message. Seems to be about a specific save file that I haven’t played since launch so I just click away and the game runs fine.
No not the same, this happens before you even get to select a save or even a new game.

[ERROR] Cannot find central directory

ZipException: Cannot find central directory
at ICSharpCode.SharpZipLib.Zip.ZipFile.ReadEntries () [0x00045] in <9cb65becb5bc4b35b03db4c654095568>:0
at ICSharpCode.SharpZipLib.Zip.ZipFile..ctor (System.IO.Stream stream, System.Boolean leaveOpen) [0x00079] in <9cb65becb5bc4b35b03db4c654095568>:0
at ICSharpCode.SharpZipLib.Zip.ZipFile..ctor (System.IO.Stream stream) [0x00000] in <9cb65becb5bc4b35b03db4c654095568>:0
at Colossal.IO.AssetDatabase.FileSystemDataSource.PopulateFromPackage (System.Boolean warnCollision, System.Boolean priorityData, Colossal.Hash128 packageGuid, System.Collections.Generic.List`1[T] newData) [0x00031] in <83ab2467216c4a94834dc2201631b170>:0
at Colossal.IO.AssetDatabase.FileSystemDataSource.AddEntry (Colossal.IO.AssetDatabase.DataSourceModification modification, System.Boolean warnCollision, System.String path, System.Type type, System.Int64 size, System.Int64 offset, System.Boolean priorityData, Colossal.Hash128 guid, Colossal.Hash128 package, System.String packageEntryName, System.Boolean fromCache, System.Collections.Generic.List`1[T] newData) [0x00257] in <83ab2467216c4a94834dc2201631b170>:0
at Colossal.IO.AssetDatabase.FileSystemDataSource.PopulateFromDirectory (System.String root, System.Boolean priorityData, System.Threading.CancellationToken ct, System.Collections.Generic.List`1[T] newData) [0x0026a] in <83ab2467216c4a94834dc2201631b170>:0
Colossal.Logging.CustomLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:LogFormat(LogType, String, Object[])
Colossal.Logging.UnityLogger:Log(Level, String, Exception)
Colossal.Logging.UnityLogger:Error(Exception)
Colossal.IO.AssetDatabase.FileSystemDataSource:PopulateFromDirectory(String, Boolean, CancellationToken, List`1)
Colossal.IO.AssetDatabase.<PopulateDataSource>d__71:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:Start(<PopulateDataSource>d__71&)
Colossal.IO.AssetDatabase.FileSystemDataSource:PopulateDataSource(Boolean, CancellationToken, TaskProgress)
Colossal.IO.AssetDatabase.<PopulateFromDataSource>d__101:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<PopulateFromDataSource>d__101&)
Colossal.IO.AssetDatabase.AssetDatabase`1:PopulateFromDataSource(Boolean, CancellationToken, TaskProgress)
Colossal.IO.AssetDatabase.<<CacheAssets>g__UpdateDatabase|0>d:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<<CacheAssets>g__UpdateDatabase|0>d&)
Colossal.IO.AssetDatabase.<>c__DisplayClass96_0:<CacheAssets>g__UpdateDatabase|0(IAssetDatabaseInternal)
System.Linq.SelectEnumerableIterator`2:MoveNext()
System.Threading.Tasks.Task:WhenAll(IEnumerable`1)
Colossal.IO.AssetDatabase.<<CacheAssets>b__1>d:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<<CacheAssets>b__1>d&)
Colossal.IO.AssetDatabase.<>c__DisplayClass96_0:<CacheAssets>b__1()
System.Threading.Tasks.Task`1:InnerInvoke()
System.Threading.Tasks.Task:Execute()
System.Threading.Tasks.Task:ExecutionContextCallback(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.Tasks.Task:ExecuteWithThreadLocal(Task&)
System.Threading.Tasks.Task:ExecuteEntry(Boolean)
System.Threading.Tasks.Task:System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
System.Threading.ThreadPoolWorkQueue:Dispatch()
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()
Originally posted by Major Kudos™:
Originally posted by SkyHigh64:
I’m not sure if I’m getting the same message but I am getting some error message. Seems to be about a specific save file that I haven’t played since launch so I just click away and the game runs fine.
No not the same, this happens before you even get to select a save or even a new game.

[ERROR] Cannot find central directory

ZipException: Cannot find central directory
at ICSharpCode.SharpZipLib.Zip.ZipFile.ReadEntries () [0x00045] in <9cb65becb5bc4b35b03db4c654095568>:0
at ICSharpCode.SharpZipLib.Zip.ZipFile..ctor (System.IO.Stream stream, System.Boolean leaveOpen) [0x00079] in <9cb65becb5bc4b35b03db4c654095568>:0
at ICSharpCode.SharpZipLib.Zip.ZipFile..ctor (System.IO.Stream stream) [0x00000] in <9cb65becb5bc4b35b03db4c654095568>:0
at Colossal.IO.AssetDatabase.FileSystemDataSource.PopulateFromPackage (System.Boolean warnCollision, System.Boolean priorityData, Colossal.Hash128 packageGuid, System.Collections.Generic.List`1[T] newData) [0x00031] in <83ab2467216c4a94834dc2201631b170>:0
at Colossal.IO.AssetDatabase.FileSystemDataSource.AddEntry (Colossal.IO.AssetDatabase.DataSourceModification modification, System.Boolean warnCollision, System.String path, System.Type type, System.Int64 size, System.Int64 offset, System.Boolean priorityData, Colossal.Hash128 guid, Colossal.Hash128 package, System.String packageEntryName, System.Boolean fromCache, System.Collections.Generic.List`1[T] newData) [0x00257] in <83ab2467216c4a94834dc2201631b170>:0
at Colossal.IO.AssetDatabase.FileSystemDataSource.PopulateFromDirectory (System.String root, System.Boolean priorityData, System.Threading.CancellationToken ct, System.Collections.Generic.List`1[T] newData) [0x0026a] in <83ab2467216c4a94834dc2201631b170>:0
Colossal.Logging.CustomLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:LogFormat(LogType, String, Object[])
Colossal.Logging.UnityLogger:Log(Level, String, Exception)
Colossal.Logging.UnityLogger:Error(Exception)
Colossal.IO.AssetDatabase.FileSystemDataSource:PopulateFromDirectory(String, Boolean, CancellationToken, List`1)
Colossal.IO.AssetDatabase.<PopulateDataSource>d__71:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:Start(<PopulateDataSource>d__71&)
Colossal.IO.AssetDatabase.FileSystemDataSource:PopulateDataSource(Boolean, CancellationToken, TaskProgress)
Colossal.IO.AssetDatabase.<PopulateFromDataSource>d__101:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<PopulateFromDataSource>d__101&)
Colossal.IO.AssetDatabase.AssetDatabase`1:PopulateFromDataSource(Boolean, CancellationToken, TaskProgress)
Colossal.IO.AssetDatabase.<<CacheAssets>g__UpdateDatabase|0>d:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<<CacheAssets>g__UpdateDatabase|0>d&)
Colossal.IO.AssetDatabase.<>c__DisplayClass96_0:<CacheAssets>g__UpdateDatabase|0(IAssetDatabaseInternal)
System.Linq.SelectEnumerableIterator`2:MoveNext()
System.Threading.Tasks.Task:WhenAll(IEnumerable`1)
Colossal.IO.AssetDatabase.<<CacheAssets>b__1>d:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<<CacheAssets>b__1>d&)
Colossal.IO.AssetDatabase.<>c__DisplayClass96_0:<CacheAssets>b__1()
System.Threading.Tasks.Task`1:InnerInvoke()
System.Threading.Tasks.Task:Execute()
System.Threading.Tasks.Task:ExecutionContextCallback(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.Tasks.Task:ExecuteWithThreadLocal(Task&)
System.Threading.Tasks.Task:ExecuteEntry(Boolean)
System.Threading.Tasks.Task:System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
System.Threading.ThreadPoolWorkQueue:Dispatch()
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()
Just checked my game. It is the same one, happens immediately upon loading the main menu, before the mod’s and virtual texturing finishes.

Here's a picture:
https://steamcommunity.com/sharedfiles/filedetails/?id=3447474290

Betaville is the name of one of my save files.
Last edited by SkyHigh64; Mar 18 @ 6:49pm
Rubin-PL Mar 18 @ 8:34pm 
Mam dokładnie to SAMO. I have exactly the SAME thing. !!!!!!!

Ta Gra to istna Porażka !! to Kolejny Raz !! This Game is a real Failure!! it's Once Again!!

Zamiast Grać to ciągłe problemy. Kupiona Pełna wersja w przedsprzedaży = Wyrzucone pieniądze !!
Instead of Playing it is constant problems. Bought Full version in pre-order = Money wasted
I have exactly same problem, reinstalled and still error comes before even download saves
Golder Mar 19 @ 2:06am 
Hello, I have exactly the same problem. I've played 900 hours ;(

I like the game, but so many recurring bugs are a real shame!
It's going to drive people away
[ERROR] Collection was modified; enumeration operation may not execute.

InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.Generic.HashSet`1+Enumerator[T].MoveNext () [0x00013] in <c03468d2fee641abba39a2eec40e96b6>:0
at Colossal.IO.AssetDatabase.AssetDatabase+<GetAssets>d__89`1[T].MoveNext () [0x00137] in <83ab2467216c4a94834dc2201631b170>:0
at Colossal.IO.AssetDatabase.AssetDatabase.<SaveSettings>b__92_0 () [0x000d9] in <83ab2467216c4a94834dc2201631b170>:0
at Colossal.IO.AssetDatabase.AssetDatabase.<SaveSettings>b__92_0 () [0x001a5] in <83ab2467216c4a94834dc2201631b170>:0
at Colossal.TaskManager+TaskQueue.RunNextTask (System.String name) [0x000b5] in <0563fbdd09a94ad8a503082b1bc79703>:0
Colossal.Logging.CustomLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:LogFormat(LogType, String, Object[])
Colossal.Logging.UnityLogger:Log(Level, String, Exception)
Colossal.Logging.UnityLogger:Error(Exception)
Colossal.<RunNextTask>d__11:MoveNext()
System.Runtime.CompilerServices.MoveNextRunner:InvokeMoveNext(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Runtime.CompilerServices.MoveNextRunner:Run()
System.Threading.Tasks.AwaitTaskContinuation:InvokeAction(Object)
System.Threading.Tasks.AwaitTaskContinuation:RunCallback(ContextCallback, Object, Task&)
System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(Task, Boolean)
System.Threading.Tasks.Task:FinishContinuations()
System.Threading.Tasks.Task:FinishStageThree()
System.Threading.Tasks.Task:FinishStageTwo()
System.Threading.Tasks.Task:Finish(Boolean)
System.Threading.Tasks.Task:TrySetException(Object)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetException(Exception)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetException(Exception)
Colossal.IO.AssetDatabase.<<SaveSettings>b__92_0>d:MoveNext()
System.Runtime.CompilerServices.MoveNextRunner:InvokeMoveNext(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Runtime.CompilerServices.MoveNextRunner:Run()
System.Threading.Tasks.AwaitTaskContinuation:InvokeAction(Object)
System.Threading.Tasks.AwaitTaskContinuation:RunCallback(ContextCallback, Object, Task&)
System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(Task, Boolean)
System.Threading.Tasks.Task:FinishContinuations()
System.Threading.Tasks.Task:FinishStageThree()
System.Threading.Tasks.Task`1:TrySetResult(VoidTaskResult)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(VoidTaskResult)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(Task`1)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetResult()
System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder:SetResult()
Colossal.IO.AssetDatabase.Internal.<DisposeAsync>d__5:MoveNext()
System.Runtime.CompilerServices.MoveNextRunner:InvokeMoveNext(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Runtime.CompilerServices.MoveNextRunner:Run()
System.Threading.Tasks.<>c:<.cctor>b__7_0(Object)
UnityEngine.WorkRequest:Invoke()
UnityEngine.UnitySynchronizationContext:Exec()
UnityEngine.UnitySynchronizationContext:ExecuteTasks()
PROBLEM SOLVED

I use three different profiles with my machines running CS2.

When you add new profiles to CS2 this creates uniquely different numbered save folders within the main save folder. I had a hunch the game was getting confused with which folder to use on launch and sent up the error.

My solution started by moving the folders out of saves and back them up on a drive other than "C".

I then started each profile separately and followed the game prompts to start a new game of which I saved immediately.

After each new save folder was generated I then replaced the saves in the correct folders.
The names (all digits) of the new folders were exactly the same as the originals. The process just put them back in the correct path per profile.

Everything works normally now.

If you are experiencing the same problem but only have one profile this may be worth a try
Originally posted by Major Kudos™:
PROBLEM SOLVED

I use three different profiles with my machines running CS2.

When you add new profiles to CS2 this creates uniquely different numbered save folders within the main save folder. I had a hunch the game was getting confused with which folder to use on launch and sent up the error.

My solution started by moving the folders out of saves and back them up on a drive other than "C".

I then started each profile separately and followed the game prompts to start a new game of which I saved immediately.

After each new save folder was generated I then replaced the saves in the correct folders.
The names (all digits) of the new folders were exactly the same as the originals. The process just put them back in the correct path per profile.

Everything works normally now.

If you are experiencing the same problem but only have one profile this may be worth a try

I am french so if I understand well :
Moving saves files out of C (copy)
Launching a game + recreating a save folder
Copy on the new folder ?
Ty
Originally posted by rochetjeremy:
Originally posted by Major Kudos™:
PROBLEM SOLVED

I use three different profiles with my machines running CS2.

When you add new profiles to CS2 this creates uniquely different numbered save folders within the main save folder. I had a hunch the game was getting confused with which folder to use on launch and sent up the error.

My solution started by moving the folders out of saves and back them up on a drive other than "C".

I then started each profile separately and followed the game prompts to start a new game of which I saved immediately.

After each new save folder was generated I then replaced the saves in the correct folders.
The names (all digits) of the new folders were exactly the same as the originals. The process just put them back in the correct path per profile.

Everything works normally now.

If you are experiencing the same problem but only have one profile this may be worth a try

I am french so if I understand well :
Moving saves files out of C (copy)
Launching a game + recreating a save folder
Copy on the new folder ?
Ty
Yes, see translation below.
PROBLÈME RÉSOLU

J'utilise trois profils différents sur mes machines exécutant CS2.

L'ajout de nouveaux profils à CS2 crée des dossiers de sauvegarde numérotés de manière unique dans le dossier principal. J'avais l'impression que le jeu ne savait plus quel dossier utiliser au lancement, ce qui a généré l'erreur.

Ma solution a commencé par déplacer les dossiers hors des sauvegardes et les sauvegarder sur un autre lecteur que « C ».

J'ai ensuite démarré chaque profil séparément et suivi les instructions du jeu pour démarrer une nouvelle partie, que j'ai sauvegardée immédiatement.

Après la création de chaque nouveau dossier de sauvegarde, j'ai replacé les sauvegardes dans les dossiers appropriés.
Les noms (tous les chiffres) des nouveaux dossiers étaient identiques aux originaux. Le processus les a simplement replacés dans le bon chemin par profil.

Tout fonctionne normalement maintenant.

Si vous rencontrez le même problème mais que vous n'avez qu'un seul profil, cela peut valoir le coup d'essayer.

Merci de marquer ce sujet comme solution s'il a fonctionné pour vous. Cela aidera également d'autres personnes.

Please mark this thread as solution if it worked for you.
That way others will be also helped.
Most of my saves were fine but another error came up on some saves with really long file name which also contained many symbols in them.

Simply shortening the ones that did not work corrected that problem.

Incidentally none of my files had any extra periods in them.

Some folks have said the update introduced an extra period that affected the extension. My problem was not that.
alediasw Mar 19 @ 1:33pm 
same issue here. Congrats to Paradox for the sh$%t job
Last edited by alediasw; Mar 19 @ 1:33pm
I figured it out?......CO/Paradox new game play for CS2 .... Find and figure out the issue ! :steammocking:
< >
Showing 1-15 of 16 comments
Per page: 1530 50

Date Posted: Mar 18 @ 1:02pm
Posts: 16