gpt4 book ai didi

.net - 引用的程序集 (DLL) 在发布时突然没有被复制

转载 作者:行者123 更新时间:2023-12-04 08:52:32 26 4
gpt4 key购买 nike

在 Web 项目发布期间,我在部署引用库 (ServiceStack.OrmLite) 时遇到了一个奇怪的问题。直到上周左右,它一直工作正常,现在突然当项目从 Visual Studio 或 msbuild 发布到本地文件系统、FTP 或 Web 部署时,一些 ServiceStack DLL 没有被复制。

OrmLite 引用通过 nuget 添加到类库项目中。类 lib 项目引用被添加到主 Web App 项目中。当我发布 Web App 项目时,它编译并复制除五个 ServiceStack.OrmLite DLL 中的三个之外的所有文件(即 ServiceStack.Common、ServiceStack.Interfaces 和 ServiceStack.Text 未复制)。我已经检查(甚至重置)所有 DLL 引用的“Copy Local”属性为“true”,但问题仍然存在。我还检查了 OrmLite 未在 GAC 中注册。

任何提示或建议表示赞赏。

更新 1:

我遇到了一堆与同一问题相关的帖子(但不是特别与 ServiceStack 相关)。似乎 Visual Studio 和 msbuild [理所当然地] 在发布期间忽略了项目中的任何间接引用。

以下是我遇到的一些解决方案:

  • 还引用主项目中的程序集。
  • 使用构建脚本复制 DLL 作为构建后事件。
  • 向类库添加一个虚拟(模拟)方法,并实例化程序集或命名空间中在发布期间未复制的任何类。我选择了这个选项,它部分解决了这个问题。现在,ServiceStack.Common 和 ServiceStack.Text 被复制,但 ServiceStack.Interfaces 仍然没有被复制,即使我已经创建了一个“ServiceStack.Logging.LogManager”的模拟实例,它是 ServiceStack.Interfaces 的一部分。所以,基本上我仍然被困住了。
  • 最佳答案

    你可以试试this answer .

    基本上,添加一个对应的<dependentAssembly>进入您的 {web|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>

    关于.net - 引用的程序集 (DLL) 在发布时突然没有被复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19260788/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com