在安装程序项目(Visual Studio)中包含哪些“Release”文件

3
我正在尝试使用Visual Studio Community Edition 2015创建安装程序(安装器)。当我以Release模式构建我的VB.NET(WinForms)项目时,会创建以下文件:
- MyApp.exe - MyApp.exe.config - MyApp.pdb - MyApp.vshost.exe - MyApp.vshost.exe.config - MyApp.vshost.exe.manifest - MyApp.xml
请问我应该将这些文件中的哪些添加到我的Setup项目中呢?全部添加吗?vshost.exe文件是什么?我理解.config文件用于保存设置,但是.xml文件有何作用?
此外,我希望我的用户设置(配置文件,设置为"User Scope")对于Windows中的每个帐户都是唯一的。我只需将.config文件放入应用程序数据文件夹中吗?(我尝试了一下,但是在.config文件名下画了一条蓝线。)

1
@codeMonger123:*.vshost.*文件仅用于_Visual Studio Hosting Process_。他为什么需要在开发环境之外使用它们呢? - Visual Vincent
忘记删除了。他确实需要 MyApp.exe.config 文件。 - codeMonger123
@codeMonger123:你能解释一下为什么吗?我从来没有在我的应用程序中包含它。 - Visual Vincent
你没有包含 app.config 文件???我猜如果你在 .net 程序中从未引用过 app.config 文件,那么你可能不需要它。老实说,我从未不引用 app.config。 - codeMonger123
@codeMonger123:我认为MyApp.exe.configapp.config不是同一个文件。据我所知,app.config通常是嵌入式的。 - Visual Vincent
3个回答

2
据我所知,你真正需要的文件只有MyApp.exe。如果你需要调试信息(例如想要知道异常出现在哪一行,或者想要更精确的堆栈跟踪),你还可以复制MyApp.pdb文件。 .vshost文件仅用于Visual Studio Hosting Process。它们仅在开发环境中调试应用程序时使用,因此您不需要它们。
至于设置,它们是为每个新用户自动生成的(因此它们是特定于用户的,就像您想要的那样),因此您也不需要该文件。
最后,.xml文件也仅是在开发环境中使用的文件。它包含XML注释,IntelliSense使用它来在显示自定义类/方法/变量等时显示自定义描述。 因此总之,你真正需要的只有MyApp.exe,可能还有MyApp.pdb

我想知道为什么它会生成.config文件,当它并不是必须添加到安装项目中的? - garlic
@大蒜:.config 文件是否包含您的设置?如果是,这可能是因为 Visual Studio 在调试期间希望跟踪一切。在 VS 环境之外使用时,设置将自动在当前用户的“本地应用程序数据”文件夹中创建(如果不存在)。因此它们是特定于用户的。 - Visual Vincent
是的,在发布文件夹中的 .config 文件包含我的设置,这些是我希望用户在程序首次运行时看到的默认设置。 - garlic
@garlic:如果我没记错的话,自动生成的设置是默认值。 - Visual Vincent

2
最好正确配置您的项目,这样您就不必猜测。请确保选择了发布配置。然后:
  • 使用“项目”>“属性”>“调试”选项卡,取消选中“启用Visual Studio托管进程”的选项。
  • 使用“项目”>“属性”>“编译”选项卡>“高级编译选项”,生成调试信息=无。
  • 使用“项目”>“属性”>“编译”选项卡,取消选中“生成XML文档文件”的选项。
  • 使用“生成”>“清理”。手动删除剩余的vshost文件。
  • 使用“生成”>“生成”。只有.exe和.config文件应该在那里。
  • -

1

你不需要这些

MyApp.vshost.exe
MyApp.vshost.exe.config
MyApp.vshost.exe.manifest

例子
https://dev59.com/BXRA5IYBdhLWcg3w8ikl

你只需要以下四个文件: MyApp.exe MyApp.exe.config MyApp.pdb MyApp.xml

关于文件'MyApp.exe.config'怎么样?如果我将其放在与我的主可执行文件(Program Files)相同的文件夹中,那么如果用户不是管理员,程序将如何更改该设置文件?如果我将该配置文件放在应用程序数据文件夹中,安装项目(Visual Studio)会在文件名上放置波浪线,但没有实际错误描述。 - garlic
如果用户不是管理员,您想要进行哪些更改?该文件应放在与主exe相同的文件夹中。 - codeMonger123
我通过托管代码(My.Settings)进行更改,例如:保存CheckBox值的选中状态。当我使用My.Settings.<setting>时,我不会直接更改文件,它是通过.NET后台的托管代码完成的。因此,如果.config文件与主可执行文件位于同一位置,则如果用户不是管理员,则保存设置将遇到权限问题。我不希望我的用户以管理员身份运行我的程序,只是为了能够保存设置。或者我错过了什么? - garlic
1
@garlic:我在我的回答中解释了设置的工作原理。 - Visual Vincent

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