2017-09-20 9 views
2

I 바탕 화면의 "새 폴더"에있는 다음 파일이 있습니다F # FSI, 변경 작업 디렉토리

// File location: "C:\Users\my_user_name\Desktop\New folder\AddOne.fs" 
// 
module internal AddOneModule 

let AddOneFunction x = x + 1 

내가 FSI F # 대화를 사용하여 전체 경로 이름을 #LOAD를 사용하여이 파일에 액세스 할 수 있습니다.

Microsoft (R) F# Interactive version 4.1 
Copyright (c) Microsoft Corporation. All Rights Reserved. 

For help type #help;; 

> #load "C:\Users\my_user_name\Desktop\New folder\AddOne.fs";; 
//[Loading C:\Users\my_user_name\Desktop\New folder\AddOne.fs] 
//namespace FSI_0002 
// val AddOneFunction : x:int -> int 

> open AddOneModule;; 
> AddOneFunction 100;; 
// val it : int = 101 

어떻게 상대 경로를 사용하여 파일에 액세스 할 수 있도록 작업 디렉토리를 변경합니까?

F# interactive:how to display/change current working directory

나는 위의 게시물에 비슷한 시도했지만 FSI는 여전히 Temp 폴더에있는 파일을 찾습니다 :

이 (FSI를 RESET)

Microsoft (R) F# Interactive version 4.1 
Copyright (c) Microsoft Corporation. All Rights Reserved. 

For help type #help;; 

> open System;; 
> Environment.CurrentDirectory <- @"C:\Users\my_user_name\Desktop\New folder";; 
//val it : unit =() 

> #load "AddOne.fs";; 

// #load "AddOne.fs";; 
// ^^^^^^^^^^^^^^^^^ 

//C:\Users\my_user_name\Desktop\New folder\stdin(3,1): error FS0078: Unable to find 
//the file 'AddOne.fs' in any of 
// C:\Users\my_user_name\AppData\Local\Temp 

을 주셔서 감사합니다 당신의 도움.

+3

내 추천은 절대로 FSI에 직접 입력하지 마십시오. 필요한 경우 스크립트 파일을 작성하고 FSI에 코드 행을 보냅니다. 이렇게하면 상대 경로에서 파일을로드 할 수 있습니다 (자동 완성, 오류 밑줄). 완전한 툴링 지원 (자동 완성, 오류 밑줄)을 얻을 수 있으며';; '을 입력 할 필요가 없습니다. – TheQuickBrownFox

답변

2

작업 디렉토리를 변경하는 대신 __SOURCE_DIRECTORY__ built-in identifier으로 트릭을 사용하여 원하는 것을 얻을 수 있습니다.

먼저 디렉토리 구조에 특정 앵커 포인트가 필요합니다. 예를 들어, 사용자가 Windows에 있다고 가정하고이 앵커 포인트를 %USERPROFILE% 환경 변수로 정의 된 사용자 디렉토리라고합시다. 거기에 다음 코드 한 줄을 포함하는 스크립트 anchorfsi.fsx 장소 : 모두 당신이해야 할 기본적이다

#I __SOURCE_DIRECTORY__

합니다. 이제 어떤 위치에서 명령 줄을 사용하여 촬영했는지 상관없이 스크립트 및 대화식 명령에서 상대 경로를 사용할 수 있습니다. 입력 한 상대 경로 ".\desktop\new folder\addone.fs"가 정확하게 어떤없이 절대 하나 C:\Users\gene\desktop\new folder\addone.fs에 매핑 된 방법

demo

공지 사항 :로드 .\desktop\new folder\addone.fs하여 문제의 설정을 켜기

다음 스크린 샷은 원하는을 달성하는 방법을 보여줍니다 의존성fsi 작업 디렉토리에 있습니다.