[英]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.