5 votos

Necesita ayuda para convertir 9.3 código para el registro .dll a 10.1

Este es mi código para registrar la DLL (im usando ArcMap 9.3)

Private Sub regDLL(ByVal dllName As String)
        Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(dllName)
        Dim regAsm As New RegistrationServices()
        Dim bResult As Boolean = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase)
    End Sub

Este mismo código no funciona en ArcGIS 10.1, ya que hay esriRegAsm. Alguien sabe cómo convertir así dat funcionará?? Estoy utilizando Visual Studio 10.1.

2voto

auramo Puntos 161

Suponiendo que esto es parte de un instalador/de configuración de proyecto ver Cómo implementar un componente personalizado mediante un proyecto de instalación, en particular la sección "Registro de la CustomComponent .archivo dll mediante ESRIRegAsm.exe".

También se podría tratar de convertir su proyecto en una de ArcMap complemento. Ver Cómo migrar de componentes COM add-ins.

1voto

Huck Puntos 267

Abra el símbolo del sistema y ejecutar como administrador Vaya a "C:\windows\microsoft.net\framework\v2.0.5777\" Ejecutar un comando "regasm" con la ruta "\YourDll.dll" /codebase Usted recibirá mensaje 0 "Tipo registrado con éxito"

1voto

Goldorak84 Puntos 893

Teníamos el mismo problema. Para resolver esto, añadimos las siguientes líneas en su configuración. También puede crear un archivo por lotes para ejecutar las mismas.

en el de 64 bits OS

"%commonprogramfiles(x86)%\ArcGIS\bin\esriRegasm.exe" "PATH TO YOUR DLL" /p:Desktop /s 

en os de 32 bits

"%commonprogramfiles%\ArcGIS\bin\esriRegasm.exe" "PATH TO YOUR DLL" /p:Desktop /s

0voto

Gord Puntos 1434

muchas gracias chicos, especialmente a sir Goldorak84 y sir blah238 basado en sus declaraciones, he encontrado una manera de registrar mi Arco Mapa 10.1 del archivo dll mediante programación utilizando vb.net esto es lo que hice

he añadido una clase denominada "regESRIdll.vb" (voy a pegar a continuación)

y al hacer clic en el botón de registro he añadido este código

Dim directoryInfo As New System.IO.DirectoryInfo(Application.StartupPath.ToString)
    Dim fileInfos() As System.IO.FileInfo = directoryInfo.GetFiles()
    Dim iCount As Integer

    For Each fileInfo As System.IO.FileInfo In fileInfos
        For Each extension As String In allowedExtensions
            If UCase(extension) = UCase(fileInfo.Extension) Then

                        Dim myAssemblyName As Assembly = Assembly.LoadFile(fileInfo.FullName)
                        regESRIdll.Execute(True, myAssemblyName) '====to unregister the dll change True to False

                iCount += 1
            End If
        Next
    Next

y no olvide declarar regESRIdll como nuevo regESRIdll '========================================================================== Las Importaciones Del Sistema.IO

Clase pública regESRIdll

Public Enum Product

    Desktop

    Engine

End Enum


Public Sub Execute(ByVal register As Boolean, ByVal assemply As System.Reflection.Assembly, Optional ByVal product As Product = Product.Desktop, Optional ByVal timeout As Integer = 10000)
    ' Configure the process to execute the command
    Dim process As New Process()
    process.StartInfo.FileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles), "ArcGIS\bin\ESRIRegAsm.exe")
    process.StartInfo.Arguments = String.Format(If(register, """{0}"" /p:{1} /s", """{0}"" /p:{1} /u /s"), assemply.Location, product)

    ' Invoke the process
    process.Start()
    process.WaitForExit(timeout)

    ' Finish
    Dim exitCode As Integer = process.ExitCode
    process.Close()
    If exitCode <> 0 Then
        Throw New Exception(If(register, "ESRI registration failed", "ESRI unregistration failed"))
    End If
End Sub

Final De La Clase

'===============================

-FINAL

gracias de nuevo, espero que este posts va a ayudar a aquellos que se encontrarán con el mismo problema en el futuro cercano.

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