如何使用ClickOnce应用程序部署文件?

5
在编码时,我有一些文件,声音文件(.wav和.mp3)和文本文件(.rtf),它们位于我的bin \ Debug文件夹中,但发布后它们无法找到。
我的应用程序可以播放声音文件,这些是应该与应用程序一起安装在Application.Startup路径中的默认声音文件。
我将文本*.rtf文件加载到我的帮助表单中的RichtextBox控件中。
我已将它们的属性设置为Content和Copy if Newer。
2个回答

7
您需要将这些文件设置为内容(如您所做的那样),以便它们被复制到 bin 文件夹中。然后打开项目属性页面,选择“发布”选项卡,点击“应用程序文件...”。现在您应该能看到与您的项目相关的文件列表和指示它们应该如何发布的值。很可能您的文件已被标记为数据,并且将被定位到 ClickOnce 应用程序的数据文件夹而不是 bin 文件夹。要么更改您的代码以使用 ClickOnce 数据文件夹(有帮助方法),要么确保选择了“包括”,而不是“数据文件”。
另外,如果这些文件在客户端应用程序上永远不会更改,您可以考虑将文件作为资源嵌入到 dll 中。

谢谢,@Bronumski。但我还有另一个问题,就是我将我的项目导入了一个在线svn存储库。然后我检出了我的工作副本。现在,这些文件在Visual Studio解决方案资源管理器中显示时没有文件类型特定的图标,在属性窗口中也没有显示“生成操作”和“复制到输出目录”属性。 - Geoffrey
1
我只需要对bin\Debug文件夹中的文件副本设置“Content”和“Copy to Output Directory”,并将“\bin\Debug”连接到加载文件的代码中的Application.StartupPath。谢谢。 - Geoffrey

1

我不清楚——你有在Visual Studio中将这些文件添加到你的项目中吗?如果是这样,请将它们添加到你的csproj文件所在的顶层目录,或者将它们放在该目录下的一个文件夹中(它们将以相同的相对路径部署)。我绝对不会包括来自\bin\debug文件夹的文件。你可能会在某个时候轻易地清除掉你的\bin文件夹,然后这些文件就没了。我不确定你是否这样做了,但听起来像是。

如果你将它们放在项目的顶层目录中,它们将位于你的部署的顶层目录中。如果你将它们放在文件夹中,它们将在该相对路径中。将生成操作设置为“content”,并且我会将“复制到输出目录”设置为“始终复制”。


我也在顶层有这些文件,但是它们的“生成操作”和“复制到输出目录”属性不会出现在属性窗口中。在解决方案资源管理器中,这些文件也没有特定于文件类型的图标,而是默认的“白色页面,右上角翻页,带有断线边框”的图标。这里是一个截图,在解决方案资源管理器中选择了Alarm_Clock_Help.rtf文件:http://tinyurl.com/39lqo45 - Geoffrey
我的前一条评论提到了这一点。我发现原因是我使用Windows资源管理器复制了文件。现在,我使用Visual Studio菜单中的“项目>添加现有项…”将文件添加到项目中,它们具有正确的图标和属性。 - Geoffrey
我想你可能已经做过了。我认为你可以右键单击它们,然后选择“包含在项目中”,这样就会将它们添加到项目中。那么现在文件是否成功部署了呢? - RobinDotNet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接