【发布时间】:2015-05-06 08:52:36
【问题描述】:
在 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 仍然没有被复制。所以,基本上我还是卡住了。
【问题讨论】:
-
您确定这些程序集不在任何 GAC 中吗? stackoverflow.com/questions/2660355/net-4-0-has-a-new-gac-why
-
你找到解决这个问题的新方法了吗?我的问题是还要找出缺少的 DLL,因为在本地机器上一切正常,但在集成服务器中却不行……即使我们必须手动添加引用,我们怎么知道要添加哪个 DLL?
标签: .net visual-studio servicestack ormlite-servicestack