私はASP.NET Core 1.1アプリケーションを持っていました。これは、project.jsonを使用してVisual Studio 2015からMsBuild csproj標準のVisual Studio 2017にアップグレードされました。このアプリはLinux上のドッカーコンテナにデプロイされており、official images from microsoftが使用されています。 BundlerMinifierが見つかりませんでした。ただし、Visual Studio 2017ではなく、Windows 10でdotnet publish
を使用していないドッカーのみ。BundlerMinifierCoreファイルはdotnetにコピーされません
バンドルが生成されていることがわかりました。しかし、ソリューションのwwwroot
フォルダには、公開出力フォルダ(--output
からdotnet publish
に渡されたもの)ではなく、私のVSソリューションがドッカーコンテナにある/app
があります。今度はdotnet publish --output /app/output
を実行します。バンドルされたファイルは、/app/output/wwwroot
の代わりに/app/src/{projectName}/wwwroot
になりました。私はこのようなbundleconfig.json
で相対パスを使用
:バンドルを作成するには
[
{
"minify": { "enabled": false },
"outputFileName": "wwwroot/site.min.css",
"inputFiles": [
"wwwroot/lib/my-input-file.css"
]
}
]
、私は私のcsproj
ファイル
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
<Exec Command="bower install" />
<Exec Command="dotnet bundle" />
</Target>
で次の公開スクリプトを持って、私はと非常に慣れていませんよMsBuild。しかし、いくつか・研究によると、以下の行が(wwwrootのような)出力ディレクトリにファイルをコピーするために責任を負うようだ
<ItemGroup>
<None Update="wwwroot\**\*;Views\**\*.cshtml;Areas\**\*.cshtml">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
</ItemGroup>
wwwrootには、すでにここに含まれているとビューの作品のような他のファイルのコピーが、私はそこにあると思ったので、実行ordnerについての問題。 MsBuildのようなものは、MsBuildがそれらを公開する前にファイルをコピーします。しかし、これはPrepareForPublish
ターゲットの前に行われているので、ロジックからは不可能と思われます。これはMicrosoft docsに従って正しい方法です。
ありがとうございました。コピーの問題が修正されました。しかし、 'PrepareForPublish'の前に' dotnet bundle 'の実行に何らかのバグがあるように見えました。私の現在の回避策は 'dotnet publish 'の前に' dotnet bundle'を手動で呼び出すことです。これは私たちの修正と一緒に働く。 – Lion
https://github.com/dotnet/sdk/issues/1044 –