3

我刚刚在 Visual Studio 2012 中通过 NuGet 安装了 OrmLite(用于 MySql)。

安装通过,没有任何错误,所有 DLL:s 似乎都被添加为参考:

ServiceStack.Common (3.9.70.0)
ServiceStack.Interfaces (1.0.0.0)
ServiceStack.Text (3.9.70.0)
ServiceStack.OrmLite (3.9.70.0)
ServiceStack.OrmLite.MySql (3.9.70.0)

编译没有错误。但是,当我运行此行时:

dbConnCommOrm.CreateTableIfNotExists<ModuleSettings>();

然后我得到这个错误:

无法加载文件或程序集“ServiceStack.Common,Version=3.9.69.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。

ServiceStack.Common dll 引用(通过 NuGet)是 3.9.70.0 版本,所以它找不到 3.9.69.0 并不奇怪。

问题是:为什么在需要 3.9.69.0 时安装了 3.9.70.0?NuGet“脚本”有什么问题(或者无论如何有效),或者我错过了什么?

奇怪的是,即使我在上面提到的行中遇到异常,表“ModuleSettings”仍然正确创建!

此外,从 GitHub 下载 ZIP 文件并从那里提取 DLL 也不起作用:在ServiceStack.OrmLite-master\lib中有前三个文件(见上文),出于某种原因,我发现 ServiceStack.Ormlite.dll 在ServiceStack.OrmLite-master\lib/signed文件夹,但ZIP 文件中的任何位置都没有ServiceStack.OrmLite.MySql.dll


我还可以补充一点,安装旧版本也不起作用。我试过这个: http ://www.nuget.org/packages/ServiceStack.OrmLite.MySql/3.9.69

PM> Install-Package ServiceStack.OrmLite.MySql -Version 3.9.69

它仍然安装了 ServerStack.Common/Text v 3.9.70.0


任何提示将不胜感激=)

4

2 回答 2

4

您是否尝试在 web.config 中添加程序集重定向?

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="ServiceStack.Common" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.9.70.0" newVersion="3.9.70.0" />
      </dependentAssembly>
   </assemblyBinding>
</runtime>

可能是您安装的软件包中的某个项目专门寻找 3.9.69.0 版本并且尚未更新。使用程序集绑定重定向应该覆盖它并将对该程序集的所有请求重定向到 3.9.70 版本。

编辑

这也适用于非 Web 项目。打开(或添加)一个 app.config 文件,并添加相同的信息。它是元素内部的顶级<configuration></configuration>元素。

如果一个空的 app.config 文件:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="ServiceStack.Common" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-3.9.70.0" newVersion="3.9.70.0" />
          </dependentAssembly>
       </assemblyBinding>
    </runtime>
</configuration>
于 2013-11-09T23:29:58.837 回答
-1

在我的解决方案中,我有以下项目:Site、BusinessLogic、DAL

使用调用链:Site -> BusinessLogic -> DAL (OrmLite here)

由于 ServiceStack 的松散耦合,Site 项目没有引入对ServiceStack.Common. 我的解决方案是

安装包 ServiceStack.Common -Version 3.9.71 -DependencyVersion 最高

对于现场项目。注意 DependencyVersion 的使用,否则你会得到一个较小版本的 ServiceStack.Text,事情会很不愉快。

于 2014-09-23T20:15:00.157 回答