编译时的项目(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)文件夹路径?的主要内容,如果未能解决你的问题,请参考以下文章

Vue-项目搭建时的常用配置

Java代码编译好后的.class文件在哪个文件夹啊?

GO语言的包

Visual Studio 2017在首次运行时未显示编译异常

C#项目中文件的具体含义

编译 JS 文件时的 Webpack 问题