编译时的项目(bin)文件夹路径?
Posted
技术标签:
【中文标题】编译时的项目(bin)文件夹路径?【英文标题】:Project (bin) folder path at compile time? 【发布时间】:2010-10-17 21:56:25 【问题描述】:有没有办法在编译时找出项目路径?
我想创建一个单元测试来测试默认 web.config(项目文件夹中的那个)中的配置。主要是减少人为错误。
我不能在运行时依赖程序集位置(用于测试),所以我需要知道项目文件夹在哪里才能访问那里的 web.config。
我需要一个“通用”解决方案,因为我想为多个项目使用相同的(基本)测试代码,而且大多数开发机器的物理位置都不同。
谢谢。
【问题讨论】:
【参考方案1】:为了稍微改进解决方案,您可以在项目的 BeforeBuild Target 中将该命令作为 MSbuild Exec Task 运行,而不是使用 Post Build Event 命令行。
【讨论】:
【参考方案2】:根据 rkb 的回答,
听起来您有一个 C# 项目,请使用此后期构建步骤。
echo namespace ProjectPath static public class ProjectPath public static readonly string Path = @"$(ProjectDir)"; > $(ProjectDir)path.cs
然后将 path.cs 作为现有项目包含到您的测试项目中。然后您可以通过以下方式访问它:
string path = ProjectPath.ProjectPath.Path;
【讨论】:
虽然对我的需求有一个更完整的答案,但 rkb 是第一位的,所以我会给他功劳。【参考方案3】:如果您想要 Visual Studio 项目路径,在编译时,您可以使用 Pre-Build Event(请参阅“项目属性”对话框)运行命令行,该命令行将创建项目中使用的源文件。
源文件将包含一些代码,比如变量定义。您的测试代码使用此变量。变量的值将来自VS;当它运行您的 Pre-Build Event 命令时,它会将项目属性替换为某些宏。您想要的宏可能是 ProjectDir。
所以最后,你的 Pre-Build Event 的命令是这样的:
echo 'const char * PROJECT_PATH = "$(ProjectDir)";' > source.cpp
不确定您使用的是哪种语言,因此请进行相应调整。
【讨论】:
不错的计划,但它并不能完全满足我的需求,因为我要测试的网络配置在另一个项目中。不过,我可以在这里工作。以上是关于编译时的项目(bin)文件夹路径?的主要内容,如果未能解决你的问题,请参考以下文章