You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET反编译类修改是否合规?求Visual Studio更优方案

问题解答

关于当前方法的正确性

你现在直接修改临时目录里的反编译文件,仅能临时生效,但并不规范也不可靠:

  • 这些C:\User\name\AppData\Local\Temp\MetadataAsSource(guid id)\DecompilationMetaDataAsSourceFileProvider(guid id)\decompiled.cs这类路径下的文件是Visual Studio为展示元数据自动生成的临时文件,一旦清理系统临时文件、重启VS或重新加载项目,所有修改都会丢失。
  • 这种修改并没有真正改变项目依赖的程序集,只是在VS的临时反编译视图中临时生效,无法作为长期解决方案。

Visual Studio中的更优修改方式

根据你的场景(反向移植新增枚举值,目标枚举属于序列化类),推荐两种规范的方式:

1. 若目标枚举所在程序集为自有代码(可获取源代码)

直接找到该程序集的原始项目,在枚举中新增目标值后重新编译,将编译后的新程序集替换旧版本项目中的引用即可。这是最严谨的方式,能确保所有依赖该程序集的模块都能获取到正确的枚举定义。

2. 若目标枚举所在程序集无法获取源代码(第三方/只读程序集)

利用Visual Studio的反编译代码导出功能,将枚举代码本地化到项目中:

  • 在解决方案资源管理器中找到引用的目标程序集,展开后定位到需要修改的枚举。
  • 右键点击该枚举,选择**“查看反编译代码”**。
  • 在打开的反编译窗口顶部,点击**“复制到项目”**按钮,将枚举的完整代码复制到你的项目中(必须保持命名空间、枚举名称和原有枚举值完全一致)。
  • 在本地复制的枚举文件中新增需要的枚举值,此时项目会优先使用本地定义的枚举,取代原程序集中的版本,修改会持久保存在项目代码中,不会丢失。

注意:因为是序列化场景,若原枚举使用了DataContract等序列化特性,记得给新增的枚举值添加对应的[EnumMember]属性,避免出现序列化/反序列化异常。

内容的提问来源于stack exchange,提问作者Richard Brescher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:35:10