Я нашел эту страницу на MSDN, в которой есть обходной путь для флага Исключить , который сбрасывается на Ложь :
Ранее исключенные файлы снова включаются при повторном открытии решения
Когда вы исключаете файл из проекта установки, вы можете увидеть, что файл снова включается после закрытия и повторного открытия решения. Это может произойти, если есть две копии одного и того же DLL-файла из двух разных исходных расположений.
Чтобы обойти эту ошибку, измените свойство Copy Local в одном из файлов:
В обозревателе решений щелкните ссылку на DLL, которую вы хотите удалить.
В меню Вид выберите Окно свойств.
Измените свойство Copy Local на False.
К сожалению, это решение не будет работать для меня, потому что проект установки предназначен для веб-сайта ASP.NET, но обходной путь Microsoft задокументирован здесь для дальнейшего использования.
Я думаю, я установил, почему существует зависимость. Веб-сайт ссылается на результаты проекта из ряда проектов. Когда сайт предварительно скомпилирован, указанные сборки проекта собираются и помещаются в папку bin . Затем проект установки идентифицирует их как зависимости, несмотря на то, что проект установки уже включает выходные данные проекта для этих проектов. Причина, по которой я использую выходные данные проекта в проекте установки, состоит в том, что TFS любит проверять библиотеки, содержащиеся в предварительно скомпилированной веб-папке, которая является частью файловой структуры решения. Это иногда приводило к тому, что в итоговом установщике присутствовали старые или неправильные версии DLL.
Обходным решением для меня является редактирование файла TFSBuild.proj и добавление задачи по удалению этих библиотек из предварительно скомпилированного каталога bin . Тогда они не будут определены как зависимости при сборке установщика.