Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VisualStudio项目生成到dll而不是可执行文件中_C#_Visual Studio_Build_Console Application - Fatal编程技术网

C# VisualStudio项目生成到dll而不是可执行文件中

C# VisualStudio项目生成到dll而不是可执行文件中,c#,visual-studio,build,console-application,C#,Visual Studio,Build,Console Application,我认为这是一个非常愚蠢的问题,但当我构建解决方案控制台应用程序时,它会创建一个dll而不是一个可执行文件。我是否做错了什么,或者只是误解了它的工作原理?如果这是.Net Framework,那么项目输出类型很可能在项目属性页中设置为类库 要解决这个问题,您必须确保您有一个签名为staticvoidmain的方法,并将输出类型设置为consoleapplication 要更改输出类型,请执行以下操作: 在解决方案资源管理器中的项目名称上单击鼠标右键 选择属性 在应用程序选项卡上,将输出类型更改为控

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

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

要解决这个问题,您必须确保您有一个签名为staticvoidmain的方法,并将输出类型设置为consoleapplication

要更改输出类型,请执行以下操作:

在解决方案资源管理器中的项目名称上单击鼠标右键 选择属性 在应用程序选项卡上,将输出类型更改为控制台应用程序 将“启动对象”下拉列表更改为包含 主要方法。 保存属性并再次尝试生成/调试。
如果这是.Net Framework,则项目输出类型很可能在项目属性页中设置为类库

要解决这个问题,您必须确保您有一个签名为staticvoidmain的方法,并将输出类型设置为consoleapplication

要更改输出类型,请执行以下操作:

在解决方案资源管理器中的项目名称上单击鼠标右键 选择属性 在应用程序选项卡上,将输出类型更改为控制台应用程序 将“启动对象”下拉列表更改为包含 主要方法。 保存属性并再次尝试生成/调试。
不,那是合法的。至少对于.NET Core 2.x。对于.NETCore3.x,它确实构建了一个.EXE。您可以通过运行dotnetfoo.dll来运行它

所以现在,不要构建,而是使用发布。这将生成一个.EXE

我通常会将命令放在手边,以便快速生成它:

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

不,那是合法的。至少对于.NET Core 2.x。对于.NETCore3.x,它确实构建了一个.EXE。您可以通过运行dotnetfoo.dll来运行它

所以现在,不要构建,而是使用发布。这将生成一个.EXE

我通常会将命令放在手边,以便快速生成它:

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

在解决方案资源管理器中右键单击项目,然后在关联菜单底部选择“属性”。选择适当的输出类型,然后按屏幕上的标记进行选择

正如在这里的另一个答案中提到的:如果您的目标框架是.NET Core,请使用Visual Studio宽度设置目标运行时格式(例如win-x86)的“构建”菜单中的“发布”来生成适当的输出应用程序格式


查看参考资料:

在解决方案资源管理器中右键单击您的项目,然后在关联菜单底部选择属性。选择适当的输出类型,然后按屏幕上的标记进行选择

正如在这里的另一个答案中提到的:如果您的目标框架是.NET Core,请使用Visual Studio宽度设置目标运行时格式(例如win-x86)的“构建”菜单中的“发布”来生成适当的输出应用程序格式

查看参考资料:

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

选择部署模式:自包含

选择首选目标运行时

记下目标位置

点击发布

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

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

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

dotnet发布-c发行版-r win10-x64-自包含true

.NetCore 3.0通过命令行

dotnet发布-r win10-x64-c发布/p:PublishSingleFile=true

CSProj先生

dotnet发布-c发行版-r win10-x64-自包含true

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

选择部署模式:自包含

选择首选目标运行时

记下目标位置

点击发布

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

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

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

dotnet发布-c发行版-r win10-x64-自包含true

.NetCore 3.0通过命令行

dotnet发布-r win10-x64-c发布/p:PublishSingleFile=true

CSProj先生

dotnet发布-c发行版-r win10-x64-自包含true


这是一个.NET核心项目吗?我想是的,我是个新手。我有点犹豫是否将其标记为直接副本,但至少它是相关的。不要猜测,请在Visual Studio中查看项目属性页中的应用程序类型。请显示控制台应用程序项目属性,或cspoj文件中的属性组。它是.NET核心项目吗?我想它是我非常不熟悉VSBOJ的。我有点犹豫是否将其标记为直接副本,但至少它是相关的。
请显示控制台应用程序项目属性,或cspoj文件中的属性组。这假定OP的项目是框架而不是核心。您可能希望至少提到这是一个框架修复程序。在解决方案资源管理器中右键单击您的项目,而不是说ConsoleApp1,可能会更有帮助。这可能不是OP项目的名称。还有,截图上的打字错误。谢谢你的评论。添加了.NET核心注释并修复了您的项目这假设OP的项目是框架而不是核心。您可能希望至少提到这是一个框架修复程序。在解决方案资源管理器中右键单击您的项目,而不是说ConsoleApp1,可能会更有帮助。这可能不是OP项目的名称。还有,截图上的打字错误。谢谢你的评论。添加了.NET核心注释,并修复了您的项目执行此操作后的完全相同的结果:/@smeel-验证您的项目是框架还是核心。如果它是核心,那么这将无法解决您的问题。执行此操作后的结果完全相同:/@smeel-验证您的项目是框架还是核心。如果它是核心,那么这不会解决您的问题。我将如何使用该命令导出它?在哪里输入?@smeel Open命令提示符与.csproj文件位于同一目录中。然后运行这个。我将如何使用该命令导出它?在哪里输入?@smeel Open命令提示符与.csproj文件位于同一目录中。然后运行这个。