c# - "Copy if newer"文件更新时为什么不复制文件?

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

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

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

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

我在我的解决方案中创建了一个名为“schemas”的文件夹来保存 XML 文件,并将构建操作设置为Content,并将“复制到输出目录”的值设置为Copy if newer .

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

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

最佳答案

It seems to work also in Visual Studio 2008 Team System - must be Expression edition specific, so cannot repro...

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

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

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

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

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

关于c# - "Copy if newer"文件更新时为什么不复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2229920/

相关文章:

visual-studio - 从 Azure DevOps 克隆时如何选择首选的 Visual Studio 版本

visual-studio - 使用 Razor 在 Visual Studio 2012 Express 中创建局部 View 时出错

c# - 如何阻塞直到异步调用完成?

c# - 如何填充元素数量由变量确定的元组列表

c# - 运行时使用模拟的 Windows 服务帐户的 EF Code First 连接字符串

c# - 如何使用 C# .NET 在 Windows 中使用 "unpair"、 "remove"蓝牙设备

c# - 在寻呼机中回发后模型为空

c# - 访问 javascript 文件中的模型属性?

c# - IntPtr 和 UIntPtr 的区别

visual-studio - 使用 SSRS 2012 运行时,VS 2010 丢失 "Microsoft.ReportViewer.Common Version=8.0.0.0"