引用x64 dll文件在C#中工作但在F#中不起作用

时间:2011-07-12 09:09:44

标签: c# visual-studio-2010 dll f# vtk

我使用最新的VS 2010创建了两个全新的解决方案:

  • C#console应用程序
  • F#console应用程序

我引用了两个x64 dll文件:Kitware.VTK.dllKitware.mummy.Runtime.dll
(可以在这里下载:http://www.kitware.com/products/avdownload.php

当我写using Kitware时,C#VS 2010会找到命名空间 当我写open Kitware时,F#VS 2010找不到命名空间。

x86版本在F#中运行良好。知道为什么以及如何让Kitware x64在F#中工作?

3 个答案:

答案 0 :(得分:1)

这可能是由于此处描述的错误:

F# project references not working when targeting x64 platform in Visual Studio 2010

他们说它将在VS的下一个版本中修复。

好吧 -h -

答案 1 :(得分:0)

F#控制台应用程序默认定位到x86而不是任何CPU。如果你没有改变它,那么F#项目将不适用于x64库。

答案 2 :(得分:0)

我想我可能已经解决了这个问题。它需要手动编辑fsproj文件。

<PropertyGroup>项之后和第一个<Import>之前添加此项。

  <PropertyGroup Condition="'$(Platform)' == 'x64'">
    <!--
    Assembly resolution using msbuild is broken for the x64 platform in F# 2.0.
    See https://connect.microsoft.com/VisualStudio/feedback/details/588317/f-project-references-not-working-when-targeting-x64-platform-in-visual-studio-2010
    We use simple resolution with a hard-coded list of paths to look for the dlls instead.
    -->
    <NoStdLib>true</NoStdLib>
    <OtherFlags>--simpleresolution</OtherFlags>
    <ReferencePath>C:\Windows\Microsoft.NET\Framework64\v3.5;C:\Windows\Microsoft.NET\Framework64\v2.0.50727</ReferencePath>
  </PropertyGroup>

请注意,OtherFlags会被覆盖,这对我来说没关系,因为它是空的。如果使用它,您可能应该附加到变量。 将Microsoft.Build.Tasks用于路径列表而不是使用硬编码列表会很好,但我无法让它工作。