【问题标题】:MSBuild error - Program does not contain a static 'Main' method suitable for an entry pointMSBuild 错误 - 程序不包含适合入口点的静态“Main”方法
【发布时间】:2020-02-20 18:24:59
【问题描述】:

我有一个包含一些类库项目和一个 Windows 服务项目的 Visual Studio 解决方案。

我正在尝试使用以下 msbuild 命令构建它:

MSBuild SolutionName.sln /t:rebuild /p:Configuration=Release;OutputType=Winexe /clp:ErrorsOnly

但是,我收到以下错误:

CSC:错误 CS5001:程序不包含静态“主要”方法 适合作为入口点[C:..\BusinessObjects.csproj]

不知何故,它试图在类库项目中找到一个入口点,而不是使用 Windows 服务项目。

我相信如果我尝试构建 WindowsService.csproj 而不是 .sln 文件,那么它可能会解决问题。但是,WindowsService.CsProj 不包含所有其他 dll 引用,因此我必须构建 .sln 文件。

还有其他方法可以解决这个错误吗?

【问题讨论】:

    标签: visual-studio msbuild


    【解决方案1】:

    我相信如果我尝试构建 WindowsService.csproj 而不是 .sln 文件 那么它可能会解决问题。但是,WindowsService.CsProj 没有 包含所有其他 dll 引用,所以我必须构建 .sln 文件。

    还有其他方法可以解决这个错误吗?

    由于您只是使用 msbuild 命令行构建了整个解决方案,因此 意味着您命令行中的参数适用于解决方案中的所有项目。

    如您的描述,您的解决方案中有一些类库项目不包含静态 Main 方法,因此不能将其指定为 Windows 应用程序 .

    VS 中的项目具有三种输出类型:Console ApplicationWindows Application 包含静态 Main 函数,而 Class Library Application 不包含它。

    结论

    如果您使用命令行构建一个完整的解决方案,您应该确保命令行中的所有参数都适用于所有项目。

    当您构建单个项目Windows Service project 时,只需确保当前项目具有静态main 函数并且它确实具有。

    解决方案

    1)由于您的解决方案只包含一个winexe项目和其他类库项目,请在命令行中删除OutputType=Winexe

    MSBuild SolutionName.sln /t:rebuild /p:Configuration=Release /clp:ErrorsOnly
    

    希望对你有帮助。

    【讨论】:

    • 有道理。我编译了 .sln 文件(不带 OutputType),然后编译了 csproj 文件(带 OutputType)来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多