编译时的Project(bin)文件夹路径?

时间:2009-04-06 20:52:28

标签: visual-studio visual-studio-2008 configuration nunit web-config

有没有办法在编译时找到项目路径?

我想创建一个单元测试,测试默认web.config中的配置(项目文件夹中的配置)。主要是为了减少人为错误。

我不能在运行时依赖程序集位置(用于测试),因此我需要知道项目文件夹在哪里访问web.config。

我需要一个“通用”解决方案,因为我想为多个项目使用相同(基础)测试代码,并且对于大多数开发机器而言,物理位置无论如何都是不同的。

感谢。

3 个答案:

答案 0 :(得分:8)

根据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;

答案 1 :(得分:2)

如果您需要Visual Studio项目路径,则在编译时,您可以使用预构建事件(请参阅“项目属性”对话框)来运行将创建项目中使用的源文件的命令行。

源文件将包含一些代码,比如变量定义。您的测试代码使用此变量。变量的值来自VS;当它运行Pre-Build Event命令时,它会替换某些宏的项目属性。你想要的宏可能是ProjectDir。

所以最后,你有一个类似于你的Pre-Build Event命令的东西:

echo 'const char * PROJECT_PATH = "$(ProjectDir)";' > source.cpp

不确定您使用的是何种语言,因此请进行相应调整。

答案 2 :(得分:0)

要稍微改进解决方案,而不是使用Post Build Event命令行,您可以在项目的BeforeBuild Target中将该命令作为MSbuild Exec Task运行。