I just thought that the dubug version has a little more debugging information than the release version, and there should be no big difference. HoweverCodeThe DLL generated by debug compilation is available, but the DLL generated by release compilation cannot be run. After some troubleshooting, we found that there are some differences between debug and release.
The problem lies in the generation time of static objects in the static class. This is a singleton code:
Public Class
{
Private Static class aholder
{
Public static readonly a instance = new ();
}
Public static a instance ()
{
Return aholder. instance;
}
Private ()
{Initialization code}
}
The initialization code contains a static attribute value B that accesses another class. B is assigned a value.
In debug, the B value can be accessed normally. In release, the initial value of B is accessed. That is to say, the context of the initialization code running in two versions is different.
As for the principle and other questions, you need to taste them later.