使用Visual Studio 2013进行部署时,不会复制相关依赖项(DLL)

时间:2014-09-16 00:50:25

标签: azure visual-studio-2013 azure-webjobs

在我正在部署的其中一个网络工具中,我引用了一个负责运行某些进程的类库(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进行部署时将这些依赖项复制到正确的目录?

谢谢,

3 个答案:

答案 0 :(得分:2)

我是在2013年夏季更新中放入WebJobs工具的团队成员,我可以告诉您我们已经知道这个问题,并为下一个问题检查过它更新,即将推出。与此同时,解决方法是将程序集引用设置为您需要的程序集 - 仅NuGet程序包将解决此问题 - 并重新发布。我们实际上使用NuGet package来为VS中的WebJobs执行部署逻辑。一旦我们发布更新,我们还将发布NuGet(现在正在进行最终测试),因此Summer Fall更新的客户将减轻此问题。

答案 1 :(得分:1)

这似乎是来自Microsoft的已知错误,不幸的是,他们似乎并不急于解决它。可能的解决方案:

  1. 您可以手动复制
  2. 创建构建事件以将其复制
  3. 似乎有些人幸运地添加了这样的东西 var t = typeof(ThirdParty.SomeClass);

答案 2 :(得分:0)

通过执行以下操作解决了我的问题。

  1. 设置引用的程序集" Copy Local - >真"
  2. 将您的解决方案配置设置为"发布"