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

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

C#中的LogicSchema类,它将在运行时解析指定的XML文件。 以下是Program.csmain方法:

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

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

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

我需要更改什么,以便当我按F5时,文件在更新时被复制到输出目录?

您是否尝试将构建操作设置为无?

它似乎也适用于Visual Studio 2008 Team System – 必须是Expression版本特定的,所以无法重现…

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

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

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

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

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