【问题标题】:Dll not copying to bin folderDLL不复制到bin文件夹
【发布时间】:2010-10-01 19:23:11
【问题描述】:

我遇到了一个问题,即 Devart DLL 没有被复制到我的 Web 应用程序的 bin 文件夹中。我有一个引用 projectA 的 Web 应用程序项目。项目A 引用项目B。 Devart Dll 在 projectB 中使用,并且在构建期间不会被复制到 Web 应用程序项目 bin 文件夹中。 ProjectB 还引用了 EL Unity dll,并且它们被正确复制。所有有问题的 Dll 在物理上位于 projectB 中的文件夹中,这就是参考点。 (我没有指向 GAC 的参考资料)

正确复制的 dll 是 Microsoft.Practices.Unity、Microsoft.Practices.Unity.Configuration 和 Microsoft.Practices.ServiceLocation。

未正确复制的 dll 是 Devart.Data、Devart.Data.Oracle 和 Devart.Data.Oracle.Design。

这是每个 dll 的引用...

<Reference Include="Devart.Data, Version=5.0.124.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
  <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>
<Reference Include="Devart.Data.Oracle, Version=5.70.170.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.Oracle.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Devart.Data.Oracle.Design, Version=5.70.170.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.Oracle.Design.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.ServiceLocation.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>
<Reference Include="Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.Unity.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>
<Reference Include="Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.Unity.Configuration.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>

还有其他人有这个问题吗?我做错了吗?谢谢

编辑 我打开了一个文件监视器,观察了 Visual Studio 加载引用的位置,对于 Unity,它从我指定的位置获取 dll。但是,对于 Devart dll,它正在 GAC 中查找! Devart dll 是否会以某种方式导致此问题?

【问题讨论】:

    标签: .net visual-studio dll reference


    【解决方案1】:

    我在使用外部引用时遇到了类似的问题。问题是未复制未使用的库。 您是否使用 projectB 中的 Devart 库?任何实例,继承,任何东西,...?? 请试试这个: 从 projectB 中的三个库中实例化一些模拟类并重新编译。 它对我有用。我想得到正式的解释。

    【讨论】:

      【解决方案2】:
      1. 右键单击引用的dll并检查本地复制是否为真。
      2. 您也可以尝试阅读您的参考资料一次,当我将 VS2005 项目转换为 VS2008 项目时,这为我解决了类似的问题。

      【讨论】:

      • 我确实有本地副本等于 true。我不止一次地重新添加了 Devart 引用...相信我。似乎只有 Devart dll。他们可能有导致这种情况的问题吗?
      • 我想不出别的了,你可以尝试在后期构建期间复制这些论文或直接从 projectA 引用 dll
      • 如果您在 GAC 中有 devart dll,请尝试删除它们并重建您的项目
      • 我如何安全地将它们从 GAC 中删除?
      • 从 gac 中安全删除是什么意思?当您安装 devart 时,dll 可能已复制到 gac,尝试卸载它或在运行窗口中键入程序集并按 Enter。搜索 devart dll 右键单击​​并选择卸载。
      【解决方案3】:

      当您的 dll 是其他人的依赖项时,也会出现此问题。例如 Microsoft.ApplicationServer.Caching.AzureClientHelper.dll 由 Microsoft.ApplicationServer.Caching.Client 在内部使用。即使我有 copyLocal = True 辅助程序集也不会被复制,因为它没有在我的代码中的任何地方直接引用。为了避免这个问题,你可以像这样创建一个私有类型变量:

      类型 dependsOnThisTypeOfAssembly = typeof(TypeFromDependentAssembly);

      这将引用类型,并且在构建过程中将在本地复制程序集。

      【讨论】:

        【解决方案4】:

        设置为复制本地对我不起作用。 唯一可以解决(不可用)的是引用程序集中包含的某些类型。

        【讨论】:

          【解决方案5】:

          如果这些 DLL 位于项目 B 的子目录中,请确保将每个引用的“复制本地”属性设置为 true。

          此外,如果 DLL 文件作为文件包含在您的项目中,请检查文件本身的 Visual Studio 属性。 “构建操作”应设置为“无”,“复制到输出目录”应设置为“不复制”。编辑:只需使用 copy local = true 将它们作为引用即可完成复制。

          如果这些设置对于不同的 DLLS 是不同的,这可以解释为什么有些被复制到 bin 文件夹中而有些则没有。

          【讨论】:

            猜你喜欢
            • 2012-09-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-03
            • 2013-10-25
            • 2021-07-22
            • 1970-01-01
            • 2016-03-12
            相关资源
            最近更新 更多