Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将文件添加到exe_C#_File_Embed_Exe - Fatal编程技术网

C# 如何将文件添加到exe

C# 如何将文件添加到exe,c#,file,embed,exe,C#,File,Embed,Exe,我有一个播放声音的程序,但如果我在另一台计算机上运行它,它会说找不到该文件。如何将该文件附加到exe上,这样当有人播放exe时,它仍然可以播放?您可以查看该文件的属性,并在“复制到输出目录”下选择“复制到较新的目录” 当准备使用安装程序发布EXE时,您可以将其与c#程序打包您可以查看文件的属性,并在“复制到输出目录”下选择“复制(如果更新)” 当您准备使用安装程序发布EXE时,您可以将其与c#程序打包。打包项目文件时,请在项目文件夹中创建一个文件夹以保存内容数据(文本-图片-视频-声音..等

我有一个播放声音的程序,但如果我在另一台计算机上运行它,它会说找不到该文件。如何将该文件附加到exe上,这样当有人播放exe时,它仍然可以播放?

您可以查看该文件的属性,并在“复制到输出目录”下选择“复制到较新的目录”


当准备使用安装程序发布EXE时,您可以将其与c#程序打包

您可以查看文件的属性,并在“复制到输出目录”下选择“复制(如果更新)”


当您准备使用安装程序发布EXE时,您可以将其与c#程序打包。

打包项目文件时,请在项目文件夹中创建一个文件夹以保存内容数据(文本-图片-视频-声音..等)然后为代码提供目标文件的相对路径,而不是绝对路径

例如:代替

    string path = "c:\Projects\ProjectFolder\FileName";
这样做:

     string currentDir = AppDomain.CurrentDomain.BaseDirectory;
     string fullPath = currentDir + "ContentFolder/FileName.mp3(or whatever)";    
编辑:

    AppDomain.CurrentDomain.BaseDirectory

将是应用程序根目录,而不是bin子文件夹-这可能是您通常想要的。在客户端应用程序中,它将是包含主可执行文件的目录

打包项目文件时,请在项目文件夹中创建一个文件夹以保存内容数据(文本-图片-视频-声音..等),然后为代码提供目标文件的相对路径,而不是绝对路径

例如:代替

    string path = "c:\Projects\ProjectFolder\FileName";
这样做:

     string currentDir = AppDomain.CurrentDomain.BaseDirectory;
     string fullPath = currentDir + "ContentFolder/FileName.mp3(or whatever)";    
编辑:

    AppDomain.CurrentDomain.BaseDirectory

将是应用程序根目录,而不是bin子文件夹-这可能是您通常想要的。在客户端应用程序中,它将是包含主可执行文件的目录

如果您无法更改源代码,我建议

它是关于创建新的exe存档,其中包含旧的exe+要合并的新文件。当您调用新的exe时,它会运行旧的exe,但也会包含您的音乐文件,您可以按照步骤4和5进行操作


我建议,如果您无法更改源代码,请将exe和音乐文件放在同一文件夹中,并通过该方法压缩它们

它是关于创建新的exe存档,其中包含旧的exe+要合并的新文件。当您调用新的exe时,它会运行旧的exe,但也会包含您的音乐文件,您可以按照步骤4和5进行操作


将exe和music文件放入同一文件夹,并通过该方法压缩它们

如果要将wave文件嵌入程序,请转到项目属性-->资源-->选择音频作为类型,然后选择添加资源并选择音频文件。这将把音频文件添加到您的资源目录中。完成此操作后,您可以右键单击Resources文件夹中的文件,选择Properties并将构建操作更改为
Embedded Resource

要访问该文件,请执行以下操作:

System.Media.SoundPlayer sp = new System.Media.SoundPlayer(Properties.Resources.tada);
sp.Play();


如果要将wave文件嵌入到程序中,请转到项目属性-->资源-->选择音频作为类型,然后选择添加资源并选择音频文件。这将把音频文件添加到您的资源目录中。完成此操作后,您可以右键单击Resources文件夹中的文件,选择Properties并将构建操作更改为
Embedded Resource

要访问该文件,请执行以下操作:

System.Media.SoundPlayer sp = new System.Media.SoundPlayer(Properties.Resources.tada);
sp.Play();


通常情况下,你不会。您将其添加为资源并打包(可能带有安装程序)我想知道这是否可行(制作一个独立的exe,带有声音),如果您希望单文件解决方案为您提供详细的分步说明。通常情况下,您不会。您将其添加为资源并打包(可能使用安装程序)我想知道这是否可行(制作一个独立的exe,带有声音),如果您希望单文件解决方案为您提供详细的分步说明。+0:
CurrentDirectory
是非常危险的方法。请务必搜索有关如何从输出(bin和like)文件夹中读取文件的类似问题。实际上,有很多方法可以完成这项工作,感谢您的建议,因为我需要修改差异,而不是写我脑海中出现的第一个答案+1。感谢编辑——
BaseDirectory
是获取文件位置的更可靠的方法(因为exe可以在任何当前目录下启动,包括)。+0:
CurrentDirectory
是非常危险的方法。请务必搜索有关如何从输出(bin和like)文件夹中读取文件的类似问题。实际上,有很多方法可以完成这项工作,感谢您的建议,因为我需要修改差异,而不是写我脑海中出现的第一个答案+1。感谢您的编辑——
BaseDirectory
是获取文件位置的更可靠的方法(因为exe可以与任何当前目录一起启动,包括)。只是link并不是一个很好的答案格式。你需要对它进行评论或提供链接摘要,这足以理解它所说的内容。+1现在:创建安装程序的合理方法。。。关于帖子:别忘了从帖子中删除签名-你已经把它作为用户名了。。。并检查是否需要“重复执行步骤4和步骤5两次”。谢谢@AlexiLevenkov,现在我可以发表评论了。你很慷慨。只是链接不是一个很好的回答形式。你需要对它进行评论或提供链接摘要,这足以理解它所说的内容。+1现在:创建安装程序的合理方法。。。关于帖子:别忘了从帖子中删除签名-你已经把它作为用户名了。。。并检查是否需要“重复执行步骤4和步骤5两次”。谢谢@AlexiLevenkov,现在我可以发表评论了。你很慷慨。