【发布时间】:2021-08-17 00:56:36
【问题描述】:
问题:
有没有办法在不使用CallerFilePath 属性的情况下获取调用者或当前帧源代码位置?
背景:
我定义了这个助手:
public class PathHelper
{
public static string GetThisFilePath([CallerFilePath] string path = null)
{
return path;
}
}
可以这样调用来获取用于构建二进制文件的源代码的位置:
var currentSourceFilePath = PathHelper.GetThisFilePath();
这很好用,除非我打开了DeterministicSourcePaths(通常通过 ContinuousIntegrationBuild msbuild 属性)。在这种情况下,返回的路径将被修剪为:
/_/MyRelativeSourcePath
因此,确定性路径似乎被注入到支持CallerFilePath 的编译器功能中,从而产生了这种行为。
我需要源代码位置以便能够对产品特定功能进行单元测试(这与检查构建过程有关),同时我仍然希望支持在 CI 机器上完全确定性构建。
【问题讨论】:
标签: c# .net msbuild deterministic