現在のところ、ウェブアプリケーションには、ナゲットパッケージからファイルを配信することはできません。私は、将来可能にすることについていくらかの議論と作業が行われていると思います。
私は私のプロジェクトでproject.jsonで、このように行われているビューと必要な静的なJSとCSSリソースを埋め込むことであることを取り扱いしています方法:
「buildOptions」:{ 「埋め込み」を:[ "ビュー/ "、 "JS/"、 "CSS/**"]} 、
私はcontroller to serve my static resourcesを作成しました:
public class cscsrController : Controller
{
private ContentResult GetContentResult(string resourceName, string contentType)
{
var assembly = typeof(cscsrController).GetTypeInfo().Assembly;
var resourceStream = assembly.GetManifestResourceStream(resourceName);
string payload;
using (var reader = new StreamReader(resourceStream, Encoding.UTF8))
{
payload = reader.ReadToEnd();
}
return new ContentResult
{
ContentType = contentType,
Content = payload,
StatusCode = 200
};
}
[HttpGet]
[AllowAnonymous]
public ContentResult bootstrapdatetimepickercss()
{
return GetContentResult(
"cloudscribe.Core.Web.css.bootstrap-datetimepicker.min.css",
"text/css");
}
[HttpGet]
[AllowAnonymous]
public ContentResult momentwithlocalesjs()
{
return GetContentResult(
"cloudscribe.Core.Web.js.moment-with-locales.min.js",
"text/javascript");
}
}
、私はコントローラのアクションにリンク私がjsやcssをロードする必要があるビューで。埋め込みビューは、私がRazorViewEngineOptionsの拡張メソッドを作成し動作させるために
:
public static RazorViewEngineOptions AddEmbeddedViewsForCloudscribeCore(this RazorViewEngineOptions options)
{
options.FileProviders.Add(new EmbeddedFileProvider(
typeof(SiteManager).GetTypeInfo().Assembly,
"cloudscribe.Core.Web"
));
return options;
}
と、この本のようなウェブアプリStartupにConfigureServicesから呼び出されている必要があります
services.AddMvc()
.AddRazorOptions(options =>
{
options.AddEmbeddedViewsForCloudscribeCore();
})
;
この手法なければなりませんエリアでも同じように動作します。 1つの素晴らしい点は、ユーザーがビューをダウンロードしてローカルにインストールできることで、埋め込みビューの使用が上書きされるため、一部またはすべてのビューを簡単にカスタマイズできることです。ビューをオーバーライドすることで、必要に応じてjsとcssを手動でインストールし、カスタマイズが必要な場合は、それらのローカルファイルにリンクするようにビューを変更することもできます。最終的な結果は私のナゲットが必要とするすべてのものを持っているため、スタートアップの設定だけで動作するようになっています。
ファイルを追加できないことは間違いありません。 DIコンテナライブラリの中には(PowerShellスクリプトを使用した場合など)StructMap MVCなどのものがあります。 –
実際にはパッケージにファイルを追加することはできますが、.NET用のアプリケーションにそれらを配信することはできません。core nugets afaik https://github.com/NuGet/Home/issues/2262 –
powershellは現在オープンソースクロスプラットフォームではありますが、少なくとも現時点ではナゲットとクロスプラットフォームの方法でそれを実際に使用できるかどうかはわかりません –