¿ClickOnce solo mira el archivo de manifiesto de la aplicación para determinar qué archivos dll copiar en la máquina del cliente o también interroga las partes internas de un conjunto para determinar los archivos de dependencia?ClickOnce - El archivo ya existe - ¿Por qué un archivo DLL intenta copiarse dos veces con ClickOnce?
La razón por la que estoy pidiendo es porque me estoy haciendo el siguiente error ClickOnce cuando se trata de lanzar una aplicación de WPF 4 .NET que se ha publicado con ClickOnce: C:\Users\CNelson\AppData\Local\Temp\Deployment\PGX6P33A.35N\AJQL8AC8.D60\tx16_rtf.dll
El archivo ya existe.
Este error comenzó después de que he incluido una referencia a dos dlls de .NET de terceros que hacen referencia a un archivo dll no administrado (tx16_rtf.dll). Quiero que tx16_rtf.dll se copie en la carpeta bin de la PC del cliente, así que lo he incluido en mi proyecto y configuré Build Action en 'Content' y el directorio Copy to Output en 'Copy Always'.
Sin embargo, por algún motivo, cuando intento iniciar la aplicación, ClickOnce intenta copiar el archivo 'tx16_rtf.dll' dos veces, lo que da como resultado un error.
Si miro el archivo de manifiesto de despliegue, puedo ver claramente una y solo una entrada para el archivo 'tx16_rtf.dll'. Entonces, mi pregunta es, ¿por qué ClickOnce intenta copiar el archivo 'tx16_rtf.dll' dos veces si solo existe una vez en el archivo de manifiesto de despliegue?
A continuación se muestra un fragmento de la implementación de archivos de manifiesto que ‘tx16_rtf.dll’ referencias:
<file name="tx16_rtf.dll" size="839680">
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>V6i2QcARl3+1SJHCugoazb9zrOY=</dsig:DigestValue>
</hash>
</file>
¿Cuál fue su solución a este problema? –
Mi solución fue no hacer referencia a las dlls no administradas en mi proyecto. Por lo tanto, ClickOnce no los incluirá en el manifiesto. En cambio, lo que hice fue incluir los archivos dll no administrados en un archivo zip (estableciendo Build Action en 'Content') y cuando mi aplicación se inicia, descomprimirá los dlls no administrados en el directorio de ejecución actual ... y todo funcionó como un encanto. – ChrisNel52