3

少し背景:最近、ServiceStackライブラリをソースコード(https://github.com/ServiceStack/ServiceStack)から再コンパイルしました。また、いくつかのバグ修正を完了した後、ServiceStack.Textプロジェクトを再コンパイルしました。ServiceStack.Text dllファイルをServiceStackプロジェクトの「lib」フォルダーにコピーしました(ServiceStackソリューションにはテキストにシリアライザーが含まれていないため、そこにあります)。

次のように、TypeLoadExceptionsが発生します。

System.TypeLoadException:アセンブリ'ServiceStack.ServiceInterface、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null'のタイプ'ServiceStack.ServiceInterface.Testing.MockHttpResponse'のメソッド'get_StatusCode'には実装がありません。System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssemblyアセンブリ、ObjectHandleOnStack retTypes)at System.Reflection.RuntimeAssembly.GetExportedTypes()at----ここからのコード...----

問題が何であるかわかりません。ServiceStack.OrmLiteが参照されているため(このプロジェクトの他のソリューションも参照しているため)、循環DLL参照の問題(DLL Hell)である可能性があります。ただし、ServiceStackプロジェクトへのすべての参照を削除した後でも、問題は解決していません。

この投稿にはいくつかのアイデアがあるようですが、私はそれらを実行することができませんでした: TypeLoadExceptionは「実装なし」と言いますが、実装されています

4

1 に答える 1

3

すべての同期を維持する必要がある ServiceStack のコンポーネントのさまざまなバージョンにダーティ dll を使用しています。

各主要な ServiceStack コンポーネント dll のアセンブリでは、バージョン番号がマークされています。これは、NuGet にデプロイされているバージョンと一致します。たとえば、ServiceStack の最新バージョンはv3.9.38です。少なくともv3を使用していることを確認する必要があります。他のすべてのライブラリの.9.38 。

コア ServiceStack 依存関係マトリックスは次のようになります。

ServiceStack.Text
  +
  > ServiceStack.Interfaces
  > ServiceStack.Common
      + 
      > ServiceStack.Redis
      > ServiceStack.OrmLite
          +
          > ServiceStack
              +
              > ServiceStack.ServiceInterface

ServiceStack.dll のv3.9.38を使用している場合は、ServiceStack の上のすべてのサブ コンポーネントが少なくともv3.9.38であることを確認する必要があります。

于 2013-03-14T19:50:29.747 に答える