我在Visual Studio 2012中有一个解决方案。它包括两个用于测试的项目,一个在F#中,一个在C#中。我已经安装了NUnit和FsUnit作为Nuget包。安装后,对这些程序集的引用指向在我的解决方案中的\packages\文件夹中找到的包。在我编译解决方案后,引用在F#项目中更改,并指向安装在我的C:\Program Files (x86)\文件夹中的NUnit和我的F#项目中的\bin\Debug\FsUnit.NUnit.dll。在C#项目中,引用始终指向packages文件夹。
该项目是在Visual Studio中构建的,测试运行良好。当我在TeamCity中构建它时,它失败了,因为它在F#项目中找不到NUnit和FsUnit。
你知道为什么在我编译的时候引用会改变吗?
此外,为什么与C#项目相比,F#项目中引用的属性包含的信息要少得多?
发布于 2012-06-23 01:46:43
为了结束这个问题,并供将来参考,.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>发布于 2012-06-23 05:39:34
这似乎是NuGet中的一个错误,它只影响F#项目,而且只影响VS2012。您会注意到,如果您使用NuGet升级到NUnit或FSUnit的更新版本,您的HintPaths将再次从.fsproj文件中剥离。
http://nuget.codeplex.com/workitem/2149
请为这个问题投票,希望它在VS2012最终发布之前得到一些关注!
https://stackoverflow.com/questions/11146752
复制相似问题