Visual Studio项目生成的是dll而不是可执行文件

4

我觉得这可能是一个非常愚蠢的问题,但是当我构建我的解决方案(控制台应用程序)时,它创建了一个dll而不是可执行文件。 我是否做错了什么或者只是误解了这个过程?


我觉得这是(我对VS还不太熟悉) - undefined
请查看 此帖子。我有些犹豫是否将其标记为直接重复,但至少它与此相关。 - undefined
5
不要猜测,查看你在Visual Studio项目属性页面中的应用程序类型。 - undefined
请显示一个控制台应用程序项目的属性,或者从cspoj文件中显示属性组。 - undefined
4个回答

2
在解决方案资源管理器中右键单击您的项目,然后在上下文菜单底部选择“属性”。选择正确的“输出类型”,如屏幕截图所示。

enter image description here

正如此处另一个答案中提到的:如果您的目标框架是 .NET Core,请在 Visual Studio 的 生成 菜单中使用 Publish,并设置 Target runtime 格式,例如 win-x86,以生成正确的应用程序格式。
参考文献:使用 Visual Studio 发布 .NET Core 应用程序

假设OP的项目是基于框架而不是核心部分。你可能至少要提到这是一个针对框架的修复。 - undefined
1
可能更有帮助的是说“在解决方案资源管理器中右键单击您的项目”,而不是说“ConsoleApp1”。这可能不是OP项目的名称。另外,“screenshot”拼写错误。 - undefined
感谢您的评论。添加了.NET Core的说明,并修复了“在您的项目上”的问题。 - undefined

1
如果这是 .Net Framework,那么很可能项目输出类型在项目属性页面中设置为类库。
要解决此问题,您必须确保有一个签名为 static void Main() 的方法,并将输出类型设置为控制台应用程序。
更改输出类型的步骤:
  1. 右键单击解决方案资源管理器中的项目名称
  2. 选择“属性”
  3. 在“应用程序”选项卡上,将输出类型更改为“控制台应用程序”
  4. 将“启动对象”下拉菜单更改为包含您的Main方法的类。
  5. 保存属性并尝试重新构建/调试。

1
在执行此操作后,完全相同的结果:/ - undefined
@smeel - 验证一下你的项目是框架还是核心。如果是核心,那么这个方法不会解决你的问题。 - undefined

1

不,这是合法的。至少对于.NET Core 2.x而言。对于.NET Core 3.x,它会构建一个.EXE文件。您可以通过运行:dotnet foo.dll来运行它。

因此,现在请使用Publish代替Build。这将生成一个.EXE文件。

我通常会准备一个命令来快速生成它:

dotnet publish -c Release -r win10-x64 --self-contained:false

我该如何使用那个命令来导出它?我应该在哪里输入它? - undefined
@smeel 在与您的 .csproj 文件相同的目录中打开命令提示符。然后只需运行此命令。 - undefined

0

从Visual Studio发布到exe

右键点击项目 > 发布 > 配置

  • 选择 部署模式:自包含

  • 选择 首选目标运行时

  • 记下目标位置

  • 点击发布

现在你会在你记下的目标位置找到你的exe文件

注意:默认选项设置为依赖框架模式,这就是为什么你看到输出的是dll文件,要运行它,你可以使用dotnet MyConsoleApp.dll

.NetCore 2.1 / 2.2 / 3.0(通过命令行)

.NetCore 3.0(通过命令行)


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