【问题标题】:set location of dll class library which is referenced in other project in solution设置在解决方案中的其他项目中引用的 dll 类库的位置
【发布时间】:2012-01-13 17:46:18
【问题描述】:

我正在做一个有 3 个项目的解决方案(c#)。

  1. 主要可执行项目
  2. DLL
  3. DLL

主项目引用了其他项目。 我想在我的主项目中有以下文件结构:

main.exe 
Libraries - folder
  + 2.dll
  + 3.dll

但不幸的是,VS 将这些 DLL 文件放到 EXE 位置。

有什么简单的解决办法吗?

【问题讨论】:

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


    【解决方案1】:

    您可以更改子 DLL 上的输出路径以指向库。

    但是,这不是 .Net 在运行时探测 DLL 解析的标准路径,因此当您尝试部署它时可能会遇到问题,除非您手动从这些位置加载。

    如果您将项目引用标记为复制本地,那么我不相信您可以通过配置更改 Visual Studio 复制文件的目录。

    但是,您可以设置一个构建后命令,在每次构建后自动将文件移动到所需的子目录中。

    更新

    我喜欢这个网站,因为它让我每天都能学到新东西。例如,我刚刚发现了 probing element,您可以将其添加到配置文件中,以便向标准探测路径添加其他路径。

    此配置元素允许 .Net 在您的 libraries 文件夹中搜索要加载的 DLL,这样您就不必在它们就位后进行任何额外的工作(您仍然需要使用postbuild 命令)。

    这是一个支持您的配置的示例配置条目:

    <configuration>
       <runtime>
          <assemblyBinding>
             <probing privatePath="bin\libraries"/>
          </assemblyBinding>
       </runtime>
    </configuration>
    

    【讨论】:

    • 是的,我知道,但我不想改变你的意思。这些 dll 文件有两个副本。它们在他们的项目目录中,并且 VS 也在我想要更改的主项目中对它们进行编译...
    • @nosbor - 为什么?正确的位置是应用程序本身。您拥有 2 个副本的唯一原因是 Visual Studio。如果您要设置安装程序解决方案并安装您的程序,您将拥有每个的一个副本。正如所指出的,您想要的不是标准行为,这意味着您必须手动加载文件,而不是我们的 Visual Studio 来引用它们。您拥有两个副本的唯一原因是您在同一台计算机上构建您的解决方案。你想改变它的理由很愚蠢。
    • 没有它的正常行为,我现在正常加载它。看......每个 od dll 项目都有他们自己的 /bin/Debug 目录中的 dll 编译程序集,此外 VS 正在将这些程序集复制到主项目 /bin/Debug 文件夹。我想把它改成 /bin/Debug/Libraries
    • 我很确定你不能改变 Visual Studio 的行为;我相信您唯一的内置选择是将 DLL 复制到 bin\debug。但是,您可以添加一个构建后命令,然后将您的 DLL 从 bin\debug 文件夹移动到 bin\debug\libraries 文件夹。我们一直使用这种方法在项目构建后移动文件。
    • @competent_tech 但是我需要手动加载 dll 库,是吗?
    【解决方案2】:

    我有同样的问题,但前面的例子不起作用。只有在我指出该方案后,一切正常:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <probing privatePath="Libraries"/>
        </assemblyBinding>
      </runtime>
    </configuration>
    

    【讨论】:

    • +1 我希望我能早点找到这个,因为我发现assemblyBinding 的任何规定都不适合我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多