-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
I'm working with System.Data.SqlClient making some perf improvements. To produce sensible PR's in need to show the performance difference before and after my changes. I'm having trouble doing this and my options keep decreasing.
I can't use BDN and advanced inner-loop method because because I can't get BDN to work with CoreRun correctly issue and I can't use a profiler anymore because it is no longer compatible with .net core. So I need to produce packages and consume them.
The only way to reliably produce a package seems to be to use build -allconfigurations but i'm having problems with that as well. A clean master will produce a nuget package in artifacts\packages\Debug that BDN (in inproc mode) will accept and use because it's compiled in release configuration. I know it has to be this package because i'm forcing the version in the project and that version can only come from my build folder, my nuget.config file only includes the debug packages directory.
I've just done a clean -all and build -allconfigurations on my branch and when I clear the nuget cache and restore the reference to my newly compiled package version then run I'm told that the package isn't compiled in release mode. There are a lot of asserts in the library, the debug and release versions are 200K+ different in size and so there will be a performance difference if I disable the debug warning in BDN. I need a release version. My branch contains no changes to the build configuration or any project files, the code changes are very small and isolated.
So if you're still following in want to build nuget for System.Data.SqlClient which contains release configuration binaries. First I delete the nuget package from artifacts\packages\Debug because I want to recreate it and be certain I've rebuilt it. Now I need to re-create it.
build src\System.Data.SqlClient\pkg [|-release|-debug|-allconfigurations]command completes successfully but does nothing, the package isn't re-createdbuild src\System.Data.SqlClient -release /p:BuildPackages=truecommand completes but doesn't create the packagedotnet msbuild src\System.Data.SqlClient\pkg\System.Data.SqlClient.pkgprojfails with an msbuild task error, will file an issue.build /p:BuildAllConfigurations=true /p:BuildNative=false /p:BuildManaged=false /p:BuildPackages=truecreates a package with debug build inside
So. How? Any why would code only changes affect what binary gets put into the nuget package?