7

I have added ServiceStack.Redis via Nuget to an assembly that I have. That package has a dependency on ServiceStack.Common which has a dependency on ServiceStack.Text

this project is referenced from my web project, but when I build the Website and load it in a browser I get the error

Could not load file or assembly 'ServiceStack.Text, Version=3.9.24.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

Sure enough, when I go to the Bin directory of my website it isn't there. Oddly enough, if I go to the Bin directory of the class library I am referencing (the one I pulled the Nuget package into) it IS there.

To recap

  • ClassLibrary
    • ServiceStack.Redis via Nuget (includes ServiceStack.Common and ServiceStack.Text)
    • All of these make it in the Bin dir upon build
  • Web Proj
    • Refs ClassLibrary
    • all dependencies are moved to Bin except ServiceStack.Text

I'm stumped. Does anyone know why?

Note: The error appears to be looking for version 3.9.24, but the version Nuget pulled is 3.9.26. If I move it to the Web/Bin manually it works though

4

3 に答える 3

1

.csproj ファイルのアセンブリ参照プロパティを確認してください。おそらく、古いバージョンの ServiceStack.Text を参照している可能性があります。パッケージの更新中のある時点で NuGet が失敗し、アセンブリ参照が悪い状態のままになることがあります。たとえば、packages.configファイルはすべての ServiceStack 参照が同じバージョン番号であることを正しく示している可能性がありますが、.csprojファイルは3.9.24forServiceStack.Commonおよび3.9.26for を参照している可能性がありますServiceStack.Text。したがって、これらのアセンブリのさまざまなバージョンが bin ディレクトリにコピーされます。NuGet パッケージ ディレクトリに ServiceStack.Common の古いコピーがキャッシュされているため、正常にビルドできる可能性があります。

これを修正するには、.csproj ファイルを手動で編集して正しいアセンブリ パスとバージョン番号を指定するか、NuGet を介して影響を受けるパッケージをアンインストールして再インストールします (ServiceStack.Text がそのようなものであるため、ServiceStack パッケージのほとんどまたはすべてを再インストールする必要がある可能性があります)。低レベルの依存関係。

于 2013-06-22T13:32:23.060 に答える
0

esker が言うように、更新時に Nuget に問題がある可能性がありますが、ServiceStack Nuget パッケージにもいくつかの問題があります。

現在動作している最新のパッケージは 3.9.60 です。ServiceStack.Text.dll は実際には 3.9.60 です。

ServiceStack 3.9.61 以降には ServiceStack.Text.dll バージョン 3.9.59 があります。

コピーの問題が再び発生しています。

于 2013-09-26T09:40:10.813 に答える