visual studio sistema referencias referencia quitar puedo puede net especificada error encontrar agregar administrador vb.net ms-access

vb.net - studio - ¿Cómo agregar/eliminar la referencia programáticamente?



no se puede agregar referencia.dll c# (2)

Mi aplicación está construida para escanear una base de datos de MS Access en VB.NET.

Cuando la aplicación Access se distribuye a los usuarios finales, pueden tener diferentes versiones de componentes COM. ¿Es posible agregar / eliminar referencias mediante programación para resolver referencias rotas debido a las diferentes versiones?

Por favor, comparte código o enlace para referencia.


Aquí hay un código de muestra:

Crear referencia desde archivo

Sub AddWS() ''Create a reference to Windows Script Host, '' ''where you will find FileSystemObject '' ''Reference name: "IWshRuntimeLibrary" '' ''Reference Name in references list: "Windows Script Host Object Model" '' ReferenceFromFile "C:/WINDOWS/System32/wshom.ocx" End Sub Function ReferenceFromFile(strFileName As String) As Boolean Dim ref As Reference On Error GoTo Error_ReferenceFromFile References.AddFromFile (strFileName) ReferenceFromFile = True Exit_ReferenceFromFile: Exit Function Error_ReferenceFromFile: ReferenceFromFile = False Resume Exit_ReferenceFromFile End Function

Eliminar referencia

Sub DeleteRef(RefName) Dim ref As Reference ''You need a reference to remove '' Set ref = References(RefName) References.Remove ref End Sub You can use the references collection to find if a reference exists.

La referencia existe

Function RefExists(RefName) Dim ref As Object RefExists = False For Each ref In References If ref.Name = RefName Then RefExists = True End If Next End Function

Desde: http://wiki.lessthandot.com/index.php/Add,_Remove,_Check_References

También puede leer http://www.mvps.org/access/modules/mdl0022.htm


La mejor solución es limitar las referencias en su Access MDB a los componentes de acceso internos. Esta sería la referencia de acceso, la referencia VBA y la referencia DAO. Todas las demás bibliotecas externas deben usarse a través del enlace tardío. Si está utilizando el objeto del sistema de archivos, por ejemplo, en lugar de esto (con una referencia al modelo de objetos de Windows Script Host):

Dim objFSO As New FileSystemObject If objFSO.FolderExists("//d9m09521/WB/") Then ... End If

Quitarás la referencia y la convertirás en esto:

Dim objFSO As Object Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists("//d9m09521/WB/") Then ... End If

Si le preocupa el impacto en el rendimiento de inicializar el FSO cada vez que lo usa, puede guardar una referencia en el mismo. Usualmente uso una variable estática dentro de una función para devolver un objeto como este:

Public Function FSO() As Object Static objFSO As Object If objFSO Is Nothing Then Set objFSO = CreateObject("Scripting.FileSystemObject") End If FSO = objFSO End Function

Ahora, es posible que desee ser elegante y también ser capaz de derribar el objeto instanciado, en cuyo caso haría algo como esto:

Public Function FSO(Optional bolCloseObject As Boolean = False) As Object Static objFSO As Object If bolCloseObject Then Set objFSO = Nothing Exit Function End If If objFSO Is Nothing Then Set objFSO = CreateObject("Scripting.FileSystemObject") End If FSO = objFSO End Function

En cualquier caso, el punto es que el enlace tardío resuelve la ubicación de las bibliotecas externas en tiempo de ejecución y, por lo tanto, no se romperá, excepto si la biblioteca externa no está instalada o no está registrada correctamente. Con la vinculación tardía, puede atrapar ambas condiciones, pero con la vinculación anticipada, toda la aplicación de Access simplemente se rompe.