Hi @Abhishek Modi (amodi) ,
The existing answer covers by AI the basics well, but there are three things it missed that directly affect your integration.
- In-process hosting AppDomain isolation
If your product invokes DTExec out-of-process (shell spawn), you're fine. But if you're hosting in-process or sharing an AppDomain, DTExec.exe.config binding redirects only cover DTExec's AppDomain not yours. You'll need a matching redirect in your own config, otherwise expect:
- FileLoadException
- MissingMethodException
- Type identity mismatches where typeof(SqlConnection) != typeof(SqlConnection) across the boundary these are especially hard to diagnose
- NuGet version vs CLR identity version critical for GAC deployment
The existing answer never made this actionable. 5.0.0.0 is the CLR identity version, not the NuGet package version. Concretely:
NuGet 5.1.5 → CLR identity 5.0.0.0 satisfies redirect
NuGet 5.2.2 → CLR identity 5.0.0.0 satisfies redirect
NuGet 6.0.0 → CLR identity 6.0.0.0 breaks falls outside range
Deploying a 6.x package to your GAC thinking it's "newer = better" will silently break the redirect.
- Don't hardcode 5.0.0.0 in your deployment logic
When SSIS adopts SqlClient 6.x, this redirect ceiling moves up. Read newVersion directly from DTExec.exe.config at deploy time so your GAC management stays automatically aligned across SQL Server updates.
- Will the range change in future updates?
Almost certainly yes, when Microsoft moves SSIS to SqlClient 6.x. Expect it to become.
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
The 0.0.0.0 floor always stays only the ceiling and target version move up with each major SqlClient adoption.
Practical tip: Don't hardcode 5.0.0.0 in your deployment or GAC management logic. Instead, read the newVersion value directly from DTExec.exe.config at deploy time that way your integration automatically stays aligned whenever SQL Server ships an update.
Thanks,
Akhil.