Visual Studio Copy Local по ссылке не работает

У меня есть две неуправляемые библиотеки C ++ DLL в решении, называемые A и B, и A имеет ссылку на B. Я хочу скопировать B.dll в каталог приложения для A. Когда я нажимаю «Копировать локальную» на ссылку в A » Фреймворк и ссылки »в свойствах проекта, похоже, что оно установлено в значение true, но нажатие кнопки« Применить »возвращает значение обратно в« ложь ». Есть идеи, что здесь?

9

Решение

Я знаю, что это было давно, но я только столкнулся с этой проблемой и нашел эту страницу соединения:

https://connect.microsoft.com/VisualStudio/feedback/details/766064/visual-studio-2012-copy-local-cannot-be-set-via-the-property-pages

Похоже, это известная проблема. Вы можете обойти это, отредактировав файл проекта.

1

Другие решения

@HoopSomuah Даже если вы исправите ошибку подключения и установили параметр «Копировать локально», Visual Studio по-прежнему не будет копировать зависимые библиотеки или библиотеки в целевую папку для A, независимо от того, какие флаги вы указали для ссылки на B в проекте. A.

Неуправляемая обработка ссылок в Visual Studio 2015 все еще не работает, и я уверен, что 2017 год также плох.

@JasonFry Как отметил @HansPassant, вам нужно добавить событие пост-сборки в проект A, чтобы скопировать B.dll в ту же папку, что и A.dll.

Visual Studio не предоставляет простого способа получить путь к B.dll из проекта A, поэтому мы можем заставить проект B записать этот путь в текстовый файл, а затем заставить проект A прочитать путь из этого текстового файла и скопировать B .dll в ту же папку, что и A.dll.

откройте свойства проекта для B и добавьте это как событие после сборки:

echo $(TargetPath)>$(SolutionDir)References.txt

в свойствах проекта для A добавьте как событие после сборки:

for /f %%f in ($(SolutionDir)References.txt) do xcopy /y %%f $(TargetDir)

Если у вас был третий проект C.dll, который также необходимо скопировать в выходную папку A, добавьте аналогичное событие после сборки в свойствах проекта для C (обратите внимание >> вместо > поэтому он добавляет текстовый файл вместо того, чтобы перезаписывать его):

echo $(TargetPath)>>$(SolutionDir)References.txt
1

У меня была эта проблема некоторое время назад. По сути, это правда, поэтому он копирует файл, а затем устанавливает себе значение false, чтобы не допустить его повторного копирования.

0
По вопросам рекламы ammmcru@yandex.ru