У меня есть два проекта 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?
$(ProjectDir)
. Сначала я добавил файл в проект с другим расширением (.bkp), а затем добавил в PreBuildEvent копию файла. Файл bkp копируется с правильным именем. В проекте я добавил ссылку на оба файла (даже если правильный не существует до сборки). Для bkp я установил None, а для другого — Content. - person Marlos   schedule 03.09.2014