2016-09-29 3 views
2

Ich kann nicht auf eine private Baugruppe zugreifen, die funktioniert. Ich habe die Dokumentation gefolgt, aber es immer noch nicht mit der Fehlermeldung:Verweis auf externe Baugruppe schlägt fehl

2016-09-29T19:43:08.615 startup(2,1): error FS82: Could not resolve this reference. Could not locate the assembly "Backend.dll". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. (Code=MSB3245) 

Hier ist die run.fsx Datei:

#r "Backend.dll" 

open System 
open System.IO 
open System.Net 
open System.Net.Http.Headers 
open System.Collections.Generic 
open CoP 

let createResponse json = 
    let responseJson = Request.handleJson json 
    let response = new HttpResponseMessage() 
    response.Content <- new StringContent(responseJson) 
    response.StatusCode <- HttpStatusCode.OK 
    response.Content.Headers.ContentType <- MediaTypeHeaderValue("application/json") 
    response 

let Run (req: HttpRequestMessage) = 
    async { 
     let! json = req.Content.ReadAsStringAsync() 
     return createResponse json 
    } |> Async.StartAsTask 

ich auch die Backend.dll in einem Behälter platziert haben Ordner im selben Ordner wie die Funktion.

azure function folder structure

Was bin ich?

Antwort

4

Sieht aus, als ob Sie in der Azure Functions F # -Implementierung einen Fehler mit der Auflösung der privaten Assembly erhalten haben. Ich habe dieses Problem für die Verfolgung geöffnet und wird ein Update enthalten in der nächsten Version haben: https://github.com/Azure/azure-webjobs-sdk-script/issues/733

In der Zwischenzeit Sie sollten der Lage sein, Ihre private Assembly verweisen unter Verwendung:

#r "bin/Backend.dll"

Hoffe, das hilft!

+3

Der Fix wurde zusammengeführt und wird mit der nächsten Version bereitgestellt. Danke, dass du dies gemeldet hast! –

3

Wenn das eine Frage über .fsx Skripte allein war, würde ich sagen, dass Sie den Teil sind vermisst, wo man FSI sagen, wo sie suchen für die DLL zu verweisen:

#I "bin" 
#r "BackEnd.dll" 

Gibt es etwas Azure tut Setzen Sie den Ordner .\bin in den Kontext erreichbar durch #r Direktive?

+1

Hat nicht funktioniert. Lustig genug, wenn ich auf den Ordner zugreife und die run.fsx-Datei ausführe, scheint es gut zu funktionieren (außer, dass ich keinen der Namespaces finde), aber das azure-Funktionsprotokoll zeigt den gleichen Fehler. –

+1

Wirklich scheint wie ein Fehler obwohl. Laut der Dokumentation sollte es einfach funktionieren. Ich schätze ich sollte einen Fehlerbericht posten. –

+1

@RobinHeggelundHansen: Ich habe mir gerade die Dokumentation angesehen, und ich stimme zu, dass das, was Sie haben, einfach funktionieren sollte. Ich würde annehmen, dass der Ordner "bin" als Suchpfad über ein Befehlszeilenargument hinter den Kulissen an die Datei "fsi.exe" übergeben wird, die den gleichen Effekt wie "# I" haben sollte. – scrwtp