17

我有一个包含 4 个项目的 Azure 解决方案。(Windows 8 上的 VS 2012,Azure 工具 1.8)

  1. 具有通用代码的核心项目
  2. Web 角色前端
  3. 服务数据的服务角色(来自 SQL Azure DB)
  4. 计划任务的工作角色

所有角色项目都使用 copy local = true... 标准内容引用核心项目。

web 角色和 worker 角色工作正常,但我的服务角色一直卡在 Initializing - Starting - Recycling 循环中。当我浏览到该服务时,我得到了Could note load file or assembly FileNotFoundException. 果然,RDP 到服务器和 DLL 都不见了。

在本地查看包文件,其他角色包括缺少的 DLL,但不包括服务角色。

如果我使用 VS 将服务角色(不是 azure publish)发布到本地文件系统,包含核心 DLL,证明 VS 设置对于复制本地是正确的。

VS 中是否有任何其他方法可以影响添加到 Azure 部署包中的文件,或者是否有一种简单的方法可以在不使用 VS 的情况下编写包的创建脚本?

4

2 回答 2

18

正如我在评论中所写,我的情况与您相同(Windows 7 和 8、VS 2012、Azure SDK 1.8)。Copy Local设置为true,但是当我打开 * .cspkg包时, approot文件夹中缺少引用的程序集。我做了什么,我创建了新的 Worker Role 项目并从旧项目中复制了代码。现在包括所有组件。

更新:在我的情况下,上述解决方案并不是真正必要的。我真正的问题是我的 Web 角色不小心引用了我的 Worker Role 程序集。当我删除这个不必要的引用时,工作角色获得了包中的所有程序集。在我看来,这种行为是错误的。

于 2013-02-07T10:40:47.307 回答
2

我可以确认安东在以“更新”开头的段落中的回答中所描述的内容:

我有一个名为“Utils”的类库项目、一个“WorkerRole”和一个“WebRole”项目。WorkerRole 和 WebRole 都引用了 Utils。此外,WebRole 引用了 WorkerRole - 因为后者包含一些用作服务总线消息的类。

结果是 Utils.dll 没有包含在云服务的 .cspkg 文件中,并且 Visual Studio 中没有错误消息。在将消息类放入项目 Utils 并删除引用 WebRole->WorkerRole 之后,一切都很好了。

似乎确实是一个错误。

于 2013-09-14T22:47:20.510 回答