为什么“如果更新则复制”在文件更新时不复制文件?

时间:2010-02-09 14:53:03

标签: c# .net visual-studio file-io

我在Visual Studio Express中有一个如下所示的解决方案:

C#中的LogicSchema类,它将在运行时解析指定的XML文件。以下内容属于main的{​​{1}}方法:

Program.cs

我在我的解决方案中创建了一个名为“schemas”的文件夹,用于保存XML文件并将Build Action设置为 Content ,将“Copy to Output Directory”值设置为如果更新则复制

我的期望是,如果在记事本中打开文件,进行更改并保存,当我按F5时,XML文件的更新版本将被复制到输出目录(在本例中为bin \ debug)。但是,除非我选择重建,否则更新的文件不会复制到输出目录。常规构建不起作用。

我需要更改什么才能在按F5时将文件更新后复制到输出目录?

1 个答案:

答案 0 :(得分:2)

  

它似乎也适用于Visual Studio 2008 Team System -   必须是特定的表达版本,所以不能重复...

好吧,我最初的猜测不正确 - 它是关于XML文件在引用的库中。现在可以重复它。

我认为最自然的方式是将XML作为资源嵌入,然后使用GetManifestResourceStream()读取它。这样,即使您直接引用dll而不是通过项目引用,XML文件也会在您引用它时跟随您的dll而不单独复制它。

...或者你可以使用Pre-build事件? (项目属性 - 构建事件):

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

我认为即使VS认为没有源文件发生变化,它也会一直运行。至少在完整VS2008中就是这种情况 - 刚刚测试过。