【问题标题】:Getting code from Windows Azure VM从 Windows Azure VM 获取代码
【发布时间】:2013-08-27 14:50:27
【问题描述】:
好的,所以我的硬盘刚刚崩溃。大不了。我所有的 Web 开发代码都随之运行,现在我在 Ubuntu 上运行 ddrescue 试图恢复我可以恢复的任何数据。硬盘一直掉线,有时会很长一段时间不响应,真是让人头疼。
不管怎样,回到主题——我有我的 web 开发代码,它被打包并上传到 Azure;现在我想知道是否可以从 VM 获取我所有的 .cs 文件。我注意到 approot 和 siteroot 文件夹,但我看到的只是视图、.asax 文件、其他一些杂项、东西,没有 .cs 扩展名。
有什么方法可以得到我打包的代码的副本吗?或者(作为最后的手段)以任何方式获取 .cspkg 文件并从那里工作?
【问题讨论】:
标签:
c#
azure
virtual-machine
data-recovery
【解决方案1】:
您在网络角色和 cspkg 文件中看到的站点是编译的输出,因此您无法从中获取原始 .cs 文件。也就是说,您可以使用 Reflector、Just Decompile 之类的工具或其他各种反编译器,将您编译的位逆向工程为非常接近原始 C# 代码的东西(我不是假设这是您自己的代码,或没有针对逆向工程的规定的代码)。这至少可以让您使用 webrole 上的位来取回大部分代码,然后查看它,看看它做得有多好。
注意,您可以打开 cspkg 文件。它只是一个 zip 文件。您可以使用 .zip 文件扩展名重命名并打开它,但您不会在其中找到 .cs 文件。您发现这种情况的唯一情况是您在一个 Web 角色中有多个网站。 Windows Azure 的默认打包程序不会编译其他站点,只会打包其根目录中的所有文件。对实际部署根本没有帮助,但这可能对您没有帮助。
您可能在这方面领先于我,但我建议您使用某种个人源代码控制系统来避免将来出现此问题。