I am using Dapper 1.37 and Dapper.SimpleCRUD 1.3.0 in a couple of my projects, added as NuGet packages.
Over time Visual Studio (2013 update 4) has ground to a halt, taking 10 or 20 seconds to load each source file into the editor. Looking into its OS activity using Process Monitor, I see it traverses the entire solution's directories on each file load, trying to create/open SqlMapper.cs in each directory.
Each subdirectory in each project (PROJECT_PATH) in the solution directory has a series of events like this in the Process Monitor trace:
4:04:11.5955306 p.m. devenv.exe 8368 FASTIO_NETWORK_QUERY_OPEN PROJECT_PATH\lib FAST IO DISALLOWED
4:04:11.5955677 p.m. devenv.exe 8368 IRP_MJ_CREATE PROJECT_PATH\lib SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
4:04:11.5956773 p.m. devenv.exe 8368 FASTIO_QUERY_INFORMATION PROJECT_PATH\lib SUCCESS Type: QueryBasicInformationFile, CreationTime: 8/07/2014 2:12:02 p.m., LastAccessTime: 8/07/2014 2:12:02 p.m., LastWriteTime: 8/07/2014 2:12:02 p.m., ChangeTime: 8/07/2014 2:12:02 p.m., FileAttributes: D
4:04:11.5956858 p.m. devenv.exe 8368 IRP_MJ_CLEANUP PROJECT_PATH\lib SUCCESS
4:04:11.5956948 p.m. devenv.exe 8368 IRP_MJ_CLOSE PROJECT_PATH\lib SUCCESS
4:04:11.5957298 p.m. devenv.exe 8368 FASTIO_NETWORK_QUERY_OPEN PROJECT_PATH\lib\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs FAST IO DISALLOWED
4:04:11.5957464 p.m. devenv.exe 8368 IRP_MJ_CREATE PROJECT_PATH\lib\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs PATH NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
4:04:11.5957751 p.m. devenv.exe 8368 FASTIO_NETWORK_QUERY_OPEN PROJECT_PATH\lib\dapper-dot-net\Dapper NET40\SqlMapper.cs FAST IO DISALLOWED
4:04:11.5957902 p.m. devenv.exe 8368 IRP_MJ_CREATE PROJECT_PATH\lib\dapper-dot-net\Dapper NET40\SqlMapper.cs PATH NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
4:04:11.5958125 p.m. devenv.exe 8368 FASTIO_NETWORK_QUERY_OPEN PROJECT_PATH\lib\Dapper NET40\SqlMapper.cs FAST IO DISALLOWED
4:04:11.5958237 p.m. devenv.exe 8368 IRP_MJ_CREATE PROJECT_PATH\lib\Dapper NET40\SqlMapper.cs PATH NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
Other developers using the same solution do not get events referring to SqlMapper.cs. I have tried:
- Removing all Dapper NuGet packages
- Removing Dapper.pdb and Dapper.SimpleCRUD.pdb from all projects where I found it.
- grep the entire solution for SqlMapper.cs to see what is referencing it (only the .pdb files)
- Adding a SqlMapper.cs in the first directory that it looks for it in - eliminates the PATH NOT FOUND message for that directory but continues to scan all the others.
Hoping someone can help get me back to the snappy days of yore...
I re-cloned my repo.
The problem went away.