2017-04-18 1 views
-2

長年にわたりいくつかのプロジェクトで、最近ではRavenDBでこのパターンに気付きました。 ILSpyでRaven.Abstractions.dllなぜNewtonsoftを名前空間に埋め込むのですか?

オープニング、私はオール "ProjectName.SomeScope.Newtonsoft"

enter image description here

は、なぜこれが行われる気づきました? githubのソースコードを見ると、彼らはNewtonsoftのソースを引っ張っていて、Foddyを使ってNewtonsoftのタイプをRavenアセンブリに織り込んでいると推測しています。

タイプの衝突を防ぐためにこれが行われていることがわかります.Raven.Abstractions.Dllには、あなたが(コンシューマとして)そのバージョンを参照することなくNewtonsoftの特定のバージョンを持つことができます。

他の考えはありますか?

+0

変換するコンバータを使用していますか? –

+0

彼らはそれを行うので、Newtonsoftに別の依存関係を含める必要はありません。それでおしまい。彼らは何も織っていない。アセンブリをまとめるだけ。 ILMergeを使用すると、これを自分で簡単に行うことができます。 https://www.microsoft.com/en-us/research/people/mbarnett/を参照してください。 – Amy

答えて

2

その理由は、json.netとは異なる、時には互換性のないバージョンを使用していた他のプロジェクトと多くの競合が発生したためです。 独自のバージョンを使用することは、このすべてを避けることができたことを意味しました。

関連する問題