Почему исключение свойства сборок в разделе «обнаруженные зависимости» в vdproj не сохраняется? - PullRequest
4 голосов
/ 08 ноября 2011

У меня простая проблема.Я хочу исключить некоторые зависимости dll (в папке обнаруженных зависимостей) в моем проекте установки, чтобы они не копировались в папку установки пользователя.Я решил эту проблему, установив для свойства «exclude» значение true в сборках, которые мне не нужны, а затем собрав файл msi.Он работает нормально, сборки исключены.

Однако, если я закрою Visual Studio и перезагрузлю ее, только одно из свойств 'exclude' (из 4 в моем случае, которое я установил) останется равным true.Я проверил файл vdproj, и там есть 4 строки, например:

"Exclude" = "11:TRUE"

... по одной для каждой сборки, которую я хотел исключить.

Так что, похоже, VS2010 не правильнозагрузка настроек из файла vdproj.Я озадаченУ кого-нибудь есть обходной путь?

Ответы [ 2 ]

4 голосов
/ 16 октября 2012

Это потому, что анализатор зависимостей всегда добавляет библиотеки DLL в проект развертывания, когда для их свойств Copy Local установлено значение true. См. Раздел «Ранее исключенные файлы снова включаются при повторном открытии решения» в статье MSDN Устранение неполадок в проектах установки и развертывания . Вам придется выбирать между использованием Visual Studio для копирования Visual Studio и использованием проекта развертывания для установки файлов в нужном месте, особенно в комплексном решении.

1 голос
/ 13 ноября 2013

Это для всех людей, которые приходят сюда в поисках решения!

Ну, у меня была та же проблема, что и упомянутая выше, но DLL, которую я хотел избежать, - это обнаруженная зависимость (мой проект A зависит от B.dll, которая имеет зависимость от C.Dll (2.0.0.0)), но я не хочу C.dll (2.0.0.0) в моем MSI (поскольку у меня есть прямая зависимость от другой версии C.dll (1.0.0.0)). Я пытался исключить DLL, но это не сработало, поскольку VDProj обновляет зависимость каждый раз, когда я перезагружаю проект, и добавляет обнаруженную зависимость обратно.

Решение от Microsoft состояло в том, чтобы установить для свойства «CopyLocal» значение false для указанной библиотеки DLL, у меня было так много этих библиотек DLL, и я не хотел идти в каждый проект и обновлять его (поскольку это вызвало бы усилия по тестированию к небесной ракете, потому что согласно тестерам я фактически изменяю код для многих проектов). Поэтому я решил эту проблему, добавив определенную DLL (C.Dll (1.0.0.0)) в проект установки вручную. Просто щелкните правой кнопкой мыши проект установки и выберите «Добавить файл».

enter image description here

также не забудьте указать место, в которое вы хотите развернуть файл, в моем случае он направлялся в папку BIn.

enter image description here

Этот файл переопределит все другие обнаруженные зависимости (с похожим именем) и будет развернут в указанном нами месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...