dnxで欠落している依存関係(または他のローダーの障害)を診断するにはどうすればよいですか?


133

Kestrelを使用して、DNXでASP.NET vNextのHelloWebサンプルの修正バージョンを実行しようとしています。これは非常に最先端であると理解していますが、ASP.NETチームが少なくとも最も単純なWebアプリを機能させ続けることを願っています:)

環境:

  • Linux(Ubuntu、ほとんど)
  • モノ3.12.1
  • DNX 1.0.0-beta4-11257(11249も利用可能です)

「ウェブアプリ」コード、中Startup.cs

using Microsoft.AspNet.Builder;
public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseWelcomePage();
    }
}

プロジェクト構成、project.json

{
  "dependencies": {
    "Kestrel": "1.0.0-beta4",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta4",
    "Microsoft.AspNet.Hosting": "1.0.0-beta4",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta4",
    "Microsoft.Framework.Runtime": "1.0.0-beta4",
    "Microsoft.Framework.Runtime.Common": "1.0.0-beta4",
    "Microsoft.Framework.Runtime.Loader": "1.0.0-beta4",
    "Microsoft.Framework.Runtime.Interfaces": "1.0.0-beta4",
  },
  "commands": {
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
  },
  "frameworks": {
    "dnx451": {}
  }
}

kpm restore 正常に動作するようです。

しかし、実行しようとすると、Microsoft.Framework.Runtime.IApplicationEnvironmentそれが見つからないことを示す例外が発生します。コマンドラインとエラー(やや再フォーマット)

.../HelloWeb$ dnx . kestrel
System.IO.FileNotFoundException: Could not load file or assembly 
'Microsoft.Framework.Runtime.IApplicationEnvironment,
  Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
or one of its dependencies.
File name: 'Microsoft.Framework.Runtime.IApplicationEnvironment,
  Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke 
    (System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke 
    (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder,
     System.Object[] parameters, System.Globalization.CultureInfo culture)
    [0x00000] in <filename unknown>:0

明らかに、私の最も差し迫った必要性はこれを修正することですが、私は将来的に同様の問題を自分で修正できるように、問題の原因を診断するために移動する方法についてのアドバイスにも感謝します。(それはまた、この質問を他の人にとってもより有用にする可能性があります。)

アセンブリソースで見つけましたMicrosoft.Framework.Runtime.IApplicationEnvironmentが、最近は変更されていないようです。なぜ例外が別のアセンブリ内の単なるインターフェイスではなく、それ自体がアセンブリ全体であるかのように名前を表示する理由は明らかではありません。これアセンブリニュートラルインターフェースが原因である可能性ある思いますが、エラーからは明確ではありません。死んでいるので、それではありません...Microsoft.Framework.Runtime.Interfaces[AssemblyNeutral]


好奇心から、あなたはgithub.com/aspnet/Home/wiki/Assembly-Neutral-Interfacesにリンクして、アセンブリニュートラルインターフェースリンクまたは他のどこかにリンクするつもりでしたか?現在壊れているため
cgijbels 2015年

@cgijbels:ありがとう-私は実際にはdavidfowl.com/assembly-neutral-interfacesにリンクするつもりでしたが、あなたのリンクはおそらくもっと良いでしょう...
Jon Skeet

@JonSkeetアセンブリニュートラルインターフェースはなくなりました。
tugberk 2015年

@tugberk:まあ、本当ですか?それは興味深いです-編集に含めることができるリンクはありますか?
Jon Skeet、2015年

回答:


144

良い質問。特定の問題について、解決された依存関係に不一致があるようです。このようなことが発生するのは、互換性のないdnxでアプリケーションを実行しているためと考えられます。私たちはまだ非常に大きな変更を行っているので、missingタイプのメソッドが見つからない場合は、betaXパッケージをbetaY実行したり、dnxを実行したりする可能性があります。

さらに具体的には、アセンブリニュートラルインターフェイスはベータ4で削除されましたが、実行中のアプリケーションがまだそれらを使用しているようです。

エラーメッセージをより明確にするために、パッケージが実行に必要な最小dnxをパッケージでマークできるようにする予定です。また、時間が経つにつれ、重大な変更はなくなります。

しかし、一般的には、dnxを使用するときにこのような問題を診断する方法についてのガイドを書いた時期だと感じています(既存の.NETとはかなり異なるため)。

入力した依存関係project.jsonは最上位のみです。バージョンも常に最小値です(NuGetパッケージと同じです)。これは、指定するFoo 1.0.0-beta4ときに本当に指定することを意味しますFoo >= 1.0.0-beta4。つまりMVC 0.0.1、構成したフィードの最小バージョンがである場合、そのバージョンMVC 3.0.0が取得されます。また、決してあなたがそれを指定しない限り、あなたのバージョンをフロートません。1.0.0を要求してそれが存在する場合、新しいバージョンが存在していても1.0.0を取得します。空のバージョンを指定することは常に悪いことであり、後のビルドでは許可されません。

フローティングバージョンと呼ばれるnugetに導入する新機能があります。現在はプレリリースタグでのみ機能しますが、次のバージョンでは、バージョンのより多くの部分で機能します。これは、パッケージ仕様ファイルでバージョン範囲を指定するためのnpmおよびgem構文に似ています。

1.0.0-*-意味が、プレフィックスに一致する最高のバージョンを提供します(セマンティックバージョニングルールによる))がない場合は、通常の動作を使用して、最低バージョン> =指定されたバージョンを取得します。

最新のビルドで復元を実行すると、というファイルが書き出されproject.lock.jsonます。このファイルには、で定義されているすべてのターゲットフレームワークの依存関係が推移的に閉じられます。project.jsonいるます。

このようなことが失敗した場合、次のことができます。

解決された依存関係を使用して見てください kpm listます。これにより、プロジェクトによって参照されるパッケージの解決済みバージョンと、それがどの依存関係に引き込まれたかが表示されます。たとえば、A-> Bの場合、次のように表示されます。

あ
  -> B
B
 ->

実際のKPMリスト出力:

ClassLibrary39の依存関係のリスト(C:\ Users \ davifowl \ Documents \ Visual Studio 14 \ Projects \ ClassLibrary39 \ src \ ClassLibrary39 \ project.json)

[Target framework DNX,Version=v4.5.1 (dnx451)]

 framework/Microsoft.CSharp 4.0.0.0
    -> ClassLibrary39 1.0.0
 framework/mscorlib 4.0.0.0
    -> ClassLibrary39 1.0.0
 framework/System 4.0.0.0
    -> ClassLibrary39 1.0.0
 framework/System.Core 4.0.0.0
    -> ClassLibrary39 1.0.0
*Newtonsoft.Json 6.0.1
    -> ClassLibrary39 1.0.0

[Target framework DNXCore,Version=v5.0 (dnxcore50)]

*Newtonsoft.Json 6.0.1
    -> ClassLibrary39 1.0.0
 System.Runtime 4.0.20-beta-22709
    -> ClassLibrary39 1.0.0

*は直接的な依存関係を意味します。

作業中のビジュアルスタジオ(現在DNXで機能しない)がある場合は、参照ノードを確認できます。同じデータが視覚的に表現されています。

参照ノード

依存関係の失敗の様子を見てみましょう。

これがproject.jsonです

{
    "version": "1.0.0-*",
    "dependencies": {
        "Newtonsoft.Json": "8.0.0"
    },

    "frameworks" : {
        "dnx451" : { 
            "dependencies": {
            }
        },
        "dnxcore50" : { 
            "dependencies": {
                "System.Runtime": "4.0.20-beta-22709"
            }
        }
    }
}

Newtonsoft.Json 8.0.0存在しません。したがって、kpm restoreを実行すると、次のようになります。

ここに画像の説明を入力してください

復元が失敗した可能性がある場合の診断では、行われたHTTP要求を調べて、kpmが調べた構成済みのパッケージソースを通知します。上の画像に注目して、CACHE要求があります。これは、リソースのタイプ(nupkgまたはnuspec)に基づく組み込みのキャッシュであり、構成可能なTTLがあります(を参照kpm restore --help)。kpmリモートNuGetソースを強制的にヒットする場合は、--no-cacheフラグを使用します。

KPM復元-キャッシュなし

これらのエラーは、パッケージマネージャーのログ出力ウィンドウのVisual Studioにも表示されます。

ここに画像の説明を入力してください

サイドノート!

パッケージソース

NuGet.configの現在の動作方法について説明します(将来的に変更される可能性があります)。デフォルトでは、デフォルトでNuGet.orgソースがグローバルに構成されたNuGet.configがあります。%appdata%\NuGet\NuGet.Configます。Visual Studio内またはNuGetコマンドラインツールを使用して、これらのグローバルソースを管理できます。障害の診断を試みるときは、常に有効なソース(kpm出力にリストされているもの)を確認する必要があります。

NuGet.configの詳細については、こちらをご覧ください

現実に戻れ:

依存関係が解決されない場合、アプリケーションを実行すると次のようになります。

> dnx . run
System.InvalidOperationException: Failed to resolve the following dependencies for target framework 'DNX,Version=v4.5.1':
   Newtonsoft.Json 8.0.0

Searched Locations:
  C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\{name}\project.json
  C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\test\{name}\project.json
  C:\Users\davifowl\.dnx\packages\{name}\{version}\{name}.nuspec
  C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\{name}.dll
  C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\{name}.dll
  C:\WINDOWS\Microsoft.NET\assembly\GAC_32\{name}\{version}\{name}.dll
  C:\WINDOWS\Microsoft.NET\assembly\GAC_64\{name}\{version}\{name}.dll
  C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL\{name}\{version}\{name}.dll

Try running 'kpm restore'.

   at Microsoft.Framework.Runtime.DefaultHost.GetEntryPoint(String applicationName)
   at Microsoft.Framework.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args)
   at Microsoft.Framework.ApplicationHost.Program.Main(String[] args)

ランタイムは基本的に、実行を試みる前に、依存関係グラフ全体が解決されていることを検証しようとします。kpm restoreリストされている依存関係を見つけることができないため、実行が提案された場合にそうなります。

このエラーが発生するもう1つの理由は、間違ったdnxフレーバーを実行している場合です。アプリケーションでdnx451のみを指定していて、CoreCLR dnxを実行しようとすると、同様の問題が発生する可能性があります。エラーメッセージのターゲットフレームワークに細心の注意を払ってください。

実行する場合:

dnx4x - runs on dnx-clr-{etc}
dnxcore50 - runs on dnx-coreclr-{etc}

実行しようとしているときは、clrからで定義されてproject.jsonいるターゲットフレームワークへのメンタルマッピングを覚えておく必要があります。

これは、参照ノードの下のVisual Studioにも表示されます。 未解決の依存関係

黄色でマークされたノードは未解決です。

これらは、エラーリストにも表示されます。

未解決の依存関係のエラーリスト

建物

これらのエラーはビルド時にも表示されます。コマンドラインからビルドする場合、出力は非常に詳細であり、問​​題を診断するときに非常に役立ちます。

> kpm build

Building ClassLibrary39 for DNX,Version=v4.5.1
  Using Project dependency ClassLibrary39 1.0.0
    Source: C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\ClassLibrary39\project.json

  Using Assembly dependency framework/mscorlib 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll

  Using Assembly dependency framework/System 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.dll

  Using Assembly dependency framework/System.Core 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll

  Using Assembly dependency framework/Microsoft.CSharp 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Microsoft.CSharp.dll


Building ClassLibrary39 for DNXCore,Version=v5.0
  Using Project dependency ClassLibrary39 1.0.0
    Source: C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\ClassLibrary39\project.json

  Using Package dependency System.Console 4.0.0-beta-22709
    Source: C:\Users\davifowl\.dnx\packages\System.Console\4.0.0-beta-22709
    File: lib\contract\System.Console.dll

  Using Package dependency System.IO 4.0.10-beta-22231
    Source: C:\Users\davifowl\.dnx\packages\System.IO\4.0.10-beta-22231
    File: lib\contract\System.IO.dll

  Using Package dependency System.Runtime 4.0.20-beta-22231
    Source: C:\Users\davifowl\.dnx\packages\System.Runtime\4.0.20-beta-22231
    File: lib\contract\System.Runtime.dll

  Using Package dependency System.Text.Encoding 4.0.10-beta-22231
    Source: C:\Users\davifowl\.dnx\packages\System.Text.Encoding\4.0.10-beta-22231
    File: lib\contract\System.Text.Encoding.dll

  Using Package dependency System.Threading.Tasks 4.0.10-beta-22231
    Source: C:\Users\davifowl\.dnx\packages\System.Threading.Tasks\4.0.10-beta-22231
    File: lib\contract\System.Threading.Tasks.dll

出力には、パッケージとプロジェクト参照からコンパイラに渡されたすべてのアセンブリが表示されます。ビルドエラーが発生し始めたら、ここを参照して、使用しているパッケージがそのターゲットプラットフォームで実際に機能することを確認してください。

次に、dnxcore50で動作しないパッケージの例を示します。

{
    "version": "1.0.0-*",
    "dependencies": {
        "Microsoft.Owin.Host.SystemWeb": "3.0.0"
    },

    "frameworks": {
        "dnx451": {
            "dependencies": {
            }
        },
        "dnxcore50": {
            "dependencies": {
                "System.Console": "4.0.0-beta-22709"
            }
        }
    }
}

Microsoft.Owin.Host.SystemWebバージョン3.0.0には、dnxcore50で実行されるアセンブリがありません(解凍されたパッケージのlibフォルダーを確認してください)。実行するとkpm build

dnxcore50にアセンブリがない

「パッケージMicrosoft.Owin.Host.SystemWebを使用する」とありますが、「ファイル:」はありません。これがビルドの失敗の原因である可能性があります。

ここで私の脳のダンプを終了します


dnxが依存関係を解決できない理由を特定するために、あなたが提案するようにdnuリストを使用しようとしています。しかし、「project.jsonが見つかりません」という赤いメッセージが表示されます。アセンブリは、[ビルド時に出力を生成する]をオンにして生成されたアーティファクトフォルダーにあります。続行する方法について何か提案はありますか?
マイクスコット

アーティファクトフォルダーは何と関係がありますか?project.jsonで依存関係を参照しましたか?参照しているそのパッケージは、設定されたフィードで利用できますか?
davidfowl 2015年

17

何が問題だったかはまだ完全にはわかりませんが、少なくとも簡単に試すための一連の手順があります。

  • 疑わしい場合は、dnxを再インストールします
    • パッケージキャッシュを吹き飛ばすと役立つ場合があります
  • ~/.config/NuGet.config適切なNuGetフィードを使用していることを確認してください

結局、次のコマンドラインを使用して、かなりクリーンな方法でさまざまなオプションをテストしました。

rm -rf ~/.dnx/packages && rm -rf ~/.dnx/runtimes && dnvm upgrade && kpm restore && dnx . kestrel

インストールされている依存関係のバージョンが正しくないことが原因で問題が発生したようです。のバージョン番号"1.0.0-beta4"は明らかにとはかなり異なり"1.0.0-beta4-*"ます。たとえば、Kestrel依存関係は、バージョン1.0.0-beta4-11185をと指定した場合にインストールされました1.0.0-beta4が、バージョン1.0.0-beta4-11262が末尾に付いてい-*ます。beta4誤ってbeta3ビルドを使用しないように明示的に指定したかった

次のプロジェクト構成は正常に機能します。

{
  "dependencies": {
    "Kestrel": "1.0.0-beta4-*",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta4-*",
    "Microsoft.AspNet.Hosting": "1.0.0-beta4-*",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4-*",
  },
  "commands": {
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
  },
  "frameworks": {
    "dnx451": {}
  }
}

6
これは、-*常に最新のプレリリースバージョンを提供しますが、それがないと、すべての依存関係を満たす最低バージョンを取得するためです(NuGetで通常行われるように)。このテストにはいくつかの例があります。
AlexanderKöplinger15年

2
@AlexanderKöplinger:ありがとう、それは理にかなっています。つまり... beta4は最も古いbeta4ですが、... beta4- *は最新のbeta4です。
Jon Skeet

4
"frameworks": {"dnx451": {}}私にはそれが修正されてdnxcore50
いれ

最初のコマンドは、beta5バージョンに行き詰まるのを防ぐのにも役立ちました。を実行してみdnvm upgrade-selfましたが、最新バージョンにアップグレードされません。管理者としてVSコマンドプロンプトを実行するとrc1...、dnvmのバージョンがと表示されましたが、管理者でない場合はそうでしたbeta5...。コマンドの後に、管理者と非管理者の両方のコマンドプロンプトがrc2...(最新)バージョンとして表示されました。
JabberwockyDecompiler 2015年

モノを使用していてdnx451dnxcore50この回答を選択するかどうか疑問に思っている方は、このトピックをもう少し理解するのに役立ちました。stackoverflow.com/ a / 30846048/89590短い回答:dnx451モノに適しています。
ネイト・クック

8

名前付きのenv VAR設定することができますDNX_TRACE1TONより多くの診断情報を参照します。それはだ、警告される多くの詳細情報!


@JonSkeetところで、他の回答(自己回答を含む)には、発生した特定の問題の診断と修復に関する優れた情報が含まれています。問題が最初に発生した理由についてより多くの手がかりにつながる可能性があるのは、別の異なる回答であるため、私はこの回答を非常に簡潔にしました。
Eilon、2015年

絶対に-感謝します:)
Jon Skeet

3

これを機能させるために、project.json.. を変更しました。

{
"dependencies": {
    "Kestrel": "1.0.0-*",
    "Microsoft.AspNet.Diagnostics": "1.0.0-*",
    "Microsoft.AspNet.Hosting": "1.0.0-*",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-*",
    "Microsoft.AspNet.StaticFiles": "1.0.0-*"
},
"commands": {
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001",
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
},
"frameworks": {
    }
}

重要なのはフレームワークのセクションだそうです。

また、名前の変更によってk web動作が変更されたため、今dnx . webまたはdnx . kestrel

アップデート-もう少し情報

奇妙なことに、フレームワークが定義されていない状態で実行した後、私が行ったときにそれはたくさんの余分なものを手に入れましたkpm restore

...
Installing Microsoft.Framework.Logging 1.0.0-beta4-11001
Installing Microsoft.Framework.Logging.Interfaces 1.0.0-beta4-11001
Installing Microsoft.Framework.DependencyInjection.Interfaces 1.0.0-beta4-11010
Installing Microsoft.Framework.DependencyInjection 1.0.0-beta4-11010
Installing Microsoft.Framework.ConfigurationModel 1.0.0-beta4-10976
Installing Microsoft.Framework.ConfigurationModel.Interfaces 1.0.0-beta4-10976
Installing Microsoft.AspNet.Hosting.Interfaces 1.0.0-beta4-11328
Installing Microsoft.AspNet.FeatureModel 1.0.0-beta4-11104
Installing Microsoft.AspNet.Http 1.0.0-beta4-11104
Installing Microsoft.AspNet.FileProviders.Interfaces 1.0.0-beta4-11006
Installing Microsoft.Framework.Caching.Interfaces 1.0.0-beta4-10981
Installing Microsoft.AspNet.FileProviders 1.0.0-beta4-11006
Installing Microsoft.AspNet.Http.Core 1.0.0-beta4-11104
Installing Microsoft.AspNet.WebUtilities 1.0.0-beta4-11104
Installing Microsoft.Net.Http.Headers 1.0.0-beta4-11104
Installing Microsoft.AspNet.Http.Interfaces 1.0.0-beta4-11104
Installing Microsoft.Framework.Runtime.Interfaces 1.0.0-beta4-11257
Installing Microsoft.AspNet.Server.Kestrel 1.0.0-beta4-11262
Installing Microsoft.Net.Http.Server 1.0.0-beta4-11698
Installing Microsoft.Net.WebSockets 1.0.0-beta4-11698
Installing Microsoft.Net.WebSocketAbstractions 1.0.0-beta4-10915
Installing Microsoft.Framework.WebEncoders 1.0.0-beta4-11104
Installing Microsoft.Framework.OptionsModel 1.0.0-beta4-10984
Installing Microsoft.AspNet.Http.Extensions 1.0.0-beta4-11104
Installing Microsoft.AspNet.Diagnostics.Interfaces 1.0.0-beta4-12451
Installing Microsoft.AspNet.RequestContainer 1.0.0-beta4-11328

..その後、問題なく実行されました。次に、フレームワークセクションに切り替えました

"frameworks": {
    "dnx451": {}
}

..そしてそれはまだ機能しましたが、以前はエラーをスローしました!

非常に奇妙な!

(実行中1.0.0-beta4-11257

さらに更新

私は新しいUbuntuインスタンスをスピンアップし、同じエラーが発生しました..問題は、パッケージを取得しようとしているだけではnuget.orgなくmyget.org(新しいものを持っている)ために発生している可能性があるためNuGet.Config、プロジェクトのルート。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/" />
    <add key="NuGet" value="https://nuget.org/api/v2/" />
  </packageSources>
</configuration>

..これは、正しいバージョンを(別の後にkpm restore)取得することによって、私にとってそれを修正したようです。


1
「dnx。kestrel」の部分を再確認してください。確かに、このため、私が示したコマンドは:)その構成で、別のエラーが発生します。System.TypeLoadException:アセンブリ 'Microsoft。 Framework.Logging、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null '。DNXのどのバージョンを使用していますか?
Jon Skeet、2015年

1
初めて「dnx。web」を実行したとき、「System.InvalidOperationException:ターゲットフレームワーク 'DNX、Version = v4.5.1'の次の依存関係を解決できませんでした。見つからないもののリストが表示されました。
スティーブンポープ

面白い。ところで、これはどのプラットフォームにありますか?
Jon Skeet、2015年

DNXをアップグレードした後、「source〜/ .bashrc」を実行して環境変数をリロードしましたか?また、 "dnvm upgrade" + "dnvm use default"
Stephen Pope

DNXは.bashrcによって更新されていません...おそらく昨日手動で作成したためです。代わりに更新された指示を使用してみます...
Jon Skeet

2

最近、私のpackage.jsonバージョンはすべて終わります"-rc2-*"

(私がこれまで見てきた唯一の例外は、Microsoft.Framework.Configurationパッケージであり、"1.0.0-rc1-*"またはのいずれかである必要があります"1.0.0-*"

@davidfowlが言及している「バージョントレイン」に関しては、beta8とrc2の間で多くの痛みがなくなったようです。

dnvm upgrade -u -arch x64 -r coreclr

私はcoreclrこれらの2つのNuGetフィードで最も運が良かった:

"https://www.myget.org/F/aspnetvnext/"
"https://nuget.org/api/v2/"

私はときに行うパッケージの問題が欠落している、それはこれらの同じ犯人だ時間の90%

Newtonsoft.Json
Ix-Async
Remotion.Linq

ほとんどの場合、メインのNuGet.orgフィードを強制することでこれらを回避できます。

dnu restore;
dnu restore -s https://nuget.org/api/v2

これが私の作業中のconfig.jsonです:

{
"dependencies": {
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc2-*",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc2-*",
    "Microsoft.AspNet.Hosting": "1.0.0-rc2-*",
    "Microsoft.AspNet.Http": "1.0.0-rc2-*",
    "Microsoft.AspNet.Http.Abstractions": "1.0.0-rc2-*",
    "Microsoft.AspNet.Mvc.Core": "6.0.0-rc2-*",
    "Microsoft.AspNet.Mvc.Razor": "6.0.0-rc2-*",
    "Microsoft.AspNet.Owin": "1.0.0-rc2-*",
    "Microsoft.AspNet.Routing": "1.0.0-rc2-*",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc2-*",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-rc2-*",
    "Microsoft.AspNet.Session": "1.0.0-rc2-*",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc2-*",
    "EntityFramework.Commands": "7.0.0-rc2-*",
    "EntityFramework.Core": "7.0.0-rc2-*",
    "EntityFramework.InMemory": "7.0.0-rc2-*",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc2-*",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc2-*",
    "EntityFramework.Relational": "7.0.0-rc2-*",
    "EntityFramework7.Npgsql": "3.1.0-beta8-2",
    "Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc2-*",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-*",
    "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-*",
    "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc2-*",
    "Microsoft.Framework.Configuration.CommandLine": "1.0.0-*",
    "Microsoft.Framework.Configuration.EnvironmentVariables": "1.0.0-*",
    "Microsoft.Framework.Configuration.Json": "1.0.0-*"
},
"commands": {
    "ef": "EntityFramework.Commands",
    "dev": "Microsoft.AspNet.Hosting --ASPNET_ENV Development --server Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5004"
},
"frameworks": {
    "dnxcore50": {}
}
}

上記のリストはconfig.jsonではなく、project.jsonからのものですが、以前は知らなかった有用な依存関係が提供されたため、私はまだ賛成しています。
ロンC

1

dnxcore50およびdnx451の参照を緩和しようとすると、依存関係の欠落の問題もありました。

この正しい「依存関係」を理解した場合:{}はフレームワーク間で共有されます。

次に、「フレームワーク」内の「依存関係」:{}は、そのフレームワークに固有です。

dnxcore50はモジュラーランタイム(自己完結型)であるため、基本的に、コア依存関係が他の場所に散在している従来の.netフレームワークとは異なり、プログラムを実行するために必要なすべてのコアランタイムが含まれています。

つまり、ある時点でMacまたはLinuxでホストすることを決定した場合に備えて、最小限のアプローチに固執したいと思いました。

Ranをcshtmlビューでの奇妙な依存関係の問題に更新し、今のところdnx451に対応しました。

これは私のproject.jsonです

{
"webroot": "wwwroot",
"version": "1.0.0-*",

"dependencies": {
    "System.Runtime": "4.0.10",
    "Microsoft.AspNet.Hosting": "1.0.0-beta4",
    "Microsoft.AspNet.Mvc": "6.0.0-beta4",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta6-12075",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta6-12457",
    "Microsoft.Framework.DependencyInjection": "1.0.0-beta4",
    "Microsoft.Framework.DependencyInjection.Interfaces": "1.0.0-beta5"
 },

"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://admin.heartlegacylocal.com"  },

"frameworks": {
"dnx451": { }
 }
},

"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"exclude": [
  "wwwroot",
  "node_modules",
  "bower_components"
  ]
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.