Winforms Windows窗体C#.net部署问题

Winforms Windows窗体C#.net部署问题,winforms,deployment,Winforms,Deployment,我刚刚完成了一个WinForms应用程序,它工作得很好!现在,是时候部署了。问题是,我不想创建一个安装文件,而是创建一个可执行文件,例如“myApp.exe”。之所以这样做,是因为它将被重新分发到CD媒体上,而且当CD插入用户的PC时,它应该作为一个独立的应用程序自动运行 有什么想法吗 其次,如何从应用程序中创建对CD上包含的“.txt”文件的引用?我想提供指向文件的链接,但我不确定如何进行路径引用 蒂娅…我真的很困惑 您可以在exe中使用嵌入式资源而不是单独的文件:您可以在exe中使用嵌入式资

我刚刚完成了一个WinForms应用程序,它工作得很好!现在,是时候部署了。问题是,我不想创建一个安装文件,而是创建一个可执行文件,例如“myApp.exe”。之所以这样做,是因为它将被重新分发到CD媒体上,而且当CD插入用户的PC时,它应该作为一个独立的应用程序自动运行

有什么想法吗

其次,如何从应用程序中创建对CD上包含的“.txt”文件的引用?我想提供指向文件的链接,但我不确定如何进行路径引用


蒂娅…我真的很困惑

您可以在exe中使用嵌入式资源而不是单独的文件:

您可以在exe中使用嵌入式资源而不是单独的文件:

当您在代码中引用“.txt”文件时,只需使用执行应用程序的相对路径即可。例如,如果您的.txt文件与可执行文件位于同一目录中,请不带任何路径(“filename.txt”)引用它们,或者您可以使用(“.\filename.txt”)


至于不安装你的应用程序,只需确保你没有使用任何需要安装在客户端上的第三方库,只需烧录你的应用程序/bin/目录的内容,并使用autorun.ini文件启动你的exe。

当你在代码中引用“.txt”文件时,只需使用执行应用程序的相对路径即可。例如,如果您的.txt文件与可执行文件位于同一目录中,请不带任何路径(“filename.txt”)引用它们,或者您可以使用(“.\filename.txt”)


至于不安装你的应用程序,只需确保你没有使用任何需要安装在客户端上的第三方库,只需烧录你的应用程序/bin/目录的内容,并使用autorun.ini文件启动你的exe。

对于那些感兴趣的人,什么对我也有效,我需要应用程序可执行文件的引用路径的地方是使用“Environment.GetCurrentDirectory”

例如,我提供了MS Word.dot模板的路径,如下所示:

Object templatePath = Environment.GetCurrentDirectory + "\\Assets\\MyDocument.dot";

对于那些感兴趣的人来说,我需要应用程序可执行文件的引用路径,而对我来说,使用“Environment.GetCurrentDirectory”也是有效的

例如,我提供了MS Word.dot模板的路径,如下所示:

Object templatePath = Environment.GetCurrentDirectory + "\\Assets\\MyDocument.dot";

@沙兰:你的答案是:

小心!你会让你的用户和维护程序员感到不安

我已经看到并修复了这个错误至少几十次

您确定知道当前目录是什么吗?例如,OpenFileDialog和SaveFileDialog可以更改它,然后您将无法找到.dot文件

如果用户使用不同的工作目录启动应用程序怎么办?那你也会失败。请记住,您无法控制您的工作目录——如果用户更改默认目录,您的应用程序将失败

如果您必须找到应用程序的可执行路径,请考虑使用。例如:


这将始终根据应用程序的启动目录获取路径,而不仅仅是工作目录。

@Shalan,re:您的答案:

小心!你会让你的用户和维护程序员感到不安

我已经看到并修复了这个错误至少几十次

您确定知道当前目录是什么吗?例如,OpenFileDialog和SaveFileDialog可以更改它,然后您将无法找到.dot文件

如果用户使用不同的工作目录启动应用程序怎么办?那你也会失败。请记住,您无法控制您的工作目录——如果用户更改默认目录,您的应用程序将失败

如果您必须找到应用程序的可执行路径,请考虑使用。例如:


这将始终获得基于应用程序启动目录的路径,而不仅仅是工作目录。

好的,这很酷。但在这种情况下,这会起作用吗?我使用MS Office PIA,所以我实际上使用邮件合并来写入MS Word“.dot”模板文档中的一些模板字段。我还应该嵌入这个吗?哦,对不起…你是指编译时生成的DLL吗?不,你可以嵌入任何类型的文件。但不确定微软办公软件的部分。好的,那很酷。但在这种情况下,这会起作用吗?我使用MS Office PIA,所以我实际上使用邮件合并来写入MS Word“.dot”模板文档中的一些模板字段。我还应该嵌入这个吗?哦,对不起…你是指编译时生成的DLL吗?不,你可以嵌入任何类型的文件。但不确定微软办公软件的部分。嘿,戴维索洛!谢谢你!我通常将所有文件保存在一个名为“assets”的文件夹中,因此我可以将txt文件引用为“.\assets\file.txt”,对吗?我正在使用第三方DLL,但在解决方案xplorer中的References文件夹下,我已将其“copy Local”属性设置为true。但有一件事,在过去我构建解决方案时,在bin“debug”和“release”下通常会出现两个文件夹,后者不再存在。我知道这是一个使用,但似乎看不到它。抱歉,我已经有一段时间没有创建Winforms应用程序了!塔克斯!是的,“\assets\file.txt”将引用与可执行文件执行路径相同的assets文件夹。只要您的DLL不需要注册,只需要在应用程序中引用,它们就可以正常工作。我认为这就是所谓的xcopy部署(因为没有更好的术语)。至于缺少的发行版二进制文件,您可以通过单击(在visual studio中)Build->Configuration Manager在调试和发行版之间切换。。。然后您可以更改活动解决方案配置。“标准”工具栏中还有一个下拉列表框。Thanx用于辅助devSolo!将明确检查outThis是否使用应用程序的当前目录,该目录在应用程序的生命周期内可能会发生更改。也可以通过以下方式将其设置到不同的位置: