在VS2015上的F#项目中引用自己的类库

时间:2016-04-13 16:50:10

标签: f# visual-studio-2015 libraries

我有一个名为Algos的解决方案 在解决方案资源管理器上我在此解决方案中有2个项目 一个叫Algos(再次!也许我应该更改名称以避免混淆?) 这是一个控制台应用程序 一个名为MyLibrary的类库

我在项目Algo MyLibrary的参考资料中添加了解决方案资源管理器,我可以在列表中看到它。

// useful functions

// returns the minimum + index of the minimum
namespace Misc

exception InnerError of string
module Search =
   let mini (s : (int*int) list) = 
         match s with 
            | [] -> (-1,(-1,-1))
            | _  -> s |> Seq.mapi (fun i x -> (i, x)) |> Seq.minBy snd

   let maxi (s : (int*int) list) = 
         match s with 
            | [] -> (-1,(-1,-1))
            | _  -> s |> Seq.mapi (fun i x -> (i, x)) |> Seq.maxBy snd

module Bit = 
   let rec sumbits (n:int):int=
      let rec helper acc m =
         match m with
            | 0 -> acc
            | 1 -> acc+1 // enlever cela ?
            | _ -> let r = m%2
                   helper (acc+r) (m>>>1)
      helper 0 n

   let power2 k = 
     let powers_of_2 = [|1;2;4;8;16;32;64;128;256;512;1024;2048;4096;8192;16384;32768;65536;131072;262144;524288;1048576;2097152;4194304;8388608;16777216|]
     if ((k >= 24) || (k<0)) then raise (InnerError("power exponent not allowed"))
        else powers_of_2.[k]

我只是在主代码中使用Misc.Bit.power2

open MyLibrary
let a = Misc.Bit.power2 3

但是Misc.Bit会加下划线,我有编译错误

严重级代码描述项目文件行抑制状态 错误值,构造函数,命名空间或类型&#39;位&#39;未定义Algos C:\ Users \ Fagui \ Documents \ GitHub \ Learning Fsharp \ Algos \ Algos \ TSP.fs 50

我做错了什么?它可能来自源代码的其他部分吗?

没有其他警告。 这两个项目都使用.NET Framework 4.5.2 MyLibrary使用Target F#Runtime 4.3.1,而Algos没有类似的指示。

感谢

1 个答案:

答案 0 :(得分:0)

这当然有效。还请确保您在库和控制台应用程序中定位相同版本的F#和.NET:.NET 4.5.2和4.4.0.0

Solution Screenshot