6 votos

Cómo compilar un complemento de ArcGIS Desktop en Visual Studio 2013

Tengo varios proyectos hechos en Visual Studio 2010, esos proyectos son complementos de ArcGIS Desktop. He sido cambio de equipo, y mi nuevo sólo tienen Visual Studio 2013 debido a algunas políticas de la empresa no se me permite instalar VS2010.

He intentado abrir estos proyectos en VS2013, y se abren sin problemas, pero cuando intento compilarlo, me da el siguiente problema:

ESRI.ArcGIS.AddIns.SDK, Version=10.2.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86. No se pudo cargar el archivo o ensamblado Microsoft.VisualStudio.Shell.9.0, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' o una de sus dependencias. El sistema sistema no puede encontrar el archivo especificado. Confirme que la declaración es correcta, que el ensamblado y todas sus dependencias están disponibles y que la tarea contiene una clase pública que implementa Microsoft.Build.Framework.ITask.

mi investigación hasta ahora me ha llevado a instalar el VS SDK, pero no estoy muy seguro acerca de cuál (2008 ... 2013)

¿Alguien tiene alguna solución posible para esto?

0 votos

Indagando en el error, llego a la C:\Program Archivos (x86) \MSBuild\Esri\ESRI.ArcGIS.AddIns.targets En el caso de VS2010 y VS2013...., se llama a algunas tareas de ESRI.ArcGIS.AddIns.SDK.dll, pero no entiendo cuál es la diferencia, entre VS2010 y VS2013 ¿usan diferentes versiones de MSBuild?

4voto

Bauna Puntos 176

Primero, compruebo que Microsoft.VisualStudio.Shell.9.0 estaba en el GAC, No estaba allí... :( luego procedo como Juho Vainio en Geonet sugiero : Visual Studio Command Prompt --> Run as Administrator --> gacutil /i Microsoft.VisualStudio.Shell.9.0.dll, pero falló porque no estaba dando la pat completa de la dll, así que la busco en el SDK de Visual Studio 2008, y Voila!!! aparece en el GAC enter image description here

pero el proyecto sigue sin compilar, así que compruebo en el GAC real:

C:\Windows\Microsoft.NET\assembly

y encontró que el archivo no existe ni en la carpeta GAC_32, ni GAC_64, es más, existe en la carpeta GAC_MSIL, así que....i tomó la carpeta C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.Shell.9.0 y lo copié en las carpetas GAC_32 y GAC_64.

Ahora el proyecto se compila.

4voto

Jim Blizard Puntos 565

Aquí hay una respuesta adicional ya que acabo de pasar por este proceso con ArcGIS 10.3 y Visual Studio 2015. Voy a pegar la respuesta que he publicado en https://geonet.esri.com/message/579779#579779 . Hay varios pasos, pero ninguno de ellos es demasiado difícil.

En primer lugar, para obtener el SDK instalado, es necesario agregar algunas claves de registro para que ArcGIS piensa que tiene una versión compatible de Visual Studio instalado.

  1. Añadir valor de cadena de registro:

    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\12.0\InstallDir

    (o la versión que busque el instalador del SDK) y configúrela:

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\

    (o cualquier versión de Visual Studio que esté intentando utilizar).

  2. Añadir valor de cadena de registro:

    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\12.0\ShellFolder  

    (o la versión que busque el instalador del SDK) y configúrela:

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\

    (o cualquier versión de Visual Studio que esté intentando utilizar).

En segundo lugar, si está trabajando con un proyecto existente creado para/con una versión anterior de ArcGIS y Visual Studio y creando un complemento, es posible que tenga que editar el archivo de proyecto que crea el complemento para corregir parte de su tarea de creación. Más información en http://support.esri.com/en/knowledgebase/techarticles/detail/45263 .

  1. Cambia

    <Import Project="$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets" Condition="Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets')" />

    a

    <Import Project="$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets" Condition="Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets')" />

    y cambiar

    <Warning Text="Unable to create .esriAddin; missing ESRI ArcGIS Add-in SDK component(s)." Condition="!Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets')" />

    a

    <Warning Text="Unable to create .esriAddin; missing ESRI ArcGIS Add-in SDK component(s)." Condition="!Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets')" />.

    Como alternativa, puede copiar y cambiar el nombre del archivo ESRI.ArcGIS.AddIns.targets existente a ESRI.ArcGIS.AddIns.11.targets. MSBuildExtensionsPath se encuentra en el directorio Archivos de programa (x86).

En tercer lugar, si estás creando un complemento, tienes que editar el archivo .targets del paso anterior para buscar la versión de Visual Studio que estás intentando utilizar.

  1. En

    C:\Program Files (x86)\MSBuild\Esri\ESRI.ArcGIS.AddIns.11.targets

    cambiar

    <UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="PackageAddIn" Condition="'$(VisualStudioVersion)' == '12.0'" />
    <UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ValidateAddInXMLTask" Condition="'$(VisualStudioVersion)' == '12.0'" />
    <UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ConvertToRelativePath" Condition="'$(VisualStudioVersion)' == '12.0'" />
    <UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ResolveAddInReference" Condition="'$(VisualStudioVersion)' == '12.0'" />

    a

    <UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="PackageAddIn" Condition="'$(VisualStudioVersion)' == '14.0'" />
    <UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ValidateAddInXMLTask" Condition="'$(VisualStudioVersion)' == '14.0'" />
    <UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ConvertToRelativePath" Condition="'$(VisualStudioVersion)' == '14.0'" />
    <UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ResolveAddInReference" Condition="'$(VisualStudioVersion)' == '14.0'" />

    Como alternativa, puede eliminar la Condition="'$(VisualStudioVersion)' == '12.0'" de estas entradas.

En cuarto y último lugar, necesitas una copia del shell de Visual Studio 2013 registrada en el GAC. Pude copiar esto desde otra máquina (que se encuentra en C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.Shell.12.0) pero si no tienes acceso a una máquina con VS2013 instalado puedes descargar el SDK de Visual Studio 2013 desde https://www.microsoft.com/en-us/download/details.aspx?id=40758 y cópialo desde allí.

  1. Encuentre una copia del Microsoft.VisualStudio.Shell.12.0.dll para Visual Studio 2013 y cópielo en su equipo. Regístrelo en el GAC utilizando un símbolo del sistema elevado introduciendo gacutil /i Microsoft.VisualStudio.Shell.12.0.dll desde la ubicación en la que copió el archivo en su máquina. Tenga en cuenta que ahora tendrá dos versiones de este archivo en el GAC, una de Visual Studio 2013 y otra de Visual Studio 2015. Esto se puede ver introduciendo gacutil /l desde el símbolo del sistema para listar todas las entradas del GAC. Mis entradas se ven como:

    Microsoft.VisualStudio.Shell.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
    Microsoft.VisualStudio.Shell.12.0, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL

Espero que esto ayude a otros.

Shea

2voto

Harper Puntos 131

Estos son los pasos que he seguido varias veces para conseguir que los addins funcionen en versiones de visual studio distintas a 2010, usando el arcobjects sdk 10.2.2. Mi conjetura es que esto probablemente funcionaría con 10.1 también.

  1. Instale la versión de visual studio que desea utilizar

  2. Instale visual studio 2010 y ArcMap 10.2.2 (requisitos para arcobjects 10.2.2)

  3. Instale ArcObjects SDK (10.2.2 es la versión que he utilizado)

  4. Instalar Visual Studio SDK 2010 http://www.microsoft.com/en-us/download/details.aspx?id=2680

  5. Ejecute el símbolo del sistema de Visual Studio como administrador

    a. cd "C:\Program Files (x86)\Microsoft Visual Studio 2010 SDK\VisualStudioIntegration\Common\Assemblies\v2.0"

    b. gacutil /i Microsoft.VisualStudio.Shell.9.0.dll

  6. Construya el addin (visual studio debe ser reiniciado si lo tenía abierto) Success

1voto

MrPhys Puntos 33

Visual Studio 2013 no es compatible con ArcObjects SDK. Sé que es una mierda. Sin embargo, puede forzar VS2013 para construir un proyecto AddIn si usted tiene una copia de los archivos de abajo:

  1. Copia ESRI.ArcGIS.AddIns.targets a C:\Program Archivos \MSBuild\ESRI
  2. ESRI.ArcGIS.AddIns.SDK.dll debe añadirse a la caché de ensamblaje mediante gacutil.exe

No recuerdo de dónde saqué esta información ni cómo lo hice exactamente, pero ahora me funciona.

0 votos

Ya tengo el archivo de destino en la ubicación que usted señala, también el ESRI.ArcGIS.AddIns.SDK.dll está en el GAC. ¿Hay alguna diferencia si utilizo gacutil.exe?

0voto

Brian Stewart Puntos 4553

Yo tenía un problema similar y lo he solucionado utilizando devenv.exe en lugar de msbuild.exe como se describe en Creación del complemento de ArcMap mediante la línea de comandos

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X