[英]C# Get relative path in referenced assembly
我有2个项目Project A,Project B,project A具有对project B的引用,而Project A是可执行文件。
Project A --> Project B
在项目B中,有一个名为“ MyFolder”的目录
因此,soulotion层次结构如下:
MySolution
- A
- B
- MyFolder
我如何从项目A(可执行文件)中获得MyFolder的相对路径。
我发现分配的答案如下:
sring path = Assembly.GetAssembly(typeof(SomeClassInBProject)).Location;
我从中获得的路径是A的bin \\ debug中的B.dll路径,我该如何在该.dll中检索路径。
编辑:
iv'e也尝试过:
Assembly assembly = Assembly.GetAssembly(typeof(SomeClassInBProject));
FileStream fs = assembly.GetFile(@"MyFolder\myFile");
and
FileStream fs = assembly.GetFile("MyFolder\myFile");
and
FileStream fs = assembly.GetFile("myFile");
如果我总是空的。
您正在寻找Uri.MakeRelativeUri吗?
string pathA = Assembly.GetExecutingAssembly().Location;
string pathB = Assembly.GetAssembly(typeof(SomeClassInBProject)).Location;
Uri pathAUri = new Uri(pathA);
Uri pathBUri = new Uri(pathB);
string relativePath = pathAUri.MakeRelativeUri(pathBUri).OriginalString;
string relativeMyFolder = Path.Combine(relativePath, "MyFolder");
更新资料
您可以使用Assembly.GetFile()方法返回FileStream。 FileStream
具有您可以在上面的代码中使用的Name
属性。
除非出于某些原因您不能执行此操作,否则建议您打开“属性窗口” *,并将“ Build Action
属性设置为Build Action
Embedded Resource
,并确保将“ Copy to Output Directory
设置为Do not copy
。 然后,您可以使用Assembly.GetFile()进行访问。
Assembly assembly = Assembly.GetAssembly(typeof(SomeClassInBProject));
using (FileStream fs = assembly.GetFile("myfile"))
{
// Manipulate the FileStream here
}
*选择文件后,按Alt + Enter或右键单击文件并选择“ Properties
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.