2017-06-08 2 views
2

コンパイルに正しく使用されていた既存のF#/ Mono/paket/fakeプロジェクトがあります。モノを更新した後にF#buildが2つのパッケージを見つけられない

私はapt-getを使ってmonoを更新しました。私のプロジェクトはコンパイルされません。

MathNet.NumericsとNewtonsoft.Jsonの2つの参照パッケージが見つかりません。ここで

は、プロジェクトをビルドするとき、私はなってんだよ:

Primary reference "MathNet.Numerics". 
/usr/lib/mono/msbuild/15.0/bin/Microsoft.Common.CurrentVersion.targets(1980,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "MathNet.Numerics". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [/home/bleakcabal/Documents/projects/genesis/genesis/genesis/genesis.fsproj] 
      For SearchPath "{TargetFrameworkDirectory}". 
      Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.5/MathNet.Numerics.winmd", but it didn't exist. 
      Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.5/MathNet.Numerics.dll", but it didn't exist. 
      Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.5/MathNet.Numerics.exe", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/MathNet.Numerics.winmd", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/MathNet.Numerics.dll", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/MathNet.Numerics.exe", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/Facades/MathNet.Numerics.winmd", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/Facades/MathNet.Numerics.dll", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/Facades/MathNet.Numerics.exe", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/Facades/MathNet.Numerics.winmd", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/Facades/MathNet.Numerics.dll", but it didn't exist. 
      Considered "/usr/lib/mono/4.5-api/Facades/MathNet.Numerics.exe", but it didn't exist. 
      For SearchPath "{GAC}". 
      Considered "MathNet.Numerics", which was not found in the GAC. 
      For SearchPath "{RawFileName}". 
      Considered treating "MathNet.Numerics" as a file name, but it didn't exist. 
      For SearchPath "/home/bleakcabal/Documents/projects/genesis/build/". 
      Considered "/home/bleakcabal/Documents/projects/genesis/build/MathNet.Numerics.winmd", but it didn't exist. 
      Considered "/home/bleakcabal/Documents/projects/genesis/build/MathNet.Numerics.dll", but it didn't exist. 
      Considered "/home/bleakcabal/Documents/projects/genesis/build/MathNet.Numerics.exe", but it didn't exist. 

ファイルは私のプロジェクトでpackagesフォルダに存在(私はpaketと偽物を使用して、VSのコードでIonide-fsharpを使用して作成された)が、このフォルダがエラーメッセージに表示されません。

Newtonsoft.Jsonと全く同じメッセージが表示されています。

source https://www.nuget.org/api/v2 

nuget FAKE 
nuget FSharp.Core 
nuget MathNet.Numerics 
nuget Newtonsoft.Json 

マイpaket.lockファイルを投稿するには長すぎるが、ここに関連する部分です:ここ

MathNet.Numerics (3.19) 
     TaskParallelLibrary (>= 1.0.2856) - framework: net35 

Newtonsoft.Json (10.0.2) 
     Microsoft.CSharp (>= 4.3) - framework: netstandard10, >= netstandard13 
     NETStandard.Library (>= 1.6.1) - framework: netstandard10, >= netstandard13 
     System.ComponentModel.TypeConverter (>= 4.3) - framework: netstandard10, >= netstandard13 
     System.Runtime.Serialization.Formatters (>= 4.3) - framework: >= netstandard13 
     System.Runtime.Serialization.Primitives (>= 4.3) - framework: netstandard10, >= netstandard13 
     System.Xml.XmlDocument (>= 4.3) - framework: >= netstandard13 

は私の複数の.fsprojのいずれかのファイルからの抜粋です。ここ

は私paket.dependenciesファイルですこれらのパッケージを参照する:

... 
<Reference Include="MathNet.Numerics" /> 
<Reference Include="Newtonsoft.Json" /> 
... 
<Choose> 
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v3.5'"> 
    <ItemGroup> 
    <Reference Include="MathNet.Numerics"> 
     <HintPath>..\..\packages\MathNet.Numerics\lib\net35\MathNet.Numerics.dll</HintPath> 
     <Private>True</Private> 
     <Paket>True</Paket> 
    </Reference> 
    </ItemGroup> 
</When> 
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')"> 
    <ItemGroup> 
    <Reference Include="MathNet.Numerics"> 
     <HintPath>..\..\packages\MathNet.Numerics\lib\net40\MathNet.Numerics.dll</HintPath> 
     <Private>True</Private> 
     <Paket>True</Paket> 
    </Reference> 
    </ItemGroup> 
</When> 

私はmono --versionをすれば、私は、次を得る:

Mono JIT compiler version 5.0.1.1 (2017-02/5077205 Thu May 25 09:16:53 UTC 2017) 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com 

私は、次のコマンドを使用してみましたが、無駄に:.paket/paket.exe restore.paket/paket.exe install.paket/paket.exe outdated。あなたがまだ不足しているアセンブリまたはグラグラの参照に問題がある場合は

答えて

1

@TaylorFraleyのようにpaket.exe update --redirectsをやって、いくつかのファイルを修正しました。

次に、paket ionideプラグインを使用して、私のソリューションから両方のパッケージを削除しました。

次に、これらの2つのパッケージ(私の.fsprojに2つのReference Include)について残ったことを解決するために、私はそれを手動で削除しました。

paket Ionideプラグインを使用してパッケージを再インストールし、すべてが機能しました。

解決策は、すべてを削除してもう一度追加することです。しかし、なぜパケットのアップデートがうまくいかなかったのか分かりません。

1

paketを実行するには、

$ mono paket.exe install 

を実行する必要がありますについては、どちらか

$ apt-get install mono-dev 

または

$ apt-get install mono-complete 

を試してみてくださいモノインストールの詳細については、http://www.mono-project.com/download/#download-lin

0をご覧ください。
+0

ありがとうございました。私が私の質問で言及したように、私はすでにpaket.exeをインストールしようとしていました。私はモノパカクを再インストールしようとしなかったので、私はそうしました。 apt-get installはすでに最新であったので何もしませんでしたが、再インストールを強制するために--reinstallスイッチを試しましたが、同じ結果が得られました。 – Gilles

+0

'paket.exe update --redirects'を試すことができます。また、fsprojの両方のパッケージに対して、追加の ''があるようです。正直なところそれが問題なのかどうかは分かりませんが、 ''セクションにない2つのコメントを書き留めてみることができます。 –

+0

ああ、まだ幸運ではなく、助けを+1。これらの依存関係を持つ新しいプロジェクトを作成し、.fsprojファイルとpaketファイルを比較しようとします。 – Gilles

関連する問題