c# - MSBuild 不适用于构建服务器上的控制台应用程序
问题描述
我正在使用一组特定的参数运行 MSBuild,它没有找到入口点,但能够在 Visual Studio 中正常运行。
.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net472</TargetFramework>
<Platforms>AnyCPU;x86</Platforms>
<LangVersion>latest</LangVersion>
</PropertyGroup>
有一个程序主要:
public static void Main()
... MSBuild 按如下方式运行,以生成控制台应用程序:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe"
".\Project.csproj"
/p:OutputPath=C:\temp\outputpath
/property:Configuration=Release
/property:OutputType=exe
/p:PlatformTarget=x86
但是,在我们的构建服务器上,作为 git 运行程序,这会产生以下错误:
CSC:错误 CS5001:程序不包含适用于入口点的静态“Main”方法 [... 解决方案中控制台应用程序引用的另一个 .netstandard“类库”项目的路径,而不是控制台应用程序本身]
请注意,错误不是指项目的主要应用程序,而是引用的库项目之一。
更新/编辑:这个问题通过简单地添加Program.cs
一个空public static void Main() {}
到这个控制台应用程序的依赖类库的项目来解决。这看起来很荒谬,但这确实使问题消失了。问题是 - 为什么这是必要的?
解决方案
如果在生成可执行文件的代码中找不到具有正确签名的静态 Main 方法,则会发生此错误。如果入口点函数 Main 使用错误的大小写(例如小写 main)定义,也会发生这种情况。有关适用于 Main 方法的规则的信息,请参阅 Main () 和命令行参数。
您可能必须定义一个类,然后在其中插入一个 main 方法
推荐阅读
- reactjs - How to run two react native android applications on two different servers at same time?
- python - 无法在ubuntu中通过python设置环境变量
- mysql - 如何在列表中显示当前月份的项目,其中当前月份日期在新年滚动时的 A 和 B 之间
- java - illegal initializer for 'java.lang.Integer'
- flutter - Flutter - InheritedModel 仍会更新子项,即使它与某个方面不匹配
- android - Android 项目中的 Instagram 登录(也可以使用 Facebook 登录)集成
- django - 使用 RawSQL 在 Django 中获取 PostgreSQL 支持的时区列表
- angular - I am using Angular Universal for server side rendering, but i am not getting the images rendered from server side
- python - 在 IPython 中检测哪个 CMD/终端调用用于启动 IPython
- json - 在 jq 输出中将 12h 时间值格式化为 24h