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

NuGet issues when installing same package to multiple F# projects in solution

这是解决方案布局:

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

NuGet 包管理器版本: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# 项目时。

有什么解决办法吗...?

我只在多个 F# 项目中遇到过这种情况 - C# 项目从未遇到过任何问题。

我的创可贴解决方案是将引用从一个 .fsproj 文件复制并粘贴到另一个文件。 Update-Package 甚至似乎在该操作后工作。 这并没有改变它是一个黑客的事实,而不是解决方案管理应该如何工作的事实,特别是当需要重新安装时 - 然后你必须复制并粘贴一个 .fsproj 中的所有 <Reference> 元素(一个实际上安装了所有东西的人),因为 NuGet 包安装在后续项目中死亡...

编辑

看来暴力破解可能在这里奏效 - 在 c.a 4 次尝试后,软件包安装到第二个服务应用程序 (?!)。 这毫无意义...

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

回答有点半途而废,但就到此为止吧。

正如我在编辑中指出的那样,暴力破解似乎有效。如果它第一次不起作用,只需发送垃圾邮件 Install-Package 就可以让它在第二次(或第三次或第四次...)尝试时起作用。

奇怪...