相关疑难解决方法(0)

如何将Assembly.CodeBase转换为C#中的文件系统路径?

我有一个项目,将模板存储在\TemplatesDLL和EXE旁边的文件夹中.

我想在运行时确定这个文件路径,但使用的技术可以在单元测试和生产中使用(我不想在NUnit中禁用阴影复制!)

Assembly.Location 是不好的,因为它在NUnit下运行时返回阴影复制程序集的路径.

Environment.CommandLine 也是有限的用途,因为在NUnit等人它返回NUnit的路径,而不是我的项目.

Assembly.CodeBase 看起来很有希望,但它是一个UNC路径:

file:///D:/projects/MyApp/MyApp/bin/debug/MyApp.exe
Run Code Online (Sandbox Code Playgroud)

现在我可以使用字符串操作将其转换为本地文件系统路径,但我怀疑有一种更简洁的方法可以将它隐藏在.NET框架中.有人知道这样做的推荐方法吗?

(如果UNC路径不是file:///URL,则抛出异常在此上下文中绝对正常)

.net c# nunit codebase

60
推荐指数
3
解决办法
2万
查看次数

如何从C#中Path.GetDirectoryName()的返回值中删除'file:\\'

string path = Path.GetDirectoryName(
                     Assembly.GetAssembly(typeof(MyClass)).CodeBase);
Run Code Online (Sandbox Code Playgroud)

输出:

文件:\ d:\学习\ CS \测试\的test.xml

返回d:\ learning\cs\test\test.xml的最佳方法是什么

file:\\doc.Save(returnPath)但是doc.Load(returnPath),当我打电话时会抛出异常; 效果很好.谢谢.

c# path

26
推荐指数
3
解决办法
1万
查看次数

如果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
查看次数

标签 统计

c# ×3

.net ×2

codebase ×1

nunit ×1

path ×1