Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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# 在没有安装程序的情况下发布Windows窗体项目_C#_Winforms - Fatal编程技术网

C# 在没有安装程序的情况下发布Windows窗体项目

C# 在没有安装程序的情况下发布Windows窗体项目,c#,winforms,C#,Winforms,我已经根据发布概要文件进行了构建,这将在我的项目的release目录中创建一个可执行的构建 如何最好地将此可执行文件分发给客户端?此文件夹中有许多文件在通过安装程序安装时不会显示,例如mainifest和一个名为application.exe.xml(当Windows在Windows资源管理器中隐藏扩展名时,这会让人困惑) 这些都是必要的吗?我可以发送可执行文件吗?或者我需要把所有的文件一起发送?有没有办法在不使用所有这些文件的情况下进行生成?您必须发送EXE文件和本地引用的任何DLL文件。如果

我已经根据发布概要文件进行了构建,这将在我的项目的
release
目录中创建一个可执行的构建

如何最好地将此可执行文件分发给客户端?此文件夹中有许多文件在通过安装程序安装时不会显示,例如mainifest和一个名为
application.exe.xml
(当Windows在Windows资源管理器中隐藏扩展名时,这会让人困惑)


这些都是必要的吗?我可以发送可执行文件吗?或者我需要把所有的文件一起发送?有没有办法在不使用所有这些文件的情况下进行生成?

您必须发送EXE文件和本地引用的任何DLL文件。如果使用COM引用等,则需要在安装过程中注册它们。我认为GAC也是如此,但我自己还没有将其用于独立应用程序

application.exe.config文件包含应用程序设置(app.config的副本)。如果您不使用设置或用户通常不关心这些设置,则可以忽略该文件,它将使用您构建应用程序时使用的默认值


不需要vshost文件(如果有)。它们由VisualStudio的调试器使用。.pdb文件包含用于促进DLL文件到源匹配的调试数据。除非您计划将调试器附加到应用程序,否则发送调试器是没有意义的。

通常,在XCopy部署中,您必须部署(在没有安装程序/安装程序的情况下复制所有文件部署)输出文件夹的内容(如debug或release),而无需:

  • *.pdb-调试符号
  • *.xml-xml文档
  • ?vshost?-VisualStudio托管文件
事实上,这也取决于你的具体应用。作为一个开发者,你需要知道你在生产什么;如果您使用的
xml
文件不是.NET文档编译器的结果,而是复制到输出文件夹中的静态文件,请不要忘记部署它


最后一点注意:开发人员通常在Windows资源管理器中禁用隐藏文件扩展名的选项;-)

您需要了解安装程序的功能或为什么安装程序很重要

安装程序负责基本环境。安装程序可随应用程序携带相关组件/模块。它还可以在运行之前检查您是否需要一些东西,比如目标机器上的.NET。它还可以在桌面或“开始”菜单上创建快捷方式。此外,它还在目标计算机上提供足够的选项来卸载它

如果希望单独发布可执行文件,可能会错过可执行文件所依赖的一些程序集。目标计算机可能安装了正确的.NET版本,也可能没有安装正确的.NET版本。

使用程序:来自HM Soft

  • 构建您的项目
  • 运行NIS编辑
  • 从向导中创建新脚本(Ctrl+W)
  • 运行所有步骤
  • 选择所有.dll和.exe文件
  • 建立一个安装文件

在执行任何其他操作之前,如果不使用安装程序,您需要确保客户端安装了正确版本的.NET。我想您需要一个文件来安装项目/解决方案。我的建议是使用HM NIS编辑器。使用此选项并选择所有.exe和.dll文件。运行HM NIS程序时,将进行设置。。。这是肯定的!:pmonlight-我们的客户端无法在其计算机上安装程序。相关:您好,谢谢您提供的信息,但不幸的是,客户端的计算机没有正确级别的权限安装不在允许的软件列表中的程序,因此我们必须自行发送可执行文件。因此您违反了此策略?更严重,更危险。您正在发送一些可能不在安全列表中的内容,并且您正在绕过安装策略!我们没有违反政策。我们正在创建一个不需要访问系统文件、注册表、受保护目录等的程序。这在公司提供的政策范围内,我们正在与该公司及其IT部门密切合作,以确保我们找到了最简单、最安全的方法来交付可执行程序,供其系统使用。嗨,凯文,你似乎对这方面非常了解。我的应用程序引用的唯一外部框架是OpenXML框架(我相信)。是否需要将此DLL与可执行文件一起打包到文件夹中?我已经将它添加到项目中的参考库文件夹中。答案很好,非常有帮助,非常简洁易懂。只是为了澄清“您必须发送exe和您在本地引用的任何dll”->对我有效的方法是将dll文件放入
release
目录中。单击解决方案资源管理器中的引用,然后点击F4打开属性。将“Copy local”属性设置为true,构建过程将为您复制该dll。非常感谢您的回答和评论,这非常有帮助。还有一件事,如果我这样做并创建一个安装程序,我会需要撤销它吗?我真正想问的是,是否最好总是将外部DLL设置为“复制本地”(用于测试等),这是否会影响创建安装程序的能力?创建安装程序时,您将发送发布文件夹中的所有内容,PDB和vshost文件除外。安装程序将自动拾取您设置为“复制到输出目录”的本地引用和“内容”文件。例如,当您更改依赖项时,您不必编辑安装程序项目,并且在编译时检查所有内容。我发现它使创建安装程序的工作变得简单多了。我的扩展没有隐藏,但我在想我的客户可能没有可见的扩展。无论如何,这就是我所做的,所以我们将很快看到我是否需要包含任何DLL或类似内容!:普威尔y