Garuda/Eagle in starpack
Not logged in
This forum is sponsored by Mistachkin Systems.
Eagle: Secure Software Automation
Since [info assembly] returned the path to Eagle.dll, I used a global variable which has the folder of the target DLLs.

### MyApp.exe

```
proc assemblyResolve { sender e } {
  global dll_dir

  regexp {^([^,]+),.+$} [$e Name] -> name
  log "name = $name"

  set fileName [file join $dll_dir $name.dll]
  log "fileName=$fileName"

  set type [object load -loadtype File $fileName]
  log "type=$type"

  return $type
}

proc load_type {dll_path} {
  set type [object load -import -loadtype File $dll_path]
  log "type=$type"
  return $type
}

proc call_tcl {script} {
  tcl eval [tcl primary] $script
}

proc log {msg} {
  call_tcl [list puts $msg]
}

proc get_client {} {
  set host "127.0.0.1"
  set port 50051
  object create -alias GRPCRemote.GRPCRemoteClient $host $port
}

set appDomain [object invoke -alias AppDomain CurrentDomain]
$appDomain -marshalflags +DynamicCallback add_AssemblyResolve assemblyResolve

set dll_dir [file normalize "GRPCRemoteClient"]
set dll_file "GRPCRemoteClient.dll"
set dll_path [file join $dll_dir $dll_file]

if {[catch {load_type $dll_path} err]} {
  log $errorInfo
}

if {[catch {get_client} client]} {
  log $errorInfo
}

```


The AssemblyResolve delegate loaded two dependent assemblies but finally eagle could not load all the assemblies needed for GRPCRemoteClient.dll to work.

### log

```
name = Google.Protobuf
fileName=C:/Users/yusuke/Documents/devel/IAS/PerkinElmer/Syngistix SDK v2/210914/Garuda-Syngistix/GRPCRemoteClient/Google.Protobuf.dll
type={Google.Protobuf, Version=3.12.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604} e280b797-c0cd-438d-9770-77b6d396d79e 316
name = Grpc.Core.Api
fileName=C:/Users/yusuke/Documents/devel/IAS/PerkinElmer/Syngistix SDK v2/210914/Garuda-Syngistix/GRPCRemoteClient/Grpc.Core.Api.dll
type={Grpc.Core.Api, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad} 480c6bff-dbc7-4d31-9c4e-de5aa2eda1e1 340
type={GRPCRemoteClient, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null} c199bf34-6a72-4256-8e1c-5857959232ad 299
type={GRPCRemoteClient, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null} c199bf34-6a72-4256-8e1c-5857959232ad 299
{type "GRPCRemote.GRPCRemoteClient" not found} {expected type value but got "GRPCRemote.GRPCRemoteClient"}

    while executing

"object create -alias GRPCRemote.GRPCRemoteClient $host $port"

    (procedure "get_client" line 4)

    invoked from within

"get_client"

    ("catch" body line 1)
```