2017-07-08 2 views
6

更新。在Matt Ward的幫助下,我將其追溯到一個糟糕的配置文件中。下面的〜/的.config /的NuGet/NuGet.Config對我的作品單聲道編譯失敗,NuGet錯誤

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<packageSources> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" protocolVersion="2" /> 
</packageSources> 
    <packageSources> 
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> 
</packageSources> 
</configuration> 

我可以做以下沒有任何問題:

/opt/mono/mono-5.2.0.196-tarball/bin/mono ~/nuget.exe install -version 2.6.4 nunit 

然而,當我嘗試編譯fsharp相同的安裝下單聲道,我得到以下錯誤。這是在fsharp4分支。請問我可能會做錯什麼?非常感謝。

工程 「/dir/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj」 (默認目標(S)):目標CallFsSrGen:創建目錄 「OBJ /原/。 /」工具 /dir/src/fsharp/FSharp.Build-proto/../../../lib/bootstrap/4.0/fssrgen.exe 執行開始參數: /DIR/src目錄/ fsharp/fSharp .Build/FSBuild.txt OBJ /原/./ FSBuild.fs FSBuild.resx目標BeforeBuild:執行:單 --runtime = v4.0.30319 /dir/src/fsharp/FSharp.Build-proto/../。 ./../.nuget/NuGet.exe restore packages.config -PackagesDirectory程序包無法找到版本 'NUnit'包'2.6.4'。無法找到 包'NUnit.Runners'的版本'2.6.4'。 /dir/src/FSharpSource.targets:error: Command'mono --runtime = v4.0.30319 /dir/src/fsharp/FSharp.Build-proto/../../../.nuget/NuGet .EXE恢復 packages.config -PackagesDirectory包的代碼退出:1. 任務‘Exec的’執行 - 在不合格項目完成建設目標‘BeforeBuild’

+1

您是否試圖從命令行進行編譯? – mydogisbox

+1

正確。我正在使用通常的基於makefile的構建。它在過去使用過同一臺計算機(在較舊的Mono下,並且可能具有不同版本的f#git樹)。 – John

+0

檢查您正在使用的NuGet版本以及啓用了哪些NuGet程序包源代碼。我的猜測是,你沒有啓用NuGet軟件包源,或者你正在使用NuGet v2 .exe和NuGet v3軟件包源。 –

回答

2

檢查你使用的是什麼版本的NuGet和什麼NuGet包源被啓用。無論是否啓用NuGet軟件包源,或者您正在使用帶有NuGet v3軟件包源的NuGet v2 .exe。

如果沒有隨您使用的FSharp build源代碼一起提供的NuGet.Config文件,請檢查文件~/.config/NuGet/NuGet.config中列出的軟件包源。我懷疑它只有v3軟件包源https://api.nuget.org/v3/index.json,它不能與NuGet.exe(v2)一起使用。因此,您需要將nuget.exe更新到更高版本,或者將NuGet v2軟件包源添加到NuGet.Config文件中:https://www.nuget.org/api/v2/

+0

再次感謝您的幫助。 – John