簡體   English   中英

如何從dll項目內的bin文件夾中獲取文件夾位置?

[英]How to get a folder location from the bin folder inside a dll project?

我正在創建一個dll項目。 對於一種通訊類型,dll需要基於.txt模板發送電子郵件。

文件夾位置示例:

C:\VisualStudioProjects\GeneratorApp\Bin\Debug (Or release) \Documents

用於調用我使用的這些.txt文件所在的文件夾(在dll項目中)

var folderName = "Documents";
Path.Combine(Assembly.GetEntryAssembly().Location + folderName);

首先它可以工作,但是當通過Web服務從dll調用函數時,此地址不再正確,從而導致FileNotFoundExceptions

文檔文件夾及其所有.txt文件都將復制到出紙槽中。 (始終復制)。

我還嘗試了以下方法,這些方法當然可以帶來其他結果,但無濟於事。

Assembly.GetExecutingAssembly().Location

要么

var dm = typeof(AppDomainManager);
dm.Assembly.Location;

關於如何解決此問題的任何想法?

編輯:

我收到的各種輸出:

GetEntryAssembly = null => no location to grab
GetExecutingAssembly Location = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Temporary ASP.NET Files\\#####\\d37e9080\\ff60155b\\assembly\\dl3\\24596b30\\c542f015_588ccf01\\GeneratorApp.dll"
AppDomainManager Location = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll"

文件說,Assembly.GetEntryAssembly()將返回使用您的dll的程序集,因為它是入口程序集而不是您的dll。

它可以在您的測試項目中工作,因為您所有的exe和dll都位於一個位置,而這對於您的工作環境而言可能是另外一個位置。

嘗試改用Assembly.GetExecutingAssembly()

並且確定在“屬性”選項卡上將這些文件標記為“ Resource ”嗎?

或者,如果它們是不會經常更改的靜態數據,則可以嘗試將這些模板作為資源嵌入到dll中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM