c# - 在 C# 代码中使用类似 $(ProjectDir) 的 MSBuild 宏

标签 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.
    }
}

最佳答案

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

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

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

var dir = Resources.ProjDir

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

关于c# - 在 C# 代码中使用类似 $(ProjectDir) 的 MSBuild 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33169075/

相关文章:

c# - 如何使用蛋糕仅更新 assemblyinfo.cs 中的版本信息?

c# - 升级到 .NET 4.5 和 EF5。不再能够部署 WCF 服务。

c# - 更新 IQueryable 对象中的值

multithreading - 使用MSBuild并行构建的问题

tfs - 让 TFS 将每个项目输出到其自己的目录的最佳方法是什么?

visual-studio - 使用 VSTS 部署 Azure WebJob

c# - WPF MVVM 在您键入时更改文本框大小

c# - 如何使用 HttpRequestMessage 发送证书?

c# - 使用 C# 7.1 构建 .NET Core 2.0 EXE 文件

node.js - 吉普错误!堆栈错误 : `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe`