大規模ソリューション内で他のプロジェクト(csproj)を参照するASP.NETコアWeb APIを使用しています。 ASP.NETコアのWeb APIは、「私のマシン上で」コマンドプロンプトでのMSBuildを使用して、Visual Studioの2015年に構築し、:-)ASP.NET Core Web API:プログラムにエントリポイントに適した静的な「Main」メソッドが含まれていません
msbuild SomeWebAPI.xproj
Compilation succeeded.
33 Warning(s)
0 Error(s)
Time elapsed 00:00:01.7740626
Done Building Project
.
.
Build succeeded.
問題は、それが私たちのビルドサーバー上に構築していないです。 「私のマシン上の」
msbuild SomeWebAPI.xproj
error CS5001: Program does not contain a static 'Main' method suitable for
an entry point [D:\TeamCity\buildAgent\work\8120f5584932b96b\S
SomeWebAPI\SomeWebAPI.xproj]
Compilation failed.
0 Warning(s)
1 Error(s)
Time elapsed 00:00:03.3428080
Done Building Project
"D:\TeamCity\buildAgent\work\8120f5584932b96b\SomeWebAPI\SomeWebAPI.xproj"
(default targets) -- FAILED.
Build FAILED.
が、それは静的な「メイン」メソッドとそれが動作するという事実を追加しても意味がありませんWEBAPIビーイングではなく、私たちの上:同じMSBuildのコマンド、同じMSBuildのバージョン、異なる結果ビルドサーバーは私を困惑させる。助言がありますか? あなたはより多くの情報、コード、project.jsonまたは助けることができる何かを必要とする場合、あなたが:-)答えに私をリードし、私に知らせてください
更新:
@Tsengのコメントに基づいて、私は、起動時にmainメソッドを追加しました:
// Entry point for the application.
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseKestrel()
.UseStartup<Startup>()
.Build();
host.Run();
}
をしかし、私は自分のマシン上でプロジェクトをビルドすることはできません。
C:\test\path\SomeWebAPI\Program.cs(8,28): error CS0017: Program has more
than one entry point defined. Compile with /main to specify the type that
contains the entry point. [C:\test\path\SomeWebAPI\SomeWebAPI.xproj]
これは、上記のメインメソッドのほぼ正確なコピーでProgram.csを指摘しました。どうやら、2ヶ月前に私が使ったプロジェクトテンプレートは、メインクラスのメソッドをProgramクラスに入れました。明らかに、@ Tsengが正しいと私は間違っていた。残念ながら、それは私を元の質問に戻しました。なぜプロジェクトは私のマシン上に構築されますが、私たちのビルドサーバ上には構築されませんか? TeamCityのソース管理から何らかの理由でProgram.csファイルがチェックアウトされていないことを考えると、「Mainメソッド」が欠落しているという明白な答えです...
エラーメッセージを読んでください。 ASP.NET Core Webはアプリケーションであり、すべてのアプリケーションにエントリポイントが必要です。 ASP.NET Core MusicStoreの例を見てください。https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore/Program.cs#L10 – Tseng
ウェブAPIのエントリポイントはStartupクラスです – hsop
いいえ、 そうではありません。サンプルコードを見てください。メインメソッドのコードがスタートアップクラスを呼び出しています。https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore/Program.cs#L20を参照してください。あなたはこれをDNXと混同しています。 DNXはエントリポイントであり、フレームワークのロードを提供したため、初期DNXバージョンにはエントリポイントがありませんでした。 dotnet-cliは異なります。必要なものがすべてメインメソッドにロードされます。そのため、MainメソッドはASP.NETコアアプリケーションの**必須**です。 – Tseng