在.NET中添加来自不同位置的相同dll引用

时间:2014-04-15 14:49:45

标签: c# .net visual-studio dll namespaces

我在我的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"但是如果客户端在D:驱动器中安装了Windows,那么代码将从C驱动器或D驱动器访问路径吗?以及如何以编程方式更改路径?

1 个答案:

答案 0 :(得分:1)

如果我使用“添加引用”添加.NET库,那么它是固定路径吗? - 使用程序集/二进制文件时不涉及任何路径项目

以下是您可以遵循的练习步骤,

  1. 在项目的根文件夹中,应该有 二进制文件/依赖项文件夹,您将存储无路径(无法安装在您的工作站或第三方中) iTextSharp,telerik)程序集。
  2. 您将仅从此项目的文件夹中引用所需的程序集。

  3. 部署/发布时,请确保将复制本地选项设置为 True 。从引用选项卡中选择程序集,然后导航到属性 - 您告诉visual studio将所有这些引用的程序集复制到已发布/已部署目录的 bin 目录。

  4. 如果我使用“添加引用”从某个位置添加.NET dll,那么当它在客户端的计算机上部署时路径应该完全相同吗? - 上面练习将消除这种可能性。

    无论项目是安装还是Web,其发布的副本都必须包含所有依赖项,因此我们将其称为包。