【问题标题】:C# Remove/Amend Personal File Paths From Compiled BinariesC# 从已编译的二进制文件中删除/修改个人文件路径
【发布时间】:2017-12-22 06:52:27
【问题描述】:

在 C# 中使用 [CallerFilePath] 属性会导致在编译的 CIL 二进制文件中包含完整的本地文件路径,例如 C:\Users\MyName\Projects\Project\File.cs

有没有办法在编译的二进制文件中修改这些字符串?也许作为删除“C:\Users\MyName\Projects\”的构建步骤,但将剩余部分留作日志记录?

在我的脑海中,我只能想到ildasm'ing 它,搜索和替换,然后ilasming 它 - 但这似乎是一个相当复杂的过程。我还发现了对 STRINGTABLE 资源的引用,但没有任何关于如何对其进行后处理的实现细节。

有几个建议的重复项,包括this one,但我不认为这是一个重复的问题,因为这个问题专门指的是[CallerFilePath] 属性,而不是指向调试配置的相关字符串pdb 文件。

【问题讨论】:

    标签: c# reflection compilation cil


    【解决方案1】:

    您可以使用the pathMap option for this。它应该从 Roslyn 1.1 和 VS 2015 Update 1 开始可用,尽管目前没有记录。

    在您的具体情况下,您可以将 <PathMap>C:\Users\MyName\Projects\Project=Project</PathMap> 添加到您的 .csproj 文件中。这样做意味着[CallerFilePath] 会给你Project\File.cs 而不是整个路径。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 2011-02-21
    • 2020-04-29
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多