【问题标题】:Add same dll reference in .NET from different locations从不同位置在 .NET 中添加相同的 dll 引用
【发布时间】: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\&lt;Application Name&gt;\" 如果文件已经存在于上述任何位置然后更喜欢先使用它。因此,如果我使用“添加引用”添加 .NET 库,那么它是固定路径吗?我需要先找到正确的路径,然后指示代码使用它并访问它的命名空间和类。

我的第二个问题是,如果我使用“添加引用”从某个位置添加 .NET dll,那么当它部署在客户端计算机上时,路径是否应该完全相同?例如,如果我的 Windows 驱动器是 C: 并且我使用路径 "C:\Users\&lt;Username&gt;\AppData\itextsharp.dll" 但如果客户端将 Windows 安装在 D: 驱动器中,那么代码会从 C 驱动器还是 D 驱动器访问路径?以及如何以编程方式更改路径?

【问题讨论】:

  • 嗯,您可以在 GAC(全局程序集缓存)中注册一个 dll,或者使用相对路径引用它。例如,您可以在项目中创建一个名为“Libs”的文件夹,您可以在其中存储工作所需的所有外部库。当您执行部署时,这些库将始终与您的项目一起部署(在 bin 文件夹中,Web 和客户端应用程序之间没有区别)。
  • 也许这会有所帮助:stackoverflow.com/questions/15666618/…
  • 您不只是想解决 Fusion 问题吗? stackoverflow.com/questions/9961162/…

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


【解决方案1】:

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

这是你可以遵循的练习步骤,

  1. 在项目的根文件夹中,应该有 binaries/dependencies 文件夹,您将在其中存储无路径(未安装在您的工作站或第三方中,例如 iTextSharp,telerik) 程序集。
  2. 您将仅从该项目的文件夹中引用所需的程序集。

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

如果我使用“添加引用”从某个位置添加 .NET dll,那么在客户端机器上部署时路径是否应该完全相同? - 上图实践将消除这种可能性。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多