F# 我可以防止NuGet降级(参数化)项目文件中的引用吗?

F# 我可以防止NuGet降级(参数化)项目文件中的引用吗?,f#,msbuild,nuget,teamcity,F#,Msbuild,Nuget,Teamcity,这种情况有时会发生,但并不总是如此,我无法准确描述复制这种情况需要什么样的环境: 我在F#4.0中有一个测试项目,它自然引用了FSharp.Core 4.4.0.0 测试项目使用通过NuGet添加的FsUnit 在重新安装或更新/还原时,FSharp.Core引用降级为FSharp.Core 4.0.0.1 基本上是.fsproj文件中的以下行: <Reference Include="FSharp.Core, Version=$(TargetFSharpCoreVersion), C

这种情况有时会发生,但并不总是如此,我无法准确描述复制这种情况需要什么样的环境:

  • 我在F#4.0中有一个测试项目,它自然引用了FSharp.Core 4.4.0.0
  • 测试项目使用通过NuGet添加的FsUnit
  • 在重新安装或更新/还原时,FSharp.Core引用降级为FSharp.Core 4.0.0.1
基本上是
.fsproj
文件中的以下行:

<Reference Include="FSharp.Core, Version=$(TargetFSharpCoreVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
  <Private>True</Private>
</Reference>

真的
替换为:

<Reference Include="FSharp.Core">
  <HintPath>..\packages\FSharp.Core.4.0.0.1\lib\net40\FSharp.Core.dll</HintPath>
  <Private>True</Private>
</Reference>

..\packages\FSharp.Core.4.0.0.1\lib\net40\FSharp.Core.dll
真的
我非常希望防止这种情况发生,特别是在TeamCity build服务器上,由于这种行为,该服务器当前的测试结果与本地版本不同


我尝试过使用,但在这里似乎没有效果。

避免包还原问题的一种方法是;)@MarkSeemann,是的,很好,很好的博客帖子,但是我很高兴我们添加了一个额外的依赖项,叫做NuGet,使它成为一个典型的运行一次,到处运行的体验。所有那些不可更新的二进制文件、所有不同的版本(.net4、.net46、x86、x64、msil及其组合),更不用说只有脚本的软件包(如方法编织Fody)产生的配置问题了,如果您必须只在本地运行它们,这将是一场噩梦。我们曾经有过这样的经历,但它遇到的麻烦比解决的要多。虽然一个可能的折衷方案是运行我们自己的NuGet服务器,但我们还没有做到。不要忘记:在二进制文件上进行区分实际上是不可能的,DVCS通常存储二进制文件的整个blob,而不是diff。目前大约有120MB的外部依赖项,我们的DVC将很快变得非常大…120 MB~12美分的磁盘驱动器存储。。。当然,如果你一直更新你的依赖关系,它会累加起来,但是如果你不得不这么做,那就是你违反了稳定依赖原则的味道……你考虑过Paket吗?