我有一个包含 4 个项目的 Azure 解决方案。 (Windows 8 上的 VS 2012、Azure Tools 1.8)
- 具有通用代码的核心项目
- 网络角色前端
- 用于服务数据(来自 SQL Azure DB)的服务角色
- 计划任务的辅助角色
所有角色项目都通过 copy local = true...标准内容引用核心项目。
Web 角色和辅助角色工作正常,但我的服务角色始终陷入初始化 - 启动 - 回收循环中。
当我浏览到该服务时,我收到Could note load file or assembly FileNotFoundException
。
果然,连接到服务器的 RDP 和 DLL 丢失了。
查看本地的包文件,其他角色包括缺少的 DLL,但不包括服务角色。
如果我使用 VS 将服务角色(不是 azure 发布)发布到本地文件系统,则包含核心 DLL,证明 VS 设置对于本地复制来说是正确的。
VS 中是否有其他方法可以影响添加到 Azure 部署包的文件,或者是否有一种简单的方法可以在不使用 VS 的情况下编写包的创建脚本?
最佳答案
正如我在评论中所写,我的情况与您相同(Windows 7 和 8、VS 2012、Azure SDK 1.8)。 Copy Local 设置为 true,但当我打开 *.cspkg 包时,approot 文件夹中缺少引用的程序集。我所做的是创建了新的 worker 角色项目并复制了旧项目的代码。现在所有组件都已包含在内。
更新: 对于我来说,上述解决方案并不是真正必要的。我真正的问题是我的 Web 角色意外引用了我的工作角色程序集。当我删除这个不必要的引用时,辅助角色获得了包中的所有程序集。在我看来,这种行为是有问题的。
关于即使使用复制本地集,Azure 包也不包括链接的项目 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14679174/