在Visual Studio 2010中定位x64平台时,F#项目引用无效

时间:2010-08-21 08:34:59

标签: visual-studio-2010 msbuild f#

我有一个F#库项目依赖于C#类库项目,两者都在同一个解决方案中。基本上在F#代码中,我做open MyLib(其中MyLib是C#项目的名称),并访问C#项目中定义的一些代码。

我编译并且两个项目都没有错误或警告。如果我在两个项目上将目标从任意CPU更改为x64,那么C#项目仍然可以正常构建,但是F#项目无法构建,并显示错误消息,告知我无法找到模块MyLib。重建解决方案无济于事。删除所有bin og obj文件夹也没有帮助。如果我将平台目标更改回任何CPU或x86,则所有内容都会再次编译。

我在一个玩具解决方案中复制了这个,其中包含两个只包含普通代码的小项目,所以我知道它与我的特定代码无关。

其他人有过这种经历吗?任何已知的解决方法?

好吧 -h -

更新:根据要求,这是我的确切复制步骤。

  1. 在Visual Studio 2010中创建一个新的空解决方案
  2. 将新的C#类库项目添加到解决方案中,将其命名为MyLib
  3. 向Class1类
  4. 添加静态方法int GetAnswer() { return 42; }
  5. 将新的F#库项目添加到解决方案中,将其命名为MyOtherLib
  6. 将F#库项目的引用添加到C#类库项目
  7. 将此代码添加到module Module1行下面的Module1.fs:

    打开MyLib

    让answer = Class1.GetAnswer()

  8. 编译。一切都应该干净利落。

  9. 转到MyLib的项目属性中的构建选项卡。将平台目标更改为x64。
  10. 对MyOtherLib执行相同的操作。
  11. 再次构建。现在,您将在F#项目中收到两个错误,这两个错误都抱怨名称空间或未定义模块。
  12. 更新2:刚刚使用Visual Studio 2010 Beta 1测试它,行为是相同的。

1 个答案:

答案 0 :(得分:2)

好的,所以我终于从微软获得了一些response

事实证明,这是一个明显在F#的下一个版本中修复的错误。

相关问题