我很困惑,因为我在Visual Studio 2019中创建了一个新项目。我已经用不同的项目尝试了这三遍,并且每次将其导出为DLL而不是EXE。以下是重现此问题的步骤:
- 新项目
- 控制台应用程序(.NET Core)
- 设置新项目的详细信息,然后点击“创建”按钮
- 将Microsoft.Win32.Registry NuGet软件包添加到项目中
- 添加以下代码:
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");
}
}
}
}
- 构建并运行项目
当我这样做时,当我通过Visual Studio输入参数时,程序确实会在启动时创建或删除所需的注册表(代码试图完成的工作)。但是,在构建该项目时,我的Key Statistics Startup Changer\bin\Debug
文件夹为我提供了一个包含以下文件的子目录netcoreapp2.1
:
关键统计信息启动Changer.deps.json
关键统计信息启动程序Changer.dll
关键统计启动Changer.pdb
关键统计信息启动Changer.runtimeconfig.dev.json
关键统计启动Changer.runtimeconfig.json
我很肯定我有正确的文件夹可以在其中导出文件,并且每次我重新创建步骤(确保我没有选择C#DLL项目)时,都会发生这种情况。
这是怎么回事?
答案 0 :(得分:0)
选择Console App (.NET Core)
而不是Console App (.NET Framework)
时出错,
简而言之,从.net核心获取.exe比.net框架更难。
不过不用担心,您只需复制所有代码并将其粘贴到新代码中
Console App (.NET Framework)
项目。
答案 1 :(得分:0)
右键单击该项目,然后转到属性。选择 Application 标签,然后在右侧有一个名为 Output Type 的选项。您可以选择任何想要的东西。例如,如果您希望您的项目发出DLL,只需选择 Class Library 。