【问题标题】:Visual Studio project builds into dll rather than executableVisual Studio 项目构建为 dll 而不是可执行文件
【发布时间】:2020-02-24 18:32:51
【问题描述】:

我认为这是一个非常愚蠢的问题,但是当我构建我的解决方案(控制台应用程序)时,它会创建一个 dll 而不是可执行文件。我是做错了什么还是只是误解了它的工作原理?

【问题讨论】:

  • 它是 .NET Core 项目吗?
  • 我认为是(我对 VS 很陌生)
  • 检查this post。我有点犹豫是否将其标记为直接重复,但至少它是相关的。
  • 别猜了,在Visual Studio中你项目的属性页看一下应用类型。
  • 请显示来自cspoj 文件的控制台应用项目属性或属性组

标签: c# visual-studio build console-application


【解决方案1】:

在解决方案资源管理器中右键单击您的项目,然后在上下文菜单底部选择Properties。选择正确的Output type,然后按照屏幕上的标记。

正如此处另一个答案中提到的:如果您的目标框架是 .NET Core,请在 Visual Studio 宽度设置 Build 菜单中使用 Publish Target runtime 格式,例如 win-x86 以进行正确的输出申请格式。

查看参考:Publish your .NET Core application with Visual Studio

【讨论】:

  • 这假设OP的项目是框架而不是核心。您可能至少要提一下,这是对框架的修复。
  • 说“在解决方案资源管理器中右键单击您的项目”之类的内容可能比说“ConsoleApp1”更有帮助。这可能不是 OP 项目的名称。另外,“截图”上的错字。
  • 感谢 cmets。添加了.NET Core 注释并修复了“在您的项目中”
【解决方案2】:

如果这是 .Net Framework,则项目输出类型很可能在项目属性页面中设置为类库。

要解决此问题,您必须确保您有一个签名为 static void Main() 的方法,并将输出类型设置为控制台应用程序。

更改输出类型:

  1. 在解决方案资源管理器中右键单击项目名称
  2. 选择属性
  3. 在应用程序选项卡上,将输出类型更改为控制台应用程序
  4. 将 Startup 对象下拉菜单更改为包含您的 主要方法。
  5. 保存属性并再次尝试构建/调试。

【讨论】:

  • 执行此操作后的结果完全相同:/
  • @smeel - 验证您的项目是框架还是核心。如果它是核心,那么这不会解决您的问题。
【解决方案3】:

不,这是合法的。至少对于 .NET Core 2.x。对于 .NET Core 3.x,它确实构建了一个 .EXE。你总是可以通过运行它来运行它:dotnet foo.dll

所以现在,不要使用 Build,而是使用 Publish。这将生成一个.EXE。

我通常会随身携带一个命令,以便快速生成它:

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

【讨论】:

  • 如何使用该命令导出它?在哪里输入?
  • @smeel 在 .csproj 文件所在的目录中打开命令提示符。然后运行它。
【解决方案4】:

Publishing to exe from Visual Studio

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

  • 选择Deployment Mode: Self-Contained

  • 选择Preferred Target Runtime

  • 记下目标位置

  • 点击发布

您现在将在您记下的目标位置找到您的 exe

注意:默认选项设置为框架依赖模式,这就是为什么您会看到 dll 文件作为输出并运行您可以dotnet MyConsoleApp.dll

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

.NetCore 3.0(通过命令行)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 2018-03-30
    • 2021-02-04
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多