2017-03-18 4 views
1

project.json을 사용하여 Visual Studio 2015에서 MsBuild csproj 표준을 사용하여 Visual Studio 2017로 업그레이드 한 ASP.NET Core 1.1 응용 프로그램이 있습니다. 이 응용 프로그램은 리눅스의 도커 컨테이너에 배포되며 여기서 official images from microsoft이 사용됩니다. BundlerMinifier이 누락되었습니다. 그러나 Visual Studio 2017에서는 표시기가 아니라 Windows에서는 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에 따라 올바른 방법입니다.

답변

3

wwwroot에 파일을 포함시키지 않았기 때문입니다.

<ItemGroup> 
    <None Update="wwwroot\**\*;Views\**\*.cshtml;Areas\**\*.cshtml"> 
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
    </None> 
</ItemGroup> 

wwwroot\**\* 만 wwwroot에의 하위 폴더에있는 파일을 복사합니다 (적어도이 이전 project.json 구조의 경우 여전히)하지만, CSS 파일은 wwwroot/site.min.css입니다. 따라서 그들을 wwwroot/css/site.min.css으로 이동하십시오. 또는 쉽게 : 그냥 전체 wwwroot 폴더를 통해 사본을 게시 (및 bower_modules 또는 npm_modules에 같은 wwwroot에 외부에서 libs와 파일을 보관) :

이 또한 내가 <None>의 확신하지 것은 대한 올바른 태그입니다. 내 프로젝트의 csproj에서 유일한 <None Include="App.config" />이 내가 이상 복사 파일은 뷰와 지역의 모든 관련이없는 파일이 안 따라가 너무 전체 폴더를 복사하는 것이 더 쉽습니다

<ItemGroup> 
    <None Include="App.config" /> 
    <Content Update="wwwroot;Views;Areas;appsettings.json;web.config"> 
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
    </Content> 
</ItemGroup> 

아래처럼 <Content>에 있습니다.

+1

감사합니다. 문제가 해결되었습니다. 그러나'PrepareForPublish' 이전에'dotnet bundle '을 실행했을 때 버그가있는 것으로 나타났습니다. 현재 해결 방법은'dotnet publish '전에 수동으로'dotnet bundle'을 호출하는 것입니다. 이것은 우리의 수정과 함께 작동합니다. – Lion

+0

https://github.com/dotnet/sdk/issues/1044 –