Почему «Копировать, если новее» не копирует файл при его обновлении? - PullRequest
6 голосов
/ 09 февраля 2010

У меня есть решение в Visual Studio Express, которое выглядит следующим образом:

image

Класс LogicSchema в C #, который будет анализировать указанный файл XML во время выполнения. Следующее в main методе Program.cs:

LogicSchema ls = new LogicSchema(
    XDocument.Load(
        "schemas\\C#Schema.xml",
        LoadOptions.PreserveWhitespace));

Я создал папку в своем решении под названием «схемы» для сохранения файла XML и установил для параметра «Действие построения» значение Содержимое , а значение «Копировать в каталог вывода» - Копировать, если новее .

Я ожидаю, что если открыть файл в блокноте, внести изменения и сохранить его, обновленная версия XML-файла будет скопирована в выходной каталог (в данном случае bin \ debug), когда я нажму клавишу F5. Однако обновленный файл не копируется в выходной каталог, пока я не выберу Перестроить . Обычная сборка не работает.

Что мне нужно изменить, чтобы при нажатии клавиши F5 файл копировался в выходной каталог после его обновления?

1 Ответ

2 голосов
/ 11 февраля 2010

Кажется, работает и в Visual Studio 2008 Team System - должен быть специфичным для редакции Expression, поэтому не может быть воспроизведен ...

ОК, мое первоначальное предположение не соответствует действительности - речь идет о том, что файл XML находится в указанной библиотеке. Можете его сейчас воспроизвести.

Я думаю, что наиболее естественным способом было бы встроить XML как ресурс, а затем прочитать его с GetManifestResourceStream(). Таким образом, XML-файл будет следовать вашей DLL, когда вы ссылаетесь на нее, не копируя ее отдельно, даже если вы ссылаетесь на DLL напрямую, а не через ссылку на проект.

... или тогда вы могли бы использовать событие Pre-build? (Свойства проекта - Build Events):

copy $(ProjectDir)test.xml $(SolutiontDir)projectFolder\bin\debug\test.xml

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

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