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 ответов
- щелкните правой кнопкой мыши на ссылочных библиотеках DLL и проверьте, является ли copy local true.
- вы также можете попробовать прочитать свои ссылки один раз, это решило аналогичную проблему для меня, когда я преобразовал проект 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, а другие нет.