2014-12-17 7 views
0

Наше решение имеет папку «Lib», содержащую DLL («A.dll»), хранящуюся в исходном элементе управления.Как визуальная студия знает, что моя библиотека DLL должна быть скопирована

Мой проект выглядит следующим образом (упрощенный):

Website 
- References 
- * Reference to A.dll from Lib folder below * 
- Content 
- Lib 
- A.dll (Build Action: Content, Copy to Output: Do not copy) 
- B.dll (Build Action: Content, Copy to Output: Do not copy) 
- Migrations 
- Views 

А имеет ссылку на/использует B, но B не входит в качестве ссылки в веб-сайте.

Когда я попал в компиляцию Visual studio помещает B в папку bin, как он это знал? Даже если я оставлю B там, где он есть, но не позволяйте проекту веб-сайта видеть его (не включать его в проект), он все равно помещается в папку bin.

Однако, если я помещаю B в папку Migrations, он не копируется в папку bin. В папке Lib и Migrations нет специальных свойств против них (что я вижу).

Как это работает, документировано?

+0

Метаданные сборки .NET содержат запись для зависимых сборок. Msbuild читает его, чтобы выяснить, нужно ли их копировать. Таким образом, он видит, что B является зависимостью A. Если он находит файл, он копирует его. Если нет, то * тихо * пропускает копию. –

+0

Как узнать, как искать в папке Lib? Просто оказалось, что место А было помещено, а не место А было изначально скомпилировано. – Lee

+0

Из ссылки, которую вы добавили. Свойство '' свойства ссылки A указывает на папку Lib. –

ответ

0

Согласно комментариям, было разъяснено, что причина, она работает в случае, потому что он искал B в том же месте, он нашел А.

Как это помогло мое понимание, я отправил его как ответ в случае, если он будет полезен кому-либо еще.

Спасибо Хансу за вашу помощь.