我如何获得代码所在的程序集路径?
有没有办法获得当前代码所在的程序集的路径? 我不想要调用程序集的路径,只是包含代码的路径。
基本上我的单元测试需要读取一些相对于dll的xml测试文件。 无论测试dll是从TestDriven.NET,MbUnit GUI还是其他东西运行,我都希望路径始终正确解析。
编辑 :人们似乎误解了我的要求。
我的测试库位于说
C:项目 MyApplication的 daotests BIN 调试 daotests.dll
我想获得这个路径:
C:项目 MyApplication的 daotests BIN 调试
当我从MbUnit Gui运行时,到目前为止的三个建议都失败了:
Environment.CurrentDirectory
提供了c: Program Files MbUnit
System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location
给出C: Documents and Settings george Local Settings Temp .... DaoTests.dll
System.Reflection.Assembly.GetExecutingAssembly().Location
与前一个相同。
我已经定义了以下属性,因为我们经常在单元测试中使用它。
public static string AssemblyDirectory
{
get
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
当使用NUnit(其中程序集从临时文件夹运行)时, Assembly.Location
属性有时会给你一些有趣的结果,所以我更喜欢使用以URI格式给出路径的CodeBase
,然后UriBuild.UnescapeDataString
删除File://
at开始,并GetDirectoryName
将其更改为正常的Windows格式。
这有帮助吗?
//get the full location of the assembly with DaoTests in it
string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location;
//get the folder that's in
string theDirectory = Path.GetDirectoryName( fullPath );
这很简单:
var dir = AppDomain.CurrentDomain.BaseDirectory;
链接地址: http://www.djcxy.com/p/3573.html