【问题标题】:Relevant dependencies (DLL) not being copied when deploying using Visual Studio 2013使用 Visual Studio 2013 部署时未复制相关依赖项 (DLL)
【发布时间】:2014-09-16 00:50:25
【问题描述】:

在我正在部署的其中一个网络作业中,我引用了我的一个类库(核心),它负责运行某些进程(在本例中使用 SendGrid 发送电子邮件)。

当我手动部署我的网络作业(上传 .zip 文件)时,一切正常。我清理了部署并使用 Visual Studio 2013 重新部署,webjob 开始出现问题。这里的主要问题是它正在寻找我的核心类库而不是我的控制台应用程序引用的 SendGrid dll,并且它没有完成它并引发以下错误:

“未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'SendGrid....版本=4.5.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)“

我通过 FTP 进入网站,发现 SendGrid 程序集实际上不在我的 WebJob 所在的位置。

我的问题是:在使用 VS 2013 进行部署时,有没有办法强制将此依赖项复制到正确的目录?

谢谢,

【问题讨论】:

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


    【解决方案1】:

    我是在 2013 年夏季更新中推出 WebJobs 工具的团队中的一员,我可以让您知道我们已经意识到了这个问题,并已为下一次更新签入了修复程序,其中快出来了。同时,解决方法是设置对您需要的程序集的程序集引用 - 仅 NuGet 包就可以解决此问题 - 并重新发布。我们实际上使用NuGet package 来为 VS 中的 WebJobs 执行部署逻辑。发布更新后,我们还将发布 NuGet(现在正在进行最终测试),因此夏季秋季更新的客户将缓解此问题。

    【讨论】:

    • 感谢布雷迪提供的信息。有什么地方可以报告问题吗?我遇到了解决方案文件夹无法正常工作的问题 (stackoverflow.com/questions/25810050/…),而且,当我部署到网站时,我必须在 Azure 中手动添加 AzureJobsDashboard 连接字符串,而不是将它们放入我的解决方案的连接字符串中并发布。再次感谢。
    • 我们有几个不同的论坛可供您使用,我们也有在线的 MS Connect 工具,您可以通过它向我们提出问题。 Connect 是最好的方法,因为我们可以将客户问题直接传递给相应的团队。
    • 谢谢,我会将通过建议工具发现的问题归档。
    • @bradygaster 在这种情况下,nuget 包有什么特别之处吗,或者我可以添加无聊的旧常规程序集引用(使用 copy local = true)?
    • @bradygaster RC 1.0 解决了这个问题吗?我刚刚尝试过,但它对我不起作用,这就是我问的原因。但我可能做错了什么。
    【解决方案2】:

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

    1. 您可以手动复制它
    2. 创建一个构建事件来复制它
    3. 似乎有些人很幸运地添加了这样的内容 var t = typeof(ThirdParty.SomeClass);

    【讨论】:

      【解决方案3】:

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

      1. 将引用的程序集设置为“复制本地 -> 真”
      2. 将您的解决方案配置设置为“发布”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-14
        • 1970-01-01
        相关资源
        最近更新 更多