PreBuildEvent не отражается в зависимостях проекта

У меня есть два проекта C#, один из них, библиотека, содержит файл базы данных, который изменяется во время PreBuildEvent. Его содержимое корректно обновлено и доступно в папке bin\Debug этого библиотечного проекта.

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

В приведенном ниже примере я буду использовать текстовый файл (он ведет себя так же):


ProjectLib.csproj

  • TextFile1.txt
    • Build action: Content
    • Копировать в выходной каталог: Копировать, если новее

Предварительное событие:

echo test > $(TargetDir)TextFile1.txt

Содержимое TextFile1.txt в ProjectLib\bin\Debug:

test

Application.csproj

Содержимое TextFile1.txt в Application\bin\Debug:

"empty"

Откуда берется файл базы данных? Из $(ProjectDir) или $(TargetDir)? EDIT: файл базы данных выбирается из $(ProjectDir). Вы можете увидеть это при выполнении сборки с помощью msbuild. В конце есть цель с именем _CopyOutOfDataSourceItemsToOutputDirectory, и это показывает источник как $(ProjectDir).

Есть ли способ изменить файл в PreBuildEvent — файл в библиотеке bin\Debug — и правильно вывести его в приложение bin\Debug?


person Marlos    schedule 29.08.2014    source источник
comment
Я решил это, получив файл от $(ProjectDir). Сначала я добавил файл в проект с другим расширением (.bkp), а затем добавил в PreBuildEvent копию файла. Файл bkp копируется с правильным именем. В проекте я добавил ссылку на оба файла (даже если правильный не существует до сборки). Для bkp я установил None, а для другого — Content.   -  person Marlos    schedule 03.09.2014
comment
Я оставлю вопрос открытым, если кто-то предложит лучшее решение для этого.   -  person Marlos    schedule 03.09.2014


Ответы (1)


Почему вы проектируете свою систему сборки так, чтобы два отдельных проекта перезаписывали критическую зависимость?

person Nicodemeus    schedule 29.08.2014
comment
Потому что файл базы данных является конечным продуктом как для библиотеки, так и для примера приложения. Но даже если я изменю файл базы данных на тот же проект, что и библиотека, при развертывании примера приложения возникнет та же ошибка. - person Marlos; 01.09.2014