servicestack - 为什么 ServiceStack.Text 没有被复制到 Bin?

标签 servicestack nuget

我已通过 Nuget 将 ServiceStack.Redis 添加到我拥有的程序集中。该包依赖于 ServiceStack.Common,后者依赖于 ServiceStack.Text

这个项目是从我的 web 项目中引用的,但是当我构建网站并在浏览器中加载它时,我收到错误

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.



果然,当我转到我网站的 Bin 目录时,它不存在。奇怪的是,如果我转到我引用的类库的 Bin 目录(我将 Nuget 包拉入的那个),它就在那里。

回顾一下
  • 类库
  • ServiceStack.Redis 通过 Nuget(包括 ServiceStack.Common 和 ServiceStack.Text)
  • 所有这些都在构建时位于 Bin 目录中
  • 网络项目
  • 引用类库
  • 所有依赖项都移到 Bin 除了 ServiceStack.Text

  • 我难住了。有谁知道为什么?

    注:该错误似乎是在寻找 3.9 版。 24 ,但 Nuget 拉取的版本是 3.9。 26 .如果我手动将它移动到 Web/Bin,它虽然可以工作

    最佳答案

    检查 .csproj 文件中的程序集引用属性,也许它们仍在引用旧版本的 ServiceStack.Text。有时我发现 NuGet 会在包更新期间的某个时刻失败,并使您的程序集引用处于错误状态。例如,您的 packages.config文件可能会正确显示所有 ServiceStack 引用的版本号相同,但您的 .csproj文件可能正在引用 3.9.24ServiceStack.Common3.9.26ServiceStack.Text .因此,它会将这些程序集的不同版本复制到您的 bin 目录中。它可能仍然可以成功构建,因为您在 NuGet 包目录中缓存了 ServiceStack.Common 的旧副本。

    我通过手动编辑 .csproj 文件以获得正确的程序集路径和版本号,或者通过 NuGet 卸载并重新安装受影响的包来解决这个问题(这可能需要重新安装大部分/所有 ServiceStack 包,因为 ServiceStack.Text 就是这样低级依赖。

    关于servicestack - 为什么 ServiceStack.Text 没有被复制到 Bin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13097685/

    相关文章:

    servicestack - ServiceStack 版本 4.0.5.0(当前 Nuget 版本)中的 JsonDateHandler 枚举在哪里?

    redis - 透明的 Redis Dal 与 serviceStack Redis

    c# - 服务堆栈.Text : JsConfig changes done after serializing some objects not picked up

    redis - Redis 服务器重启后服务堆栈 Redis 重新连接

    nuget - 如何卸载不可用的nuget软件包?

    asp.net-mvc-4 - 如何使用 Redis 缓存自定义列表?

    continuous-integration - 是否有可能让 NuGet.exe 在与 Visual Studio 断开连接的情况下运行?

    .net - Webmatrix 3.0 nuGet 关于 Net.Http 的投诉

    .net - 面向 .net 4.7.1 的项目无法引用依赖于 .net standard 2.0 的 NuGet 包

    .net - Azure Artifacts 中的随机 NuGet 包