在 Web 项目发布期间,我在部署引用库 (ServiceStack.OrmLite) 时遇到了一个奇怪的问题。直到上周左右它工作正常,现在突然从 Visual Studio 或 msbuild 将项目发布到本地文件系统、FTP 或 Web Deploy 时,一些 ServiceStack DLL 没有被复制。
OrmLite 引用通过 nuget 添加到类库项目中。类库项目引用被添加到主 Web 应用项目中。当我发布 Web App 项目时,它编译并复制了所有文件,除了五个 ServiceStack.OrmLite DLL 中的三个(即不复制 ServiceStack.Common、ServiceStack.Interfaces 和 ServiceStack.Text)。我已经检查(甚至重置)所有 DLL 引用的“复制本地”属性为“真”,但问题仍然存在。我还检查了 OrmLite 没有在 GAC 中注册。
任何提示或建议表示赞赏。
更新1:
我遇到了一堆与同一问题相关的帖子(但不是特别是 ServiceStack)。似乎 Visual Studio 和 msbuild [正确地] 在发布期间忽略了项目中的任何间接引用。
以下是我遇到的一些解决方案:
也引用主项目中的程序集。
使用构建脚本将 DLL 复制为构建后事件。
向类库添加一个虚拟(模拟)方法,并从程序集或命名空间中实例化任何在发布期间未复制的类。我选择了这个选项,它部分解决了这个问题。现在,ServiceStack.Common 和 ServiceStack.Text 被复制,但即使我创建了 ServiceStack.Interfaces 的一部分“ServiceStack.Logging.LogManager”的模拟实例,ServiceStack.Interfaces 仍然没有被复制。所以,基本上我还是卡住了。