Visual Studio 2019 将 C# 程序导出为 DLL 而不是 EXE?

问题描述 投票:0回答:4

我很困惑,因为我在 Visual Studio 2019 中创建了一个新项目。我已经对不同的项目尝试了三次,每次它都导出为 DLL 而不是 EXE。以下是重现此问题的步骤:

  1. 新项目
  2. 控制台应用程序(.NET Core)
  3. 设置新项目的详细信息,然后点击“创建”按钮
  4. 将 Microsoft.Win32.Registry NuGet 包添加到项目
  5. 添加以下代码:
using Microsoft.Win32;
using System;

namespace Key_Statistics_Startup_Changer {
    class Program {
        static void Main(string[] args) {
            if (args[0] == "CREATE_STARTUP") {
                RegistryKey rkey = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
                rkey.SetValue("Key Statistics", @"C:\Program Files\Key Statistics\Key Statistics.exe");
            }
            else if (args[0] == "REMOVE_STARTUP") {
                RegistryKey rkey = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
                rkey.DeleteValue("Key Statistics");
            }
        }
    }
}
  1. 构建并运行项目

当我这样做时,当我通过 Visual Studio 输入参数时,程序会在启动时创建或删除所需的注册表(代码试图完成的任务)。但是,当构建此项目时,我的

Key Statistics Startup Changer\bin\Debug
文件夹为我提供了一个子目录
netcoreapp2.1
,其中包含以下文件:

关键统计 Startup Changer.deps.json
关键统计 Startup Changer.dll
关键统计 Startup Changer.pdb
关键统计启动 Changer.runtimeconfig.dev.json
关键统计启动 Changer.runtimeconfig.json

我确信我有正确的文件夹可以导出,并且每次我重新创建步骤(确保我不选择 C# DLL 项目)时,都会发生这种情况。

这里有什么交易?

c# build visual-studio-2019
4个回答
2
投票

当你选择

Console App (.NET Core)
而不是
Console App (.NET Framework)
时你就错了, 简而言之,从 .net core 获取 .exe 比 .net Framework 更难。

不过不用担心,您只需复制所有代码并将其粘贴到新的文件中即可

Console App (.NET Framework)
项目。


1
投票

当您设置应用程序文件夹时:添加/项目输出/... 在要选择的选项上,选择“发布项目”而不是“主要输出”。 这将打包 .exe 文件而不是 .dll,如果您确实需要 .dll 文件,请在输出组中选择“主输出”。


0
投票

即使“目标操作系统版本”选择了一个值,csproj 文件也使用

net8.0-windows
的目标框架(这也是输出构建文件夹)。

Screenshot for choosing os version

更改下拉列表中的“目标操作系统版本”,然后返回 7.0,现在可以读取 .csproj 行

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0-windows7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <UseWPF>True</UseWPF>
    <PlatformTarget>x64</PlatformTarget>
  </PropertyGroup>
...

构建应用程序现在输出到

\bin\Debug\net8.0-windows7.0
,并生成一个 .exe。


-1
投票

右键单击该项目并转到属性。选择“应用程序”选项卡,右侧有一个名为“输出类型”的选项。你可以选择任何你想要的;例如,如果您希望项目发出 DLL,只需选择 Class Library

Screenshot for choosing output type for a project

© www.soinside.com 2019 - 2024. All rights reserved.