support .exe assembly references
I can add a reference to an assembly that's blah.exe but I can't consume types inside it. If I copy blah.exe to blah.dll everything's fine, but that would appear to be a dull and unnecessary (and forgettable) step.
If there's a valid reason why this can't be delivered then fine, I'll live with it, but - granted I know diddly-squat about LinqPad internals - it doesn't seem like it'd be hard to add.
E. Monk commented
The fact that renaming it works tells me that it's a .NET Framework executable. Referencing those from .NET or .NET Core at runtime is a bit hairy and can cause serious problems, even if they strictly adhere to .NET Standard interfaces. As such I think it's a good idea to require an extra step in the process so that you don't do it by accident.
For reference, .NET Core and .NET (>= v5) apparently never produce a valid assembly with the '.exe' extension. Instead they put a native launcher executable alongside your assembly DLL, or in single-file builds they build your assembly and combine it with a native wrapper. I tried a variety of combinations of build settings and packing, all produce native apps that are not valid .NET assemblies.