【发布时间】:2014-05-30 00:22:02
【问题描述】:
我添加了一个在我的 C# 代码中使用的 .NET dll 库“itextsharp”。 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(全局程序集缓存)中注册一个 dll,或者使用相对路径引用它。例如,您可以在项目中创建一个名为“Libs”的文件夹,您可以在其中存储工作所需的所有外部库。当您执行部署时,这些库将始终与您的项目一起部署(在 bin 文件夹中,Web 和客户端应用程序之间没有区别)。
-
您不只是想解决 Fusion 问题吗? stackoverflow.com/questions/9961162/…
标签: c# .net visual-studio dll namespaces