2017-05-17 10 views
1

새 프로젝트의 개발 환경을 설정하고 있습니다. 그것은 정적 파일에서 @angular 프로젝트를 제공하는 웹 API 프로젝트입니다. 이것을 용이하게하기 위해서, 포스트 빌드시에, 각도 cli의 빌드 함수를 실행 한 다음 파일을 wwwroot에 복사합니다. 그게 다 잘되고있어.

그러나 프로젝트가 디버그 모드인지 릴리스 모드인지에 따라 두 가지 npm 스크립트를 실행할 수 있기를 원합니다.

if "$(ConfigurationName)" == "Debug" 
(
    npm run build 
) 
else if "$(ConfigurationName)"=="Release" 
(
    npm run prod 
) 

하지만 ConfigurationName에 대해 제공되는 값이 없다처럼 보이는

The command "if "" == "Debug" 
(
    npm run build 
) 
else if ""=="Release" 
(
    npm run prod 
)" exited with code 255.  

받고 있어요 : 내 포스트 빌드 스크립트에서, 나는이 시도. 디버그 모드와 릴리스 모드를 모두 시도해 본 결과 같은 오류가 발생했습니다. VS 2017 또는 뭔가 ConfigurationName 변수가 변경 되었습니까?

편집 : 그러나 포스트 빌드 편집을 누른 다음 매크로를 누르면 ConfigurationName에 값이있는 here이 표시됩니다. 단지는 빌드 과정에서 조기에 값을 제공하기 때문에

답변

4
  1. $(Configuration) 가능성이 사건에서 '내 스크립트에 의해 볼 수없는 것.

  2. Pre & 빌드 이벤트 특성을 평가할 때 대부분의 특성이 정의되지 않았기 때문에 빌드 이벤트는 실제로 "SDK 기반"프로젝트 (수정하지 않음)에서 작동하지 않습니다. 자세한 내용은 https://github.com/dotnet/project-system/issues/1569을 참조하십시오.

것은 내가 프로젝트에서 다음을 수행하는 것이 좋습니다 : 1.0.* 경기 선행 지수에 파일을 게시 할 수 없습니다 이전에 존재하지 않았던 빌드하는 동안 발생하는 것을

<Project Sdk="..."> 
    <!-- other content --> 
    <Target Name="RunNpmBuild" BeforeTargets="BeforeBuild" Condition="'$(Configuration)' != 'Release'"> 
    <Exec Command="npm run build" /> 
    </Target> 
    <Target Name="RunNpmProd" BeforeTargets="BeforeBuild" Condition="'$(Configuration)' == 'Release'"> 
    <Exec Command="npm run prod" /> 
    </Target> 
</Project> 

주 - 해결 방법에 대한 https://github.com/aspnet/websdk/issues/114 참조하십시오.

+0

아하, 고마워! 나는 그 문제에 가서 빌드 이벤트 전에''를 가져 오기위한 권장 사항을 보았습니다. 조건 부분을 작동시킬 수 없었지만,'npm run build - $ (ConfigurationName)로 바꾸고 npm의 빌드와 prod 스크립트 build-Debug와 build-Release를 만들었습니다. 조언 마틴 주셔서 감사합니다! –

+0

관심이있는 경우 수행하려는 작업의 순수 MSBuild 버전이 추가되었습니다. (publish-advice는 여전히 모든 형태의 컨텐츠 생성에 적용됩니다). –