Docker containers failing to run

About 6 months ago (maybe 4) we upgraded everything to .NET 8 + SS 8.5.

And everything has been great. We have a bitbucket pipelines build that builds our docker container, pushes it to AWS ECR, then uses beanstalk to pull and run the image.

And out of the blue all docker containers start throwing this error:

Which makes no sense:

  1. We aren’t on ServiceStack.OrmLite v6 anymore (see image)

image

  1. I haven’t changed C# dependencies in months (since the upgrade)

Everything worked flawlessly until around yesterday. I built yesterday and started seeing the failure, but it could have started in the last 2 days (I didn’t do a build the day before). My last successful build/deploy was April 14th.

Did some transitive dependency in Nuget possibly get flubbed in the ServiceStack.* namespace maybe in a release? I feel like I’m going crazy here.

I’ve even built a local docker image, same thing when I docker run. So it’s not just AWS.

Here is our project dependency list as it relates to SS:

<PackageReference Include="ServiceStack" Version="8.*" />
<PackageReference Include="ServiceStack.Extensions" Version="8.5.2" />
<PackageReference Include="ServiceStack.Logging.Serilog" Version="8.5.2" />
<PackageReference Include="ServiceStack.OrmLite.SqlServer.Data" Version="8.5.2" />
<PackageReference Include="ServiceStack.RabbitMq" Version="8.5.2" />
<PackageReference Include="ServiceStack.Redis" Version="8.5.2" />
<PackageReference Include="ServiceStack.Server" Version="8.5.2" />

Confirmed fix:

Changing this:

<PackageReference Include="ServiceStack" Version="8.*" />

To be more explicit:

<PackageReference Include="ServiceStack" Version="8.5.2" />

Fixes the issue. So I’m not sure if maybe the latest release (I see one 2 days ago) messed us up, or if the 8.7.0 release has a weird transitive dependency on OrmLite v6.

I’m honestly not sure how that wildcard got in there. I never use wildcard versions for NuGet. Hopefully this helps someone else.

8.* just means to use the latest version which should also work (and what all templates use), but whatever version you end up using should be used for all packages, not doing so will mean it will install packages which different versions which can result in binary incompatibilities like this.