C# 标记为内容的文件->;复制始终不被复制

C# 标记为内容的文件->;复制始终不被复制,c#,visual-studio,C#,Visual Studio,我的C#VS2010项目文件夹中有一个文件,标记为内容和始终复制 当我更改此文件并将其保存到VS外部,然后运行项目时,修改后的文件不会复制到输出。如果我重建,那么它就是。我的猜测是VS没有使用文件的修改日期时间戳来确定是否应该复制它 我错过什么了吗?每次跑步我都要损失5分钟,这让我快发疯了 谢谢大家! 很难解释,所以从更好的诊断开始。工具+选项、项目和解决方案、生成和运行设置。将“MSBuild项目生成输出详细信息”设置更改为正常。在同一属性页中,确保“项目过期时运行”设置设置设置为“始终生成”

我的C#VS2010项目文件夹中有一个文件,标记为
内容
始终复制

当我更改此文件并将其保存到VS外部,然后运行项目时,修改后的文件不会复制到输出。如果我重建,那么它就是。我的猜测是VS没有使用文件的修改日期时间戳来确定是否应该复制它

我错过什么了吗?每次跑步我都要损失5分钟,这让我快发疯了


谢谢大家!

很难解释,所以从更好的诊断开始。工具+选项、项目和解决方案、生成和运行设置。将“MSBuild项目生成输出详细信息”设置更改为正常。在同一属性页中,确保“项目过期时运行”设置设置设置为“始终生成”。按F5或Build+Build时,在输出窗口中查看,_CopyOutOfDateSourceItemsOutputDirectory任务是复制文件的任务


当您使用Project+添加现有项时,一个可能的陷阱是:IDE会复制您选择的文件。您可能正在更改项目目录中的原始文件而不是副本。您可以通过单击对话框中“添加”按钮上的箭头并选择“添加为链接”来修复此问题。

通过将构建操作从“内容”更改为“嵌入式资源”,可以实现您所期望的行为当我需要使用
COMFileReference
并且还需要将DLL复制到输出文件夹时,

遇到了这个问题


最后,将DLL添加到项目中两次,一次作为复制到输出文件夹的
Content
,一次作为
COMFileReference
。我找到的最简单的方法是直接修改
.csproj
xml。

您是否在运行时随时更改该属性(内容,始终复制)?“运行”是否包括生成?然后我认为VS跳过生成,因为它不知道该更改。尝试创建生成后事件并手动复制文件。@Simon,这很正常。标记为“复制”的文件每次内容更改时都将被复制。但它的内容并没有在每次运行项目时更改(重建)。@HamletHakobyan但这就是重点。我在VS外部编辑文件,然后调试我的项目。文件未被复制。如果我先重建它,它才会被复制。谢谢你的详细回复,Hans,更好的诊断肯定会有所帮助。然而,它解决了这个问题。该文件是XML,包含错误。我在外部编辑器中修复它并调试我的项目。我可以在输出窗口中看到文件已复制,并且戳记的源和目标相同。但是,我的代码在解析XML时失败,正如我预期的那样,出现了此错误。在不做任何其他事情的情况下,我重建、调试它,它就可以工作了。编辑->调试失败。编辑->重建->调试工作。我每次都检查了文件副本。我开始怀疑某种缓存。实际上,我把自己搞糊涂了,不是吗。因为文件只不过是内容,所以从磁盘读取的文件肯定已经过时了。因为我可以看到VS正在正确地复制文件,所以这一定是其他原因。无论如何,谢谢你,汉斯,因为你的回答解决了我对这个问题的最初描述,我会接受它,这样其他人将来可能会看到它。这对我来说很有效。将我的GLSL着色器文件标记为嵌入资源而不是内容会导致在更改GLSL文件时重建项目。