有没有办法在编译时找到项目路径?
我想创建一个单元测试,测试默认web.config中的配置(项目文件夹中的配置)。主要是为了减少人为错误。
我不能在运行时依赖程序集位置(用于测试),因此我需要知道项目文件夹在哪里访问web.config。
我需要一个“通用”解决方案,因为我想为多个项目使用相同(基础)测试代码,并且对于大多数开发机器而言,物理位置无论如何都是不同的。
感谢。
答案 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运行。