为啥我通过安装项目而不是 EXE 安装 DLL 以及如何修复它?
Posted
技术标签:
【中文标题】为啥我通过安装项目而不是 EXE 安装 DLL 以及如何修复它?【英文标题】:Why I get a DLL installed by the setup project instead of an EXE and how to fix it?为什么我通过安装项目而不是 EXE 安装 DLL 以及如何修复它? 【发布时间】:2021-08-03 20:52:10 【问题描述】:我创建了一个新的 C# 项目 WPF 应用程序 - .NET Core WPF 应用程序的项目。 框架:.NET Core 3.1。
项目已加载。 (你有一个空表格) 右键单击您的项目并检查您是否具有“输出类型”Windows 应用程序。 (这意味着当您单击构建时,它会在项目的 BIN 文件夹中创建一个 EXE 文件) 然后在解决方案中添加一个新项目:Setup Wizard 扩展名为 Microsoft Visual Studio 安装程序项目。然后按照此处的步骤操作 -> https://***.com/a/6090929/15917420
最后它将DLL打包成安装程序文件而不是EXE。
因此,如果您使用 setup.exe 并安装它,它会安装 DLL。 你有同样的问题还是我错过了什么?
如果我使用 .NET Framework 创建 WPF,我没有这个问题。
谢谢
编辑:录制的视频:https://drive.google.com/file/d/11ElC0F62klxQOI-beOn6LhcZbyOb7QDT/view?usp=sharing
【问题讨论】:
安装项目中创建并包含的exe的名称是什么,安装的dll名称是什么,添加到安装项目中的对象的属性是什么?如果你创建一个 exe 并添加它,我不明白你得到的是一个 dll ...... @OlivierRogier 用空表单创建简单项目没关系。 【参考方案1】:我有同样的问题。微软发布了这个: https://docs.microsoft.com/en-us/visualstudio/deployment/installer-projects-net-core?view=vs-2019
基本上是说对于 .NET Core 项目,在构建安装项目时,您必须使用“已发布项目”而不是“主要输出”。它还有一些其他的提示。
【讨论】:
您已至少发布了四次此答案:***.com/a/69301507/10871073***.com/a/69301592/10871073***.com/a/69301729/10871073。 是的,因为答案适用于所有四个问题。不知道我可以用我有限的功能做些什么。【参考方案2】:以 .NET Core 为目标时,“主”项目(即应用程序)获取两个文件,一个 dll 和一个 exe 文件。 exe文件只是一个存根加载器,它定位dotnet运行时并将控制权转移到相应的dll。简单来说,一个.NET core项目的exe就是执行dotnet <dll-with-the-same-name>
-command。
考虑到这一点,您需要确保安装程序同时安装 dll 和 exe(以及任何其他类似名称的文件,例如 <Application>.deps.json
)。
【讨论】:
以上是关于为啥我通过安装项目而不是 EXE 安装 DLL 以及如何修复它?的主要内容,如果未能解决你的问题,请参考以下文章