C# 替换Visual Studio中作为嵌入式资源的文件

C# 替换Visual Studio中作为嵌入式资源的文件,c#,.net,visual-studio,embedded-resource,C#,.net,Visual Studio,Embedded Resource,我有一个桌面类型的应用程序正在开发中,部分要求是有一些文件需要成为软件的一部分,而不是可执行文件附带的单独文件:用户说明、说明和许可协议。理解了这一点,我将文件的构建操作设置为嵌入式资源。这些文件没有列在项目属性部分的Resources.resx内容中或任何类似的特定内容中 我遇到的问题是这些文件已经更新。当我通过windows资源管理器替换文件时(确保使用相同的文件名),我可以在Visual Studio中打开该文件并查看更新的内容。但是,当我构建解决方案并在debug中运行,并尝试通过我放置

我有一个桌面类型的应用程序正在开发中,部分要求是有一些文件需要成为软件的一部分,而不是可执行文件附带的单独文件:用户说明、说明和许可协议。理解了这一点,我将文件的
构建操作
设置为
嵌入式资源
。这些文件没有列在项目属性部分的
Resources.resx
内容中或任何类似的特定内容中

我遇到的问题是这些文件已经更新。当我通过windows资源管理器替换文件时(确保使用相同的文件名),我可以在Visual Studio中打开该文件并查看更新的内容。但是,当我构建解决方案并在debug中运行,并尝试通过我放置的链接打开文件时,我不会得到更新的内容。我得到的是旧内容,不是新内容。我漏了一步吗?或者我误解了它的工作原理,一旦文件的
构建操作
设置为
嵌入式资源
,就是这样,如果文件内容有新的更新,我就必须将“新”文件设置为
嵌入式资源

下面是我用来打开一个.docx文件的代码,以备需要:

String destFileName=Path.Combine(Path.GetTempPath(),\u user\u指令);
如果(!File.Exists(destFileName))
{
Assembly=Assembly.getExecutionGassembly();
使用(Stream source=assembly.GetManifestResourceStream(“My_Project_v2.docs.User_Instructions.docx”))
{
使用(流目的地=File.OpenWrite(destFileName))
{
source.CopyTo(目的地);
}
}
}
流程P=新流程
{
StartInfo={FileName=“WINWORD.EXE”,Arguments=destFileName}
};
P.开始();
const String\u user\u instructions=“7f0cf255-74ad-4665-adb6-8d6cdd77e4d3”;
有人建议我为嵌入的文件创建唯一的guid


请让我知道,如果我能做些什么来“更新”文件内容,而不必制作新的“嵌入式资源”

以及
BuildAction
CopyToOutputDirectory
可以设置
CopyIfNewer
@Clint所以,这确实将新文件放在了输出目录中,但当通过应用程序访问内容时,它仍然是旧内容。对于
用户说明
文件来说很容易,因为旧的内容基本上是一个空的word文件,而更新的文件中有文本内容。因此,在应用程序中,当我单击按钮让Word打开.docx文件时,它会打开空文件。(已被替换)。是的,较新的文件将位于您的输出目录中,您是否指向正确的文件?我刚刚创建了一个全新的控制台应用程序,添加了一个文本文件,将其设置为嵌入式资源,并复制(如果较新),添加了一些代码来读取嵌入式资源内容,并将行写入控制台,构建,运行,验证内容是否写入控制台、停止调试、更改文本文件内容、生成、运行、验证新内容是否写入控制台。因此,我们据称做了同样的事情,但得到了不同的结果。也许如果你像我在这里用一个全新的控制台应用所做的那样,你可能会发现以前遗漏的差异?@shadonar很遗憾,我们无法在注释中很好地共享代码,但你是对的,我正在使用
Assembly.GetManifestResourceStream
阅读嵌入的资源