[CallerFilePath] C中的属性导致在编译的CIL二进制文件中包含完整的本地文件路径,例如 C:\Users\MyName\Projects\Project\File.cs .
[CallerFilePath]
C:\Users\MyName\Projects\Project\File.cs
有没有办法在编译的二进制文件中修改这些字符串?也许是作为一个构建步骤来删除“C:\Users\MyName\Projects\”,但将其余部分留作日志记录之用?
在我脑海里,我只能想到 ildasm '使用它,搜索&更换,然后 ilasm STRINGTABLE 资源,但没有关于如何对其进行后处理的任何实现细节。
ildasm
ilasm
STRINGTABLE
this one [调用者文件路径] 属性,而不是调试指向 pdb
[调用者文件路径]
pdb
您可以使用 the pathMap option for this .虽然目前没有记录,但它应该从Roslyn 1.1和VS 2015 Update 1开始提供。
pathMap
<PathMap>C:\Users\MyName\Projects\Project=Project</PathMap> 到您的.csproj文件。这样做意味着 [CallerFilePath] 会给你 Project\File.cs
<PathMap>C:\Users\MyName\Projects\Project=Project</PathMap>
Project\File.cs