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