在云项目中使用VS2012“Package”命令时,直接调用azure sdk cspack.exe时,我得到一个9mb .cspkg文件而不是7mb。使用命令行时必须遗漏一些重要的东西,我将它用于连续构建服务器 - 我希望有一种更好的方法来在构建服务器上打包云项目,而不是调用cspack.exe,以防万一但是
命令我在MSBuild(Bamboo任务)结束时调用powershell
& cspack "$cloudProject/ServiceDefinition.csdef" "/role:$role;$rolePath" "/rolePropertiesFile:$role;$propertiesFile" "/sites:$role;Web;$rolePath" "/out:CmsBase.Cloud.cspkg" "/generateConfigurationFile:ServiceConfiguration.Cloud.cscfg"
我将7mb软件包部署到azure时看到的错误是调用http://xyz.com/Message/Index时的404,其中Message是MVC控制器。 vs2012内的模拟器和部署按预期工作。
由于
答案 0 :(得分:0)
我认为问题可能出在您的/ role参数上。查看http://msdn.microsoft.com/en-us/library/windowsazure/gg432988.aspx页面上的示例,他们不会添加路径,只会添加入口点的DLL名称。你使用/ role:$ role; $ rolePath正在那里放一条路径。如果$ role的值与包含角色入口点的程序集名称相同,那么改为使用/ role:$ role; $ role来查看它的位置。
您还可以使用MSBuild直接调用Azure SDK工具附带的CSPack构建任务。这与使用package命令时VS调用的任务相同。 WindowsAzure.com上有一篇文章描述了这一点:http://www.windowsazure.com/en-us/develop/net/common-tasks/continuous-delivery/#step2。如果您对传递给CSPACK MSBuild任务的参数有疑问,可以在工具 - >下将MSBuild详细程度转换为诊断。选项>项目和解决方案 - >构建并运行。然后运行Package命令并查看它被馈送的内容。
如果您有兴趣尝试跟踪哪些内容未被包含,那么您可以深入了解生成的cspkg文件。从.cspkg重命名.zip并提取内容。在每个内部,您将部署的每个角色都有一个.cssx文件。将此.cssx文件重命名为.zip并将其解压缩。现在,您将看到在启动时将传递给角色实例的内容。使用文件比较工具,如winDiff,Beyond Compare等,你应该能够看到两者之间的文件有什么不同和缺失。这可能有助于找出差异。