在C#代码中使用MSBuild宏,如$(ProjectDir)

时间:2015-10-16 11:12:11

标签: c# msbuild

我可以使用MSBuild变量,以便在我的代码中解析它们吗?我在想一段需要$(ProjectDir)的代码,因为它永远不会被移动(它是一个单元测试项目)。

一个例子:

public class MyTestDataPath
{
    public void GetTestData()
    {
        return SOME_COMPILE_TIME_PROJECT_DIR_MACRO + "\\test-data"; // Should resolve via $(ProjectDir) during compile time.
    }
}

1 个答案:

答案 0 :(得分:0)

是的,有。但不是直接在你的代码中。您可以在项目属性中定义预构建操作:

echo $(ProjectDir) > "$(ProjectDir)\Resources\ProjDir.txt"

然后,您可以将文件projdir.txt作为资源添加到项目属性中,并使用以下代码引用代码中的内容:

var dir = Resources.ProjDir

但我只是将postbuild操作中的测试数据复制到输出目录中,并使用反射在运行时获取它(二进制文件和测试数据现在可以移植到其他开发人员)。