Roslynを使用して、実行時生成コードでソリューションをコンパイルしています。ソリューションは、Visual Studioから開いたとき、それはロズリンから失敗した完全コンパイル中:Roslynでコンパイルするときに「メイン」メソッドが見つかりません
エラーCS5001:プログラムは、エントリポイントのため 適した静的な「メイン」メソッドが含まれていません
ソリューション私はこれは
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
:コンパイルしようとしていることはもちろん、プロジェクトのルートにあるプログラムのクラスの主なメソッドを持つ単一のASP.NETコア2(.NET Frameworkの4.6.2)プロジェクトを持っていますコード私はcomに走っています.NET 4.7 WPFアプリケーションから、そのソリューションを重ね:
- 警告CS8021:
private static async Task<bool> CompileSolution(string solutionPath, string outputDir) { var workspace = MSBuildWorkspace.Create(); var solution = await workspace.OpenSolutionAsync(solutionPath); var projectCompilation = await solution.Projects.Single().GetCompilationAsync(); if (string.IsNullOrEmpty(projectCompilation?.AssemblyName)) { return false; } using (var stream = File.Create(Path.Combine(outputDir, $"{projectCompilation.AssemblyName}.dll"))) { var result = projectCompilation.Emit(stream); return result.Success; } }
projectCompilation.Emit
がで失敗RuntimeMetadataVersionに値が見つかりませんでした。 System.Objectを含むアセンブリが見つかりませんでした。また、 の値で、オプションによってRuntimeMetadataVersionが指定されていませんでした。- エラーCS5001:プログラムは
エントリポイントのために適した 静的な「メイン」メソッドが含まれていませんが、使用されているNuGetパッケージが正しくまだ.NETのコア2のプロジェクトをサポートしていないということだろうか?保留中の(プレビューでなくても)パッケージの更新はありません。
ASP.NETコアプロジェクトを.NET 4.7にアップデートしました。バージョンは両方のソリューションで同じですが、生成されたエラーは変更されませんでした。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net47</TargetFramework>
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
<TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
<ApplicationIcon />
<OutputType>Exe</OutputType>
<StartupObject>Practia.CrudGenerator.Web.Program</StartupObject>
</PropertyGroup>
<ItemGroup>..NUGET PACKAGES...</ItemGroup>
</Project>
'Main'メソッドを含むクラス定義を追加してください。 –
@ErikPhilipsが更新されました。これは標準的なVS生成プロジェクトです –
[これを見ましたか?](https://stackoverflow.com/questions/577298/program-does-not-contain-a-static-main-method-suitable-for-エントリポイント) –