无.SLN文件时如何用IIS发布的ASP.NET MVC5 C#项目创建解决方案
你描述的场景完全可以实现,按照以下步骤操作即可恢复可在Visual Studio中正常编辑运行的解决方案:
操作步骤
第一步:导出IIS站点完整文件
打开IIS管理器,找到对应项目的站点,右键选择「管理网站」→「高级设置」,找到「物理路径」对应的服务器文件夹,把整个文件夹(包含隐藏的bin、App_Data等所有子目录)完整拷贝到本地工作目录,不要遗漏文件。该目录中会包含站点所有静态资源、Web.config配置文件、编译后的程序集文件,若发布时未开启预编译视图,还会保留原始.cshtml视图文件。第二步:反编译核心程序集获取C#源码
项目的业务逻辑、控制器、模型等代码均已编译在bin目录下的主程序集DLL中(通常与原项目同名,也可通过Web.config中<compilation>节点关联的程序集名确认),你可以使用dnSpy或ILSpy等.NET反编译工具直接导出可编译的C#项目:- 打开反编译工具后,加载bin目录下的项目主DLL以及依赖的业务相关DLL
- 右键点击对应程序集,选择「导出项目」/「导出为C#项目」选项,工具会自动生成对应的
.csproj项目文件以及分层的.cs源码文件
注意:如果原项目做了代码混淆,反编译出的代码会存在可读性下降、语法异常的问题,需要先做混淆还原;常规未混淆的ASP.NET MVC5项目反编译准确率可达90%以上,仅需少量修正即可正常编译。
第三步:补全项目结构
把第一步导出的站点文件,对应合并到反编译生成的项目目录中:- 将静态资源(js、css、图片等)、
Web.config、已存在的.cshtml视图文件全部复制到项目根目录的对应路径下 - 检查项目引用列表,把bin目录下的第三方依赖DLL添加到项目引用中,自动识别的系统程序集引用不需要额外调整
- 若原项目开启了预编译视图,反编译工具会自动将视图对应的程序集还原为
.cshtml文件,不需要额外手动处理。
- 将静态资源(js、css、图片等)、
第四步:创建解决方案并验证
用Visual Studio打开反编译生成的.csproj项目文件:- 点击菜单栏「文件」→「添加」→「新建解决方案」,将当前项目添加到新创建的解决方案中
- 执行清理项目操作后重新生成,排查编译错误:通常错误仅集中在少数反编译识别异常的语法、缺失的资源引用,逐行修正即可
- 生成成功后,配置本地IIS Express或本地IIS站点指向项目目录,启动测试页面访问、接口请求、业务逻辑是否与线上运行状态一致。
内容的提问来源于stack exchange,提问作者Daphnee
相关产品推荐
相关产品推荐

