是否有方法获取当前代码所在程序集的路径?我不需要调用程序集的路径,只需要包含代码的路径。
基本上,我的单元测试需要读取一些相对于dll的xml测试文件。无论测试dll是否从TestDriven运行,我都希望该路径始终能够正确解析。NET, MbUnit GUI或者别的什么。
编辑:人们似乎误解了我的问题。
我的测试库位于say
C: \ \项目myapplication \ daotests \ bin \ \ daotests.dll调试
我想得到这条路径:
C: \ \ myapplication \ daotests \ bin \项目调试\
到目前为止,当我从MbUnit Gui运行时,这三个建议都失败了:
环境。CurrentDirectory
给出c:\Program Files\MbUnit
System.Reflection.Assembly.GetAssembly .Location (typeof (DaoTests))
给出C:\Documents和
乔治\ \本地设置
设置\ Temp \…\ DaoTests.dll
.Location System.Reflection.Assembly.GetExecutingAssembly ()
给出与前面相同的结果。
这是我想到的。在web项目之间,单元测试(nunit和resharper测试运行器);我发现这对我很有用。
我一直在寻找代码来检测构建在什么配置中,调试/发布/定制名。唉,#if DEBUG. #如果有人能改进的话!
请随意编辑和改进。
获取应用程序文件夹。有用的web根,单元测试,以获得测试文件的文件夹。
public static string AppPath
{
get
{
DirectoryInfo appPath = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
while (appPath.FullName.Contains(@"\bin\", StringComparison.CurrentCultureIgnoreCase)
|| appPath.FullName.EndsWith(@"\bin", StringComparison.CurrentCultureIgnoreCase))
{
appPath = appPath.Parent;
}
return appPath.FullName;
}
}
获取bin文件夹:用于使用反射执行程序集。如果文件复制到那里由于构建属性。
public static string BinPath
{
get
{
string binPath = AppDomain.CurrentDomain.BaseDirectory;
if (!binPath.Contains(@"\bin\", StringComparison.CurrentCultureIgnoreCase)
&& !binPath.EndsWith(@"\bin", StringComparison.CurrentCultureIgnoreCase))
{
binPath = Path.Combine(binPath, "bin");
//-- Please improve this if there is a better way
//-- Also note that apps like webapps do not have a debug or release folder. So we would just return bin.
#if DEBUG
if (Directory.Exists(Path.Combine(binPath, "Debug")))
binPath = Path.Combine(binPath, "Debug");
#else
if (Directory.Exists(Path.Combine(binPath, "Release")))
binPath = Path.Combine(binPath, "Release");
#endif
}
return binPath;
}
}