0

在云项目上使用 VS2012“Package”命令时,我得到一个 9mb 的 .cspkg 文件,而直接调用 azure sdk cspack.exe 时为 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 中的模拟器和部署按预期工作。

谢谢

4

1 回答 1

0

我认为问题可能出在您的 /role 参数上。查看http://msdn.microsoft.com/en-us/library/windowsazure/gg432988.aspx页面上的示例,他们不添加路径,只添加入口点的 DLL 名称。您对 /role:$role;$rolePath 的使用是在其中放置一条路径。如果 $role 的值与包含角色入口点的程序集名称相同,则改为输入 /role:$role;$role 以查看您的位置。

你还可以直接调用 Azure SDK 工具附带的 CSPack 构建任务和 MSBuild。这与使用 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 等文件比较工具,您应该能够看到两者之间有哪些不同和缺失的文件。这可能有助于查明差异。

于 2013-07-27T16:53:30.540 回答