我有一个Azure解决方案,其中包含4个项目。 (在Windows 8,Azure Tools 1.8上为VS 2012)
所有角色项目都有对核心项目的引用,其中复制local = true ...标准内容。
Web角色和worker角色工作正常,但是我的服务角色一直陷于Initializing-Starting-Recycling循环中。当我浏览该服务时,会显示Could note load file or assembly FileNotFoundException
。果然,到服务器的RDP和DLL丢失了。
在本地查看包文件,其他角色包括缺少的DLL,但没有服务角色。
如果我使用VS将服务角色(而不是Azure发布)发布到本地文件系统,则包含核心DLL is,证明VS设置对于本地副本是正确的。
VS中是否有其他方法可以影响添加到Azure部署程序包中的文件,或者有一种简单的方法可以在不使用VS的情况下编写创建程序包的脚本?
正如我在评论中写道,我和您的处境相同(Windows 7和8,VS 2012,Azure SDK 1.8)。 复制本地设置为true,但是当我打开* 。cspkg包时,approot文件夹中缺少引用的程序集。我做了什么,创建了一个新的Worker Role项目并从旧的项目中复制了代码。现在包括所有程序集。
更新:就我而言,上述解决方案并不是必需的。我真正的问题是我的Web角色意外引用了我的Worker Role程序集。当我删除了这个不必要的参考时,“工作者角色”将所有程序集打包在一起。我认为这种行为是儿童车。
我可以确认安东在他的答案中以“ UPDATE”开头的段落中描述的内容:
我有一个名为“ Utils”的类库项目,一个“ WorkerRole”和“ WebRole”项目。WorkerRole和WebRole都引用了Utils。另外,WebRole引用了WorkerRole-后者包含一些用作服务总线消息的类。
结果是Utils.dll没有包含在云服务的.cspkg文件中,并且在Visual Studio中没有错误消息。将消息类放入项目Utils中并删除引用WebRole-> WorkerRole之后,一切都很好。
似乎确实是个错误。