Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 编译时的项目(bin)文件夹路径?_Visual Studio_Visual Studio 2008_Configuration_Nunit_Web Config - Fatal编程技术网

Visual studio 编译时的项目(bin)文件夹路径?

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项目路径,可以在编译时使用预生成事件(请参见“项目属性”对话框)运行命令行,以创建项

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

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

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

我需要一个“通用”的解决方案,因为我想对多个项目使用相同的(基本)测试代码,而且对于大多数开发机器来说,物理位置是不同的


谢谢。

如果需要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是第一位的,所以我会给他评分。