Dll не копирует в папку bin

У меня проблема с библиотеками Devart, которые не копируются в папку bin моего веб-приложения. У меня есть проект веб-приложения, которое ссылается на проект. Проект ссылается на проект Б. Библиотеки DLL Devart используются в projectB и не копируются в папку bin проектов веб-приложений во время сборки. ProjectB также ссылается на библиотеки El Unity, и они копируются правильно. Все рассматриваемые библиотеки DLL физически расположены в папке в projectB, и именно там находится точка отсчета. (Я не имейте ссылки, указывающие на GAC)

библиотеки DLL, которые копируют правильно, являются Microsoft.Практика.Unity, Microsoft.Практика.Единство.Конфигурации и Microsoft.Практика.Объектов servicelocation.

библиотеки DLL, которые не копируются правильно, являются Devart.Данных От Devart.Данные.Оракул и Деварт.Данные.Оракул.Дизайн.

вот ссылки для каждой библиотеки dll...

<Reference Include="Devart.Data, Version=5.0.124.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL">
  <HintPath>..Dtn.PetroDex.DalThirdPartyDllsDevart.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.DalThirdPartyDllsDevart.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.DalThirdPartyDllsDevart.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.DalThirdPartyDllsMicrosoft.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.DalThirdPartyDllsMicrosoft.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.DalThirdPartyDllsMicrosoft.Practices.Unity.Configuration.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>

кто - нибудь еще имеет эту проблему? Я делаю это неправильно? Спасибо

изменить Я открыл монитор файлов и наблюдал, где visual studio загружает ссылку, и для Unity он получал DLL из указанного мной местоположения. Но, для devart DLL он ищет в GAC! Могут ли библиотеки Devart быть причиной этого как-то?

5 ответов


  1. щелкните правой кнопкой мыши на ссылочных библиотеках DLL и проверьте, является ли copy local true.
  2. вы также можете попробовать прочитать свои ссылки один раз, это решило аналогичную проблему для меня, когда я преобразовал проект VS2005 в проект VS2008.

У меня была похожая проблема с внешними ссылками. Дело в том, что неиспользуемые библиотеки не копируются. Используете ли вы библиотеки Devart из вашего projectB? Любой экземпляр, наследство, что угодно ...?? Пожалуйста, попробуйте это: Instansiate некоторые макет класса из трех библиотек в свой проект Б и перекомпилировать. Это сработало для меня. Я хотел бы перейти к формальному объяснению.


проблема появляется, когда у вас есть DLL, которые являются зависимостями других. Например, Microsoft.Значение applicationserver.Кэширование.AzureClientHelper.dll используется внутри Microsoft.Значение applicationserver.Кэширование.Клиент. Хотя у меня есть copyLocal = True, вспомогательная сборка не копируется, потому что она нигде не упоминается непосредственно в моем коде. Чтобы избежать этой проблемы, вы можете сделать переменную частного типа следующим образом:

тип dependsOnThisTypeOfAssembly = typeof (TypeFromDependentAssembly);

Это сделает ссылку на тип, и сборка будет скопирована локально во время процесса сборки.


Set as Copy local не работает для меня. Единственное, что разрешает (непригодно), - это ссылка на некоторый тип, содержащийся в сборке.


Если эти библиотеки DLL находятся в подкаталоге для проекта B, убедитесь, что свойство" копировать локально " для каждой ссылки имеет значение true.

кроме того, если DLL-файлы включены в проект как файлы, проверьте свойства visual studio для самих файлов. "Действие сборки "должно быть установлено в" нет", а" копировать в выходной каталог "- в"не копировать". EDIT: просто имея их в качестве ссылок с copy local = true позаботится о копирование.

Если эти параметры отличаются для разных библиотек DLL, это может объяснить, почему некоторые копируются в папку bin, а другие нет.