我已經添加了.NET dll庫「itextsharp」,我正在使用我的C#代碼。 DLL可以在以下目錄中存在:在.NET中從不同的位置添加相同的dll參考
C:\ProgramData\<Application Name>\ or
C:\Users\<Username>\AppData\
C:\Windows\System32\ or
C:\Windows\
我想知道怎麼寫,檢查如果DLL出現在上述任何位置的代碼,然後使用它。像:
string sPath = "";
if(File.Exist(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\<Application Name>"\\itextsharp.dll"))
sPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\<Application Name>"\\itextsharp.dll");
else if(File.Exist(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\<Application Name>"\\itextsharp.dll"))
sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\<Application Name>"\\itextsharp.dll");
....等等.....
,然後如何使用sPath
變量訪問庫和其命名空間和類。
我想這樣,因爲該文件並不總是在特定的文件夾中,我不想將所有代碼相關的文件保存在主程序文件夾中:"C:\Program Files\<Application Name>\"
如果文件已經存在於上述任何位置,則寧願首先使用它。所以,如果我使用「添加引用」添加.NET庫,那麼它是一個固定的路徑嗎?我需要先找到正確的路徑,然後指示代碼使用它並訪問它的命名空間和類。
我的第二個問題是,如果我使用「添加引用」從位置添加.NET DLL,那麼在客戶端計算機上部署路徑時應該完全相同?例如,如果我的Windows驅動器是C:並且我使用路徑"C:\Users\<Username>\AppData\itextsharp.dll"
,但是如果客戶端將Windows安裝在D:驅動器中,那麼代碼將從C驅動器還是D驅動器訪問路徑?以及如何以編程方式更改路徑?
那麼,你可以使用相對路徑在GAC(Global Assemblies Cache)或引用者中註冊一個dll。例如,您可以在項目中創建一個名爲「Libs」的文件夾,在該文件夾中可以存儲所有必需的外部庫。當您執行部署時,這些庫將始終與您的項目一起部署(在bin文件夾中,Web和客戶端應用程序之間沒有差異)。 –
也許這將有助於:http://stackoverflow.com/questions/15666618/csproj-multiple-hint-paths-for-an-assembly –
你不是隻是想解決融合問題? http://stackoverflow.com/questions/9961162/what-is-fusion-in-net-assembly – rene