我有一个F#库项目依赖于C#类库项目,两者都在同一个解决方案中.基本上在F#代码中,我打开MyLib(其中MyLib是C#项目的名称),并访问C#项目中定义的一些代码.
我编译并且两个项目都没有错误或警告.如果我在两个项目上将目标从任意CPU更改为x64,那么C#项目仍然可以正常构建,但是F#项目无法构建,并显示错误消息,告知我无法找到模块MyLib.重建解决方案无济于事.删除所有bin og obj文件夹也没有帮助.如果我将平台目标更改回任何CPU或x86,则所有内容都会再次编译.
我在一个玩具解决方案中复制了这个,其中包含两个只包含普通代码的小项目,所以我知道这与我的具体代码无关.
有人经历过这个吗?任何已知的解决方法?
好吧
-H-
更新:根据要求,这是我的确切复制步骤.
>在Visual Studio 2010中创建一个新的空解决方案
>将新的C#类库项目添加到解决方案中,将其命名为MyLib
>添加一个静态方法int GetAnswer(){return 42;到Class1类
>将新的F#库项目添加到解决方案中,将其命名为MyOtherLib
>将F#库项目的引用添加到C#类库项目中
>将此代码添加到Module1.fs模块下面的Module1.fs:
打开MyLib
让answer = Class1.GetAnswer()
>编译.一切都应该干净利落.
>转到MyLib的项目属性中的构建选项卡.将平台目标更改为x64.
>对MyOtherLib执行相同操作.
>再次建造.现在,您将在F#项目中收到两个错误,这两个错误都抱怨命名空间或模块未定义.
更新2:刚刚使用Visual Studio 2010 Beta 1测试它,行为是相同的.
最佳答案 好的,所以我终于从微软获得了一些
response.
事实证明,这是一个明显在下一版F#中修复的错误.