在解决方案中将相同的包安装到多个F#项目时,NuGet会出现问题

时间:2015-04-21 00:28:28

标签: visual-studio-2013 f# nuget

以下是解决方案布局:

  • FSharpNuGetTest(sln)
    • FirstService(F#3.1控制台项目,.NET 4.5 / 4.5.2)
    • SecondService(F#3.1控制台项目,.NET 4.5 / 4.5.2)

为了争论,假设我想将NuSet中的TopShelf安装到这两个服务中。无论库someone else had very similar issue not that long ago如何,都会发生错误,但似乎我实际上可以可靠地重现它。

NuGet Package Manager版本:2.8.60318.734

在VS2013.4社区版中打开NuGet包管理器控制台后:

PM> Install-Package Topshelf -ProjectName FirstService
Installing 'Topshelf 3.1.4'.
(... snip - license stuff ...)
Successfully installed 'Topshelf 3.1.4'.
Adding 'Topshelf 3.1.4' to FirstService.
Successfully added 'Topshelf 3.1.4' to FirstService.

完美。现在让我们尝试使用其他服务:

PM> Install-Package Topshelf -ProjectName SecondService
'Topshelf 3.1.4' already installed.
Adding 'Topshelf 3.1.4' to SecondService.
No exact match found for removing reference 'Topshelf'. Trying case-insensitive search...
Failed to find match for removing reference 'Topshelf'.
Install-Package : Failed to add reference to 'Topshelf'.
At line:1 char:16
+ Install-Package <<<<  Topshelf
    + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

噢...

时我(再次)遇到了它
  1. 尝试将XUnit / NUnit安装到解决方案中的多个F#测试项目中。
  2. 最近,在尝试将Akka.FSharp安装到解决方案中的多个F#项目时。
  3. 任何想法如何修复它??

    只有我遇到过多个F#项目 - 从来没有遇到任何与C#项目有关的问题。

    我的创意解决方案是复制&amp;将引用从一个.fsproj文件粘贴到另一个文件。 Update-Package甚至似乎在该行动之后仍在工作。 这并没有改变它是一个黑客而不是解决方案管理应该如何工作的事实,特别是当需要重新安装时 - 那么你必须复制&amp;将所有<Reference>元素从一个.fsproj(实际上已安装所有内容的元素)粘贴到其他所有元素,因为NuGet包安装会在后续项目中死亡...

    修改

    似乎蛮力可能在这里工作 - 在c.a 4尝试之后,包被安装到第二个服务应用程序(?!)。 这毫无意义......

    我希望我不必在CI服务器上这样做。

1 个答案:

答案 0 :(得分:1)

这是一个半答案,但它就在这里。

正如我在编辑中所指出的,暴力强制似乎有效。如果它第一次没有工作,只需发送垃圾邮件Install-Package就可以在第二次(或第三次或第四次......)尝试时使用。

...怪异