У нас есть несколько внешних файлов DLL, ссылаемых в нашем веб-приложении Проект. У нас есть проект развертывания для установки на хостинг-серверах. Когда мы использовали.NET 3.5 и Visual Studio 2008, файлы DLL копировались в папку мусорного ведра. Так как мы обновили до.NET 4 и Visual Studio 2010, этого больше не происходит, и мы получаем ошибки сервера, так как ссылки не могут быть найдены.
CopyLocal имеет значение true, и я ничего не могу найти в web.config, который предполагает, что это устанавливается в другом месте.
Что-то странное произошло с моим проектом развертывания. Когда я увидел, что у него нет обнаруженных зависимостей, я удалил первичный вывод и снова добавил его.
Теперь зависимости появляются и помещаются в папку bin при установке.
Я не уверен, как это было настроено в Visual Studio 2008, но я почти уверен, что вы могли использовать командную строку Post-Build event. В ней вы можете указать скопировать DLL-файлы, необходимые вам для развертывания. Пример приведен ниже:
mkdir $(SolutionDir)\Deployment
copy "$(SolutionDir)Your_Library_Name\Your_Dll_ForDeployement.dll"
$(SolutionDir)\Deployment\
У меня возникла точно такая же проблема. У нас есть проект Visual Studio 2008, который ссылается на EnterpriseLibrary. Когда мы запускаем нашу интегрированную сборку с использованием TFS и нашего проекта веб-развертывания, все файлы DLL копируются. Когда мы обновились до Visual Studio 2010, TFS 2010 и WDP 2010, некоторые файлы DLL отсутствовали. Как ни странно, это происходит только с некоторыми файлами DLL, а не с другими.
Например, мы получаем Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll, скопированный в обоих случаях, но не Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll.
В качестве обходного пути я скопировал файлы через шаг «BeforeBuild».
Теперь, похоже, все идет нормально.