Process:
- Create a NuGet package called
FooPackage. The package consists of two DLLs:BarDLLis a C# wrapper,BazDLLis an F# library which defines a type calledQuxType. The package and the DLLs it contains are all version1.0.0. - Publish the package to our private NuGet host.
- Install
FooPackagein solutionCorgeSolutionand referenceQuxTpe. - Remove
QuxTypefromFooPackageand replaced it withQuuxType, meanwhile updating the package and the DLLs to version2.0.0 - Update the package in
CorgeSolutionwithout removing the reference toQuxType.
Expected result: compile error in CorgeSolution. Since the type is no longer included in the installed package, it should not be possible to reference it.
Actual result: no compile error.
Other details
Using ReSharper I can navigate to a decompiled version of QuxType. There, I find the DLL version number is reported as 1.0.0, and a folder reference is given. I can delete the folder containing V1.0.0, but NuGet restores it in the blink of an eye.
Question
What's going on here? Why is the deprecated type still available?