相关疑难解决方法(0)

如何获取代码所在的程序集路径?

有没有办法获取当前代码所在的程序集的路径?我不想要调用程序集的路径,只需要包含代码的路径.

基本上我的单元测试需要读取一些相对于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 与前一个相同.

.net c# reflection

746
推荐指数
20
解决办法
58万
查看次数

是否有.NET Framework方法将文件URI转换为带有驱动器号的路径?

我在ASP.NET领域寻找类似Server.MapPath的东西,将Assembly.GetExecutingAssembly().CodeBase的输出转换为带驱动器号的文件路径.

以下代码适用于我尝试过的测试用例:

private static string ConvertUriToPath(string fileName)
{
    fileName = fileName.Replace("file:///", "");
    fileName = fileName.Replace("/", "\\");
    return fileName;
}

看起来.NET Framework中应该有更好的东西 - 我只是无法找到它.

.net c# uri winforms

6
推荐指数
1
解决办法
2682
查看次数

如果Path包含"#",则System.Uri无法提供正确的AbsolutePath和LocalPath

我有C#代码试图LocalPath使用以下代码行获取正在执行的程序集:

Uri uri = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath;

这段代码适用于各种路径.它开始失败给出正确的AbsolutePath,Localpath因为执行的程序集路径包含一个#.

Assembly.GetExecutingAssembly().CodeBase"C:\c#\ExcelAddin1.1.0\GSRExcelPlugin\bin\Debug\Common.dll"

但是新的Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath给出"C:\ c",而它应该给出"C:\ c#\ ExcelAddin1.1.0\GSRExcelPlugin\bin\Debug \".

有没有我需要处理的东西,或者Uri类使用的方式有什么不对吗?

如果这是.net框架问题,我该如何向Microsoft报告此问题?

.net c#

4
推荐指数
1
解决办法
3729
查看次数

标签 统计

.net ×3

c# ×3

reflection ×1

uri ×1

winforms ×1