Visual studio 编译时的项目(bin)文件夹路径?
有没有办法在编译时找到项目路径 我想创建一个单元测试,测试默认web.config(项目文件夹中的配置)中的配置是否正确。主要是为了减少人为错误 我无法在运行时依赖程序集位置(用于测试),因此我需要知道项目文件夹在哪里可以访问那里的web.config 我需要一个“通用”的解决方案,因为我想对多个项目使用相同的(基本)测试代码,而且对于大多数开发机器来说,物理位置是不同的Visual studio 编译时的项目(bin)文件夹路径?,visual-studio,visual-studio-2008,configuration,nunit,web-config,Visual Studio,Visual Studio 2008,Configuration,Nunit,Web Config,有没有办法在编译时找到项目路径 我想创建一个单元测试,测试默认web.config(项目文件夹中的配置)中的配置是否正确。主要是为了减少人为错误 我无法在运行时依赖程序集位置(用于测试),因此我需要知道项目文件夹在哪里可以访问那里的web.config 我需要一个“通用”的解决方案,因为我想对多个项目使用相同的(基本)测试代码,而且对于大多数开发机器来说,物理位置是不同的 谢谢。如果需要Visual Studio项目路径,可以在编译时使用预生成事件(请参见“项目属性”对话框)运行命令行,以创建项
谢谢。如果需要Visual Studio项目路径,可以在编译时使用预生成事件(请参见“项目属性”对话框)运行命令行,以创建项目中使用的源文件 源文件将包含一些代码,比如变量定义。测试代码使用此变量。变量的值将来自VS;当它运行预生成事件命令时,它将用项目属性替换某些宏。您需要的宏可能是ProjectDir 最后,对于预构建事件的命令,您有如下内容:
echo 'const char * PROJECT_PATH = "$(ProjectDir)";' > source.cpp
不确定您使用的是哪种语言,因此请进行相应调整。根据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;
为了稍微改进解决方案,您可以在项目的BeforeBuild目标中以MSbuild Exec任务的形式运行该命令,而不使用生成后事件命令行。计划不错,但它并不能完全满足我的需要,因为我要测试的web配置位于另一个项目中。不过,我可以从这里开始工作。虽然我需要一个更完整的答案,但rkb是第一位的,所以我会给他评分。