2016-09-29 1 views
2

Je ne peux pas me référer à un assemblage privé fonctionnant. J'ai suivi la documentation, mais il ne fonctionne toujours pas avec le message d'erreur:Référencement d'un assemblage externe échoué

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) 

Voici le fichier run.fsx:

#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 

J'ai aussi placé le Backend.dll dans un bac dossier dans le même dossier que la fonction.

azure function folder structure

Qu'est-ce que je manque?

Répondre

4

Il semblerait que vous ayez rencontré un bogue avec une résolution d'assembly privée dans l'implémentation F # Azure Functions. J'ai ouvert cette question pour le suivi et aura un correctif inclus dans la prochaine version: https://github.com/Azure/azure-webjobs-sdk-script/issues/733

En attendant, vous devriez pouvoir référencer votre assemblée privée en utilisant:

#r "bin/Backend.dll"

Espérons que cela aide!

+3

Le correctif a été fusionné et sera déployé avec la prochaine version. Merci d'avoir signalé cela! –

3

Si cela était une question sur .fsx scripts seul, je dirais que vous manquez la partie où vous dites où chercher FSI pour la dll référence:

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

Y at-il d'azur à fait mettre le dossier .\bin dans le contexte accessible par la directive #r?

+1

Ne fonctionne pas. Assez drôle, quand j'accède au dossier et exécute le dossier de run.fsx il semble fonctionner bien (excepté lui ne trouvant pas un des espaces de noms), mais le journal de fonction d'azur montre la même erreur. –

+1

Cela ressemble vraiment à un bug. Selon la documentation, cela devrait fonctionner. Je suppose que je devrais poster un rapport de bug. –

+1

@RobinHeggelundHansen: Je viens de jeter un oeil à la documentation, et je suis d'accord que ce que vous avez devrait fonctionner. Je suppose que le dossier 'bin' est passé à' fsi.exe' comme chemin de recherche via un argument de ligne de commande derrière les scènes, ce qui devrait avoir le même effet que '# I'. – scrwtp