问题标签 [ildasm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clickonce - 为 clickonce wpf 应用程序编辑 setup.exe 资源字符串的自动化过程
我们有一个合理大小的应用程序,为 Y 版本的 Z 区域中的 N 个客户推出。对于每种情况,每个 clickonce URL 对应的 WCF 服务 URL 都是不同的。
在需要部署/更新之前,我们不知道这些将是什么。目前这是一个非常手动的过程:
构建解决方案,更新程序集版本更新 clickonce 客户端配置以具有正确的 url resign click 一旦应用程序设置服务(url,配置等)部署
我们正在尝试自动化这个过程,并在此过程中释放大量时间和错误。我们的方法是在每次提交时构建一个通用版本并按版本号将其存档(我们自动增加客户端版本号并将整个应用程序、客户端、服务器、数据库脚本等存储在该版本号下)。这意味着企业可以说我们有 UAT 的 X 版并且可以很高兴它上线。
我一直在创建自动化工具来存档、配置转换等,然后重新签署客户端应用程序。然后我们意识到单击一次会创建一个 setup.exe,其中包含需要更新的资源,例如名称将更改,url 更改。
我正在尝试找到一种方法来获取此 setup.exe 并以自动 / 命令行 / C# 方式更改资源字符串。
我尝试了 ildasm,但它不会打开它说“错误:setup.exe 没有有效的 CLR 标头并且无法反汇编”
编辑此资源或确保我们可以构建应用程序的通用版本然后针对每个新需求对其进行自定义的任何方式都会很棒。
ildasm - ILDASM 树视图中的字段顺序是否正确或 MetaInfo 中的顺序是否正确?
在尝试确定 .NET 值类型中字段的精确顺序时,我查看了 ILDASM 树视图和 ILDASM“MetaInfo”(即实际的 IL)。数据的两个视图中的字段顺序是相反的。
例如,System.Runtime.InteropServices.FILETIME 的树视图在 dwLowDateTime 之前列出了 dwHighDateTime。(我会发布一张图片,但这里没有足够的声誉点来这样做)。
另一方面,这里是对应的IL,使用View>>MetaInfo>>Show!在 ILDASM 中:
类型定义 #1655 (02000678)
哪个是正确的顺序?我认为 IL 是正确的,但需要确认。有谁知道这种差异的原因?
c# - 从不同机器上的相同 C# 源代码可重复构建
我正在尝试生产一个足够智能的工具,可以通过编程检查由在不同时间在两个单独的机器上编译的相同 C# 代码生成的发布版本二进制文件,并得出结论该代码是相同的,同时能够获取任何代码更改(如果存在)用于生成这些二进制文件的 c# 代码。
我尝试过使用多种方法,但为了保持简短,我将坚持最新的尝试。我在二进制文件上使用 /text 选项运行 ildasm,并在文本中替换匿名字段等的 GUID,但是当二进制文件来自不同的电脑时,我发现 ILDASM /text 选项生成的文本被重新排序。源自相同代码但在不同机器上由相同设置编译的二进制文件也出现了严重的重新排序。任何关于如何控制 IL 重新排序的建议将不胜感激?
干杯
PS:任何可靠地实现这一点的替代策略也是最受欢迎的。
c# - CLR 元数据类型定义表计数
考虑以下代码:
用 csc.exe 编译后,我使用 ILDasm 打开程序集,发现了一些我无法弄清楚的东西:
ILDasm“表演!” 命令仅显示单个 TypeDef(“程序”类),但在统计视图中我可以看到 TypeDef 计数为 2。
知道第二种类型是从哪里来的吗?
资料来源:Jeffrey Richter 的书“CLR via C#”第 3 版第 39 页。
asp.net - 找出引用 dll 的内容
我刚刚解决了以下错误:
System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Common,Version=5.0.505.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。
奇怪的事情 - 当我制作发布版本时它似乎只是一个问题,虽然有点断断续续 - 我可以创建一个调试版本,问题有时会暂时消失。
原来我在项目 Microsoft.Practices.EnterpriseLibrary.Data.dll 中有一个企业库 dll 没有被使用,版本为 5.0.505.0,看起来它试图拉入 Microsoft 的 v. 5.0.505.0 .Practices.EnterpriseLibrary.Common,当这个 'Common' dll 的 v. 5.0.414.0 已经在项目中时。没有确定为什么这主要发生在发布模式下。
有助于追踪这一点并清楚地确定原因的方法是确定哪个 dll 将另一个 dll 拉入我的 Visual Studio 项目?我希望能够从导致问题的 dll 中走出来,看看包含它的 dll 是什么。这个答案:
找出 Visual Studio 决定将 DLL 复制到 bin 目录的原因
说可以使用 ildasm 或反射器,但是使用这些工具需要寻找什么以及如何使用?我用谷歌搜索了这个,但什么也没看到。
作为旁注,关于为什么切换到发布模式会导致我的问题的任何想法?我想知道这样做是否会导致 Visual Studio 尝试从某个地方提取 Microsoft.Practices.EnterpriseLibrary.Common 的发布版本,这是错误的版本,但这对我来说毫无意义,因为这是“第 3 方”(Microsoft ) 库已经处于发布模式,它没有解释间歇性,我不明白为什么将单个项目切换到发布模式会影响对外部库的引用。
c# - 如何将文件 g.resources 插入程序集
我需要修改一个更改一个资源的程序集。我已经提取了资源并对其进行了修改,但现在我找不到将其再次嵌入到程序集中的方法。我已经尝试过 ildasm,但似乎它需要一个 .res 资源文件,而我只有一个 xxx.g.resources 文件。
有任何想法吗?
谢谢
c# - 无论 .NET 版本/环境如何,都能保证找到 ildasm.exe 和 ilasm.exe 文件的文件路径?
有没有办法以编程方式获取 ildasm.exe/ilasm.exe 可执行文件的 FileInfo/Path?在对 dll/exe 文件进行一些更改后,我正在尝试对其进行适当的反编译和重新编译(我猜 PostSharp 做了类似的事情来在编译后更改 IL)。
我发现一篇博客文章指出:
但是,当我运行此代码时,该目录不存在(主要是因为我的 SDK 版本是 7.1),所以在我的本地机器上,正确的路径是@"Microsoft SDKs\Windows\v7.1\bin"
. 如何确保我可以真正找到 ildasm.exe?
同样,我发现了另一篇关于如何访问 ilasm.exe 的博客文章:
虽然这可行,但我注意到我有 Framework 和 Framework64,并且在 Framework 本身内我有所有版本,直到 v4.0.30319(与 Framework64 相同)。那么,我怎么知道该使用哪一个呢?它应该基于我所针对的 .NET Framework 版本吗?
概括:
- 如何适当地保证找到 ildasm.exe 的正确路径?
- 如何正确选择正确的 ilasm.exe 进行编译?
c# - 如果 Powershell 构建在 .Net 之上,那么编写脚本而不是 C# 代码的原因是什么?
作为一个刚接触 Powershell 的人,我一度不是 100% 清楚:
如果
“在 PowerShell 中,管理任务通常由 cmdlet(发音为 command-let)执行, 这是实现特定操作的专用 .NET 类。”
编写脚本而不是使用这些类编写 .Net 可执行文件并将它们编译为控制台应用程序的原因是什么?
.net - 程序集重新编译和程序集加载问题
我有一个可执行文件 (Foo.exe) 和一个库 Bar.dll。两个二进制文件都没有强名称签名。Bar.dll 库依赖于可执行文件,并以如下方式在其清单中指定:
我使用 ildasm 和 ilasm 从 Foo.exe -> msil -> Foo.exe 进行往返。使用 ildasm 进行反编译会生成单个 .il 文件、.res 文件和多个 .resources 文件。我以这种方式重新编译应用程序:
重新编译后,应用程序工作并可以启动。现在的问题是依赖于可执行文件的库 Bar.dll 在重新编译后无法加载它(Foo.exe 可执行文件)。这是融合日志给我的:
现在在重新编译之前,文件加载成功,融合日志中的唯一区别是最后 4 行:
c# - 除了程序集和类型元数据之外,ILDASM 在哪里显示 .JPG、.XML、.txt 文件
谁能指导我除了程序集和类型元数据之外,ILDASM 在哪里显示 .JPG、.XML、.txt 文件(添加到项目中)