FsUnit,NUnit在F#项目中引用

时间:2012-06-21 21:05:58

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

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

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

编译时引用更改的任何想法?

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

2 个答案:

答案 0 :(得分:2)

要关闭此问题,以及将来参考,.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>

根据Brian的建议,我将其替换为.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>

答案 1 :(得分:2)

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

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

请投票支持该问题,以便在VS 2012最终版本发布前获得一些关注!