编译时项目(bin)文件夹路径是什么?

5
有没有一种方法可以在编译时找到项目路径?
我想创建一个单元测试,测试默认web.config(即项目文件夹中的web.config)中的配置是否正确。主要是为了减少人为错误。
我不能依赖运行时的程序集位置(用于测试),因此需要知道项目文件夹在哪里,以便访问其中的web.config。
我需要一个“通用”的解决方案,因为我想为多个项目使用相同的(基本)测试代码,而大多数开发机器的物理位置都不同。
谢谢。
3个回答

10

基于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提供的,但因为他第一个回答了,所以我会给他点赞。 - Inferis

2
如果您想在编译时获取Visual Studio项目路径,可以使用Pre-Build事件(参见项目属性对话框)运行一个命令行来创建一个用于您的项目的源文件。
源文件将包含一些代码,比如变量定义。您的测试代码使用该变量。变量的值将来自VS;当它运行您的Pre-Build事件命令时,它会将项目属性替换为某些宏。您想要的宏可能是ProjectDir。
因此,最终您的Pre-Build事件命令将类似于以下内容:
echo 'const char * PROJECT_PATH = "$(ProjectDir)";' > source.cpp

不确定您使用的是哪种语言,因此请根据需要进行调整。


好的计划,但它并不能完全满足我的需求,因为我想要测试的Web配置文件在另一个项目中。不过,我可以从这里开始工作。 - Inferis

0
为了稍微改进解决方案,您可以在项目的BeforeBuild目标中将命令作为MSbuild Exec任务运行,而不是使用Post Build事件命令行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接