多分あなたは何か間違ったことをしている.したがって、これを機能させるための手順は次のとおりです。
- 新しいプロジェクトを作成します:ASP.NET Core Web アプリケーション (.NET Core);
- Web API テンプレートを選択します。
- プロジェクトを実行し、「api/values」にアクセスして、機能していることを確認します。
- ClassLibrary:クラス ライブラリ (.NET Core) という名前のソリューションに新しいプロジェクトを追加します。
- Class1.cs を削除し、TestController.cs クラスを作成します。 <リ>
ClassLibrary プロジェクトの project.json に MVC 依存関係を追加します。
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.AspNetCore.Mvc": "1.0.0"
},
<リ> TestController.cs を次のように更新します。
[Route("api/[controller]")]
public class TestController : Controller{
[HttpGet]
public IEnumerable<string> Get() {
return new string[] { "test1", "test2" };
}
}
<リ> WebAPI プロジェクトに ClassLibrary への参照を追加します。[参照] -> [参照の追加...] を右クリックするか、project.json を次のように更新します。
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"ClassLibrary": "1.0.0-*"
},
<リ>
Startup.cs ConfigureServices
を更新します メソッド:
public void ConfigureServices(IServiceCollection services) {
services.AddMvc().AddApplicationPart(Assembly.Load(new AssemblyName("ClassLibrary")));
}
メイン Web アプリの Startup.cs で特別なことを行う必要はありません。クラス ライブラリを参照するだけで済みます。
1 つの秘訣は、コントローラーを検出するには、クラス ライブラリが project.json ファイルの依存関係セクションで MVC を直接参照する必要があることです。
"Microsoft.AspNetCore.Mvc": "1.0.*"
更新:MVC アプリの場合、スタートアップに特別なものは何も必要ありませんでしたが、API アプリの 1 つでは、おそらく属性ルーティングを使用するために必要でした.
services.AddMvc()
.AddApplicationPart(Assembly.Load(new AssemblyName("CSharp.WebLib")))
;
ここで、CSharp.WebLib はクラス ライブラリの名前です