C# Remove/Amend 来自已编译二进制文件的个人文件路径
C# Remove/Amend Personal File Paths From Compiled Binaries
在 C# 中使用 [CallerFilePath]
属性会导致在编译的 CIL 二进制文件中包含完整的本地文件路径,例如 C:\Users\MyName\Projects\Project\File.cs
.
Is there a way of amending these strings in the compiled binaries? Perhaps as a build step to remove the "C:\Users\MyName\Projects\", but leave the remainder for logging purposes?
在我的脑海中,我只能想到 ildasm
对其进行搜索和替换,然后 ilasm
对它进行操作 - 但这似乎是一个相当复杂的过程。我还遇到了对 STRINGTABLE
资源的引用,但没有关于如何 post 处理它的任何实现细节。
有一些重复的建议,包括 this one,但我不认为这是一个重复的问题,因为这个问题专门指的是 [CallerFilePath]
属性,而不是调试 -指向 pdb
个文件的配置相关字符串。
您可以使用 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
而不是整个路径。
在 C# 中使用 [CallerFilePath]
属性会导致在编译的 CIL 二进制文件中包含完整的本地文件路径,例如 C:\Users\MyName\Projects\Project\File.cs
.
Is there a way of amending these strings in the compiled binaries? Perhaps as a build step to remove the "C:\Users\MyName\Projects\", but leave the remainder for logging purposes?
在我的脑海中,我只能想到 ildasm
对其进行搜索和替换,然后 ilasm
对它进行操作 - 但这似乎是一个相当复杂的过程。我还遇到了对 STRINGTABLE
资源的引用,但没有关于如何 post 处理它的任何实现细节。
有一些重复的建议,包括 this one,但我不认为这是一个重复的问题,因为这个问题专门指的是 [CallerFilePath]
属性,而不是调试 -指向 pdb
个文件的配置相关字符串。
您可以使用 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
而不是整个路径。