在我正在部署的其中一个网络工具中,我引用了一个负责运行某些进程的类库(Core)(在这种情况下使用SendGrid发送电子邮件)。
当我手动部署我的webjobs(上传.zip文件)时,一切正常。我清理了部署并使用Visual Studio 2013重新部署,并且webjob开始出现问题。这里的主要问题是,它正在寻找我的Core类库引用的SendGrid dll,而不是我的控制台应用程序,并且它没有发现它引发了以下错误:
"未处理的异常:System.IO.FileLoadException:无法加载文件或程序集' SendGrid .... Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)"
我FTP进入网站,发现有效的SendGrid程序集不在我的WebJob所在的位置。
我的问题是:有没有办法强制在使用VS 2013进行部署时将这些依赖项复制到正确的目录?
谢谢,
答案 0 :(得分:2)
我是在2013年夏季更新中放入WebJobs工具的团队成员,我可以告诉您我们已经知道这个问题,并为下一个问题检查过它更新,即将推出。与此同时,解决方法是将程序集引用设置为您需要的程序集 - 仅NuGet程序包将解决此问题 - 并重新发布。我们实际上使用NuGet package来为VS中的WebJobs执行部署逻辑。一旦我们发布更新,我们还将发布NuGet(现在正在进行最终测试),因此Summer 和 Fall更新的客户将减轻此问题。
答案 1 :(得分:1)
这似乎是来自Microsoft的已知错误,不幸的是,他们似乎并不急于解决它。可能的解决方案:
var t = typeof(ThirdParty.SomeClass);
答案 2 :(得分:0)
通过执行以下操作解决了我的问题。