Tengo un proyecto de instalación en .NET. Cuando guardo el proyecto y los otros proyectos en subversion, el proyecto de instalación ya no se compila. Aparece el error "No se pueden actualizar las dependencias del proyecto".
winforms
deployment
dependencies
setup-project
Jason N. Gaylord
fuente
fuente
Cerrar VS2010 y luego volver a abrirlo siempre me ha funcionado :)
fuente
Tuve el mismo problema, pero ninguna de las resoluciones mencionadas pareció funcionar para mí. Reconstruir el proyecto de configuración funcionaría, pero es una molestia, ya que incluimos los resultados del proyecto de más de 30 proyectos.
Lo que encontré que funciona es un enfoque muy similar al que hizo @Marc.
En todos los casos, tuve varias referencias al mismo dll (no estoy seguro de cómo sucedió esto)
Ejemplo de referencia correcta:
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_11EC89A306FFB83A269ACC2BF8D8462B" { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" "AssemblyAsmDisplayName" = "8:Some.OrOther.Lib, Version=1.601.4042.16978, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_11EC89A306FFB83A269ACC2BF8D8462B" { "Name" = "8:Some.OrOther.Lib.dll" "Attributes" = "3:512" } } "SourcePath" = "8:Some.OrOther.Lib.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_79891234C744498C83755DDEA682F0BF" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" "Hidden" = "11:FALSE" "System" = "11:FALSE" "Permanent" = "11:FALSE" "SharedLegacy" = "11:FALSE" "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" "IsDependency" = "11:TRUE" "IsolateTo" = "8:" }
Ejemplo de referencia incorrecta:
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_11EC89A306FFB83A269ACC2BF8D8462B" { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" "AssemblyAsmDisplayName" = "8:Some.OrOther.Lib, Version=1.601.4042.16978, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { } "SourcePath" = "8:Some.OrOther.Lib.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_79891234C744498C83755DDEA682F0BF" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" "Hidden" = "11:FALSE" "System" = "11:FALSE" "Permanent" = "11:FALSE" "SharedLegacy" = "11:FALSE" "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" "IsDependency" = "11:TRUE" "IsolateTo" = "8:" }
También recibí la misma advertencia "Dos o más objetos tienen la misma ubicación de destino ('[targetdir] \ MyAssembly.dll')" que advierte que @Marc obtuvo ... pero el proyecto de instalación se compila y funciona bien.
fuente
File
referencias de ensamblado. Funcionó perfectamente.El enlace correcto para hot-fix para VS2010 es:
http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30681
Funciona bien después de la instalación
fuente
Tuve un problema similar y encontré una solución en esta larga y antigua discusión sobre MSDN .
Como respondió el usuario 'Jeff Hunsaker' el jueves 26 de agosto de 2010 a las 17:51 (no es posible el enlace directo):
Observé qué dependencias informó Visual Studio y escribí un script para corregirlas en caso de que sea necesario.
Tenga en cuenta que esto ahora me da una advertencia "Dos o más objetos tienen la misma ubicación de destino ('[targetdir] \ MyAssembly.dll'). Pero puedo vivir con eso.
fuente
Esto me resolvió el mismo problema: agregué los ensamblados que se mencionaron en el mensaje de error al GAC. Cuando volví a compilar el proyecto, los dll aparecieron en "Dependencias detectadas" en el Explorador de soluciones y obtuve el mismo error. Luego excluí los dll (haga clic con el botón derecho y seleccione Excluir) y el proyecto finalmente se compiló correctamente.
fuente
El problema puede ser causado por archivos huérfanos en la sección "Implementable" -> "Archivo" del archivo .vdproj. Puede verificar esto eliminando todos los archivos del proyecto de instalación en Visual Studio (primero haga una copia de seguridad). Si abre el archivo .vdproj con un editor de texto y aún ve entradas en la sección "Archivo", tiene este problema. Puede anotar las claves de estos archivos y eliminarlos del archivo .vdproj original y debería funcionar de nuevo.
Como alternativa, compile este programa de solución rápida (probado solo con Visual Studio 2010):
using System; using System.Collections.Generic; using System.Text; using System.IO; class Program { static void Main(string[] args) { try { if (args.Length == 0) { Console.WriteLine("FixVDProj <path to .vdproj file>"); return; } if (!File.Exists(args[0])) { throw new Exception("File " + args[0] + " does not exist!"); } string[] strarSource = File.ReadAllLines(args[0]); List<string> listDest = new List<string>(); List<string> listKnownKeys = new List<string>(); int iSection = 0; bool bAccept = true; bool bNeedFix = false; foreach (string strLine in strarSource) { switch (iSection) { case 0: if (strLine.Trim() == "\"DeployProject\"") { listDest.Add(strLine); iSection++; } else { throw new Exception("\"DeployProject\" not found"); } break; case 1: if (strLine.Trim() == "\"Hierarchy\"") { iSection++; } listDest.Add(strLine); break; case 2: if (strLine.Trim().StartsWith("\"MsmKey\" = ")) { int p = strLine.IndexOf('='); string strMsm = strLine.Substring(p + 1).Trim(); if (strMsm.StartsWith("\"8:") && strMsm.EndsWith("\"")) { listKnownKeys.Add(strMsm.Substring(3, strMsm.Length - 4)); } else { throw new Exception("Invalid MsmKey " + strMsm); } } else if (strLine.Trim() == "\"Deployable\"") { iSection++; } listDest.Add(strLine); break; case 3: if (strLine.Trim() == "\"File\"") { iSection++; } listDest.Add(strLine); break; case 4: if (strLine.Trim() == "{") { iSection++; } listDest.Add(strLine); break; case 5: if (strLine.Trim() == "}") { listDest.Add(strLine); iSection = -1; // finished } else if (strLine.Trim().StartsWith("\"") && strLine.Contains(':')) { int p = strLine.IndexOf(':'); string strKey = strLine.Substring(p + 1, strLine.Length - p - 2); if (listKnownKeys.Contains(strKey)) { Console.WriteLine("Accepted key " + strKey); bAccept = true; listDest.Add(strLine); } else { Console.WriteLine("Invalid key " + strKey + " removed"); bAccept = false; bNeedFix = true; } } else if (strLine.Trim() == "{") { if (bAccept) { listDest.Add(strLine); } iSection++; } else { listDest.Add(strLine); } break; case 6: case 7: case 8: case 9: if (strLine.Trim() == "{") { iSection++; } else if (strLine.Trim() == "}") { iSection--; } if (bAccept) { listDest.Add(strLine); } break; case 10: throw new Exception("File structure depth exceeded!"); default: listDest.Add(strLine); break; } } if (bNeedFix) { File.Copy(args[0], args[0] + ".bak", true); File.WriteAllLines(args[0], listDest); Console.WriteLine("File " + args[0] + " has been fixed!"); } else { Console.WriteLine("File " + args[0] + " did not need fix!"); } } catch (Exception e) { Console.WriteLine(e.ToString()); } } }
fuente
Logré solucionar este problema eliminando el proyecto del instalador de la solución y luego volviendo a agregar el proyecto existente.
fuente
Reiniciar VS2010 no funcionó para mí, pero logré que todo funcionara haciendo una 'Solución limpia', luego una 'Solución de compilación'. Sin embargo, probar 'Reconstruir solución' después de la limpieza no funcionó. Entonces podría ejecutar la Solución con F5 como de costumbre.
fuente
Cuando recibo este error, encuentro que mi proyecto de implementación de VS2010 (.vdproj) está 'dañado'. Específicamente, los elementos de la sección FILE del archivo VDPROJ tienen GUID que faltan en la sección HIERARCHY del archivo VDPROJ. Esto se describe en detalle a continuación.
1) Los proyectos de implementación de VS2010 incluyen las siguientes secciones:
"Hierarchy" { } "Deployable" { "File" { } }
2) La sección JERARQUÍA contiene GUID para cada elemento (por ejemplo, archivo) agregado al proyecto de implementación. Además, cada archivo agregado al proyecto aparece como un elemento en la sección DESPLEGABLE> ARCHIVO . El siguiente ejemplo muestra una configuración normal para el archivo msimg32.dll . Tenga en cuenta el GUID de adaptación (es decir _1C15DB39774F7E79C84F1CC87ECFD60A) en los JERARQUÍA y FILE secciones.
"Hierarchy" { "Entry" { "MsmKey" = "8:_1C15DB39774F7E79C84F1CC87ECFD60A" "OwnerKey" = "8:_0C67A6B6004040DC93A0113E1100615D" "MsmSig" = "8:_UNDEFINED" } } "Deployable" { "File" { "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1C15DB39774F7E79C84F1CC87ECFD60A" { "SourcePath" = "8:MSIMG32.dll" "TargetName" = "8:MSIMG32.dll" … more information ... } } }
3) Mis proyectos de implementación de VS2010 pueden corromperse de dos maneras:
a) Un elemento de la sección ARCHIVO se duplica y el elemento duplicado recibe un GUID que no aparece en la JERARQUÍA sección .
b) El GUID asociado con un elemento en la sección ARCHIVO se ha eliminado de la sección JERARQUÍA (es decir, el elemento en la sección ARCHIVO es huérfano).
3a) Ejemplo del primer problema: elemento duplicado en sección ARCHIVO :
En este ejemplo, el archivo msimg32.dll tiene dos entradas en la sección FILE . La primera entrada (es decir, correcto) tiene un GUID coincidente (es decir _1C15DB39774F7E79C84F1CC87ECFD60A) en el JERARQUIA sección, pero el GUID para el segundo (es decir, error) entrada (es decir 2DDC4FA12BFD46DEAED0053D23331348) no aparece en la JERARQUIA sección.
"Hierarchy" { "Entry" { "MsmKey" = "8:_1C15DB39774F7E79C84F1CC87ECFD60A" "OwnerKey" = "8:_0C67A6B6004040DC93A0113E1100615D" "MsmSig" = "8:_UNDEFINED" } } "Deployable" { "File" { "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1C15DB39774F7E79C84F1CC87ECFD60A" { "SourcePath" = "8:MSIMG32.dll" "TargetName" = "8:MSIMG32.dll" … more information ... } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2DDC4FA12BFD46DEAED0053D23331348" { "SourcePath" = "8:MSIMG32.dll" "TargetName" = "8:MSIMG32.dll" … more information ... } } }
3b) Ejemplo de segundo problema: artículo huérfano en el sección ARCHIVO :
En este ejemplo, el archivo msimg32.dll tiene una entrada en la sección FILE . Pero el GUID asociado con esta entrada (es decir, A515046ADA6244F2A260E67625E4398F) no tiene una entrada coincidente en (es decir, falta en) la sección JERARQUÍA .
"Hierarchy" { } "Deployable" { "File" { "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A515046ADA6244F2A260E67625E4398F" { "SourcePath" = "8:MSIMG32.dll" "TargetName" = "8:MSIMG32.dll" … more information ... } } }
4) Solución: Para los dos problemas ilustrados anteriormente, la solución es eliminar el elemento huérfano en la sección ARCHIVO .
El siguiente ejemplo muestra cómo aparecería la sección ARCHIVO en el punto 3a anterior después de que se haya eliminado la segunda entrada para msimg32.dll .
"Hierarchy" { "Entry" { "MsmKey" = "8:_1C15DB39774F7E79C84F1CC87ECFD60A" "OwnerKey" = "8:_0C67A6B6004040DC93A0113E1100615D" "MsmSig" = "8:_UNDEFINED" } } "Deployable" { "File" { "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1C15DB39774F7E79C84F1CC87ECFD60A" { "SourcePath" = "8:MSIMG32.dll" "TargetName" = "8:MSIMG32.dll" … more information ... } } }
5) Encontré que las entradas dañadas en VDPROJ solo ocurrieron para:
fuente
Aquí hay un par de soluciones que funcionan:
1) Eliminar uno de los archivos DLL problemáticos del proyecto de instalación y luego volver a agregar solo ese resolvió el problema por mí. Esto funcionó incluso cuando había muchas DLL con el problema. Eliminar y agregar solo uno de ellos activó VS2010 para arreglarlos todos de alguna manera.
2) Reconstruya la solución, luego intente actualizar las dependencias nuevamente. La reconstrucción ayuda a Visual Studio a descubrir cuáles son las dependencias, porque puede tener dificultades para encontrar las dependencias sin nada construido.
3) Reinicie Visual Studio
La revisión VS2010 vinculada anteriormente no funcionó para mí. A veces, reiniciar VS2010 solucionará el problema y cuando eso no funcione, hacer lo anterior funciona.
fuente
Esto también puede suceder cuando está intentando depurar y ha seleccionado el modo de lanzamiento. Me tienes ahora :(
fuente
Me gustaría agregar que obtengo el mismo error cuando edito el proyecto de implementación desde mi computadora en lugar de la computadora compiladora dedicada.
La última vez que recibí ese error, necesitaba revertir los últimos cambios y volver a hacerlo desde la computadora compiladora dedicada.
fuente