【问题标题】:FsUnit, NUnit references in an F# projectF# 项目中的 FsUnit、NUnit 引用
【发布时间】:2012-06-21 21:05:58
【问题描述】:

我在 Visual Studio 2012 中有一个解决方案。它包括两个用于测试的项目,一个在 F# 中,一个在 C# 中。我已将 NUnit 和 FsUnit 安装为 Nuget 包。安装后,对这些程序集的引用指向我的解决方案内的\packages\ 文件夹中的dll。编译解决方案后,F# 项目中的引用发生变化,并指向安装在我的C:\Program Files (x86)\ 文件夹中的 NUnit 和我的 F# 项目中的 \bin\Debug\FsUnit.NUnit.dll。在 C# 项目中,引用一直指向包文件夹。

项目在 Visual Studio 中构建,测试运行良好。当我在 TeamCity 中构建它时,它失败了,因为它在 F# 项目中找不到 NUnit 和 FsUnit。

任何想法为什么我编译时引用会发生变化?

此外,与 C# 项目中的属性相比,为什么 F# 项目中引用的属性包含的信息要少得多?

【问题讨论】:

  • 将 .csproj 中的 <Reference> 节点的内容与 .fsproj 进行比较可能很有用。我想我们可能也修复了与此场景(NuGet 包和引用)相关的 F# 错误(NuGet 包和引用)后 RC(修复出现在最终版本中),但我怀疑手动编辑 .fsproj 现在可能会为您修复它。
  • 感谢布赖恩,复制参考修复了它,并且在我编译后它保持这种状态。

标签: f# nunit visual-studio-2012 fsunit


【解决方案1】:

为了结束这个问题,以供将来参考,.fsproj 中的参考最初是

<Reference Include="FsUnit.NUnit, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null">
  <Private>True</Private>
</Reference>
<Reference Include="nunit.framework, Version=2.6.0.12051, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77">
  <Private>True</Private>
</Reference>

按照布赖恩的建议,我将它们替换为下面.csproj 中的那些

<Reference Include="FsUnit.NUnit, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\FsUnit.1.1.0.0\Lib\Net40\FsUnit.NUnit.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.6.0.12051, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
  <HintPath>..\packages\NUnit.2.6.0.12054\lib\nunit.framework.dll</HintPath>
</Reference>

【讨论】:

    【解决方案2】:

    这似乎是 NuGet 中的一个错误,它只影响 F# 项目,然后只影响 VS 2012。您会注意到,如果您曾经使用 NuGet 升级到更新版本的 NUnit 或 FSUnit,您的 HintPaths 将再次从.fsproj 文件中删除。

    http://nuget.codeplex.com/workitem/2149

    请为该问题投票,希望它在 VS 2012 最终发布之前得到一些关注!

    【讨论】:

    • 哦,我从@Brian 的评论中看到,这可能是 VS 问题而不是 NuGet 问题,并且它可能已在 RC 后构建中得到修复。我希望是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    相关资源
    最近更新 更多