DLL bloqueado – Visual Studio 2010 C ++

Actualmente estoy conectado a una máquina y mi problema actual implica un paso de compilation personalizado que tiene problemas para copyr un .dll en el directory Bin porque Windows dice que no puede acceder al file porque lo está usando actualmente otro process.

Puedo reproducir esto en varios otros proyectos. La secuencia de events es que construyo una versión exitosamente, hago una testing, obtengo otra SHA cuando hago una bisección de git e bash crear una versión de esa SHA sin hacer un git clean -xfd (intencionalmente, porque estoy intentando almacenar en caching tantos datos reutilizables como sea posible). Lo extraño es que traté de usar Process Explorer (procexp) y tasklist /m <locked_dll.dll> para search lo que sea que tasklist /m <locked_dll.dll> este dll, y no puedo encontrar nada que sostenga el dll. Estoy en una count que no es de administrador, y no estoy seguro de si eso está causando que Windows me oculte ciertos processs. Reiniciar la máquina ayuda, pero esa no es una solución aceptable ya que estoy tratando de automatizar las cosas. Puedo eliminar el .dll, y cuando bash crear el proyecto en VS, me quejaré de que aún no puede acceder al dll cuando intente copyrlo en la carpeta Bin. ¿Algunas ideas? Voy a seguir investigando el tema, pero a partir de ahora, estoy algo perplejo.

EDITAR: Esta parece ser una pregunta duplicada ( Error: no se puede acceder al file bin / Debug / … porque está siendo utilizado por otro process ), pero lo dejaré abierto para ver si alguien ha encontrado algo nuevo relacionado con el tema.

He visto este problema en VS 2010 con una gran solución .Net con múltiples proyectos. Cada caso que he visto hasta ahora pertenece a tener un proyecto con DLL de dependencia que otro proyecto también usa, y ese otro proyecto también usa el primer proyecto como reference, y también usa las mismas DLL de dependencia que resultan ser una versión diferente de el primer proyecto

Para describirlo de una manera diferente:

El proyecto A depende de v1 de DLL A

El proyecto B depende del proyecto A y v2 de DLL A

Ambos proyectos A y B están en la misma solución

La solución es usar la misma versión de DLL A. Normalmente me encuentro con esto cuando me actualizo a una nueva versión de SQLite, y olvido actualizar la dependencia en todos mis proyectos.

Después de hablar con algunos compañeros de trabajo, encontré la solución a mi problema. procedxp y tasklist no vieron qué process estaba bloqueando el dll porque no había ningún process que bloqueara el dll en esa máquina en particular.

Tengo una configuration de hardware donde la máquina A (una PC host) está conectada a la máquina B (actúa como un cliente que recupera las instrucciones de la máquina A) usando un interruptor de networking. la máquina B ejecuta los mismos binarys que enlazan con los mismos dll. Por lo tanto, obviamente, ejecutando procexp o tasklist en la máquina A no se verá nada bloqueando la dll porque la máquina B es la culpable.