0

ASP.NET MVC 프로젝트에 포함 된 꽤 큰 JavaScript 프로젝트가 있습니다. JS 코드를 여러 (12-ish) 파일로 분리하여 코드를보다 쉽게 ​​처리 할 수 ​​있도록했습니다. 문제는 IntelliSense를 잃어버린 것입니다. 또한 페이지의 여러 파일을 연결해야합니다. 아이디어가 나왔습니다. PS 스크립트를 만들어 파일을 하나의 파일로 연결해 봅시다. 그것은 잘 작동하고, 필자는 그 파일에 대한 참조 만 제공하므로 IntelliSense가 있고 또한 그 파일을 페이지에 링크하기 만하면됩니다. 그러나 모든 빌드를 수동으로 실행해야합니다. 따라서 다음 아이디어는 스크립트를 실행하기 위해 미리 빌드 이벤트를 설정하는 것입니다. 그리고 여기에 문제가 생기면 스크립트가 성공적으로 실행되지 않습니다. 이 후사전 빌드 이벤트로 PowerShell 스크립트를 실행하지 못했습니다.

3> Get-Content : An object at the specified path myprefix-* does not exist, or has been 
3> filtered by the -Include or -Exclude parameter. 
3> At ...\Scripts\my-scripts\concat.ps1:4 char:4 
3> + cat <<<< myprefix-* > concatenated.js 
3>  + CategoryInfo : ObjectNotFound: (System.String[]:String[]) [Get- 
3>  Content], Exception 
3>  + FullyQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetCo 
3>  ntentCommand 

: 여기

if(Test-Path myprefix-concatenated.js){ 
Remove-Item myprefix-concatenated.js 
} 
cat myprefix-*.js > concatenated.js 
Rename-Item -path concatenated.js -newname myprefix-concatenated.js 

이 빌드 전 이벤트 :

powershell.exe -file "$(ProjectDir)\Scripts\my-scripts\concat.ps1" 

그리고 여기 빌드의 출력 여기

는 스크립트입니다 빌드는 성공하지만 연결은 발생하지 않습니다. 수동으로 스크립트를 실행하면 작동합니다. 이 문제의 원인과 해결 방법을 알고 있습니까? 미리 감사드립니다!

+0

이 보이는 myprefix- * 유형 파일을 찾을 수 없습니다. 빌드 전 이벤트에서 실행 중일 때 파일에 액세스 할 수 있는지 확인하십시오. – Mitul

답변

1

예상대로 현재 디렉토리가 설정되지 않았다고 가정합니다. 당신은 상대 경로를 사용하고 있으며 그것은 아마도 좋은 생각이 아닙니다. 예를 들어 경로에 매개 변수로 스크립트를 전달할 수 있습니다. 당신이 PowerShell을 v3에서 경우

powershell.exe -file "$(ProjectDir)\Scripts\my-scripts\concat.ps1" "$(ProjectDir)" 

-- concat.ps1 -- 
param($projectDir) 

if (Test-Path $projectDir\Scripts\my-scripts\myprefix-concatenated.js) { 
    Remove-Item $projectDir\Scripts\my-scripts\myprefix-concatenated.js 
} 
cat $projectDir\Scripts\my-scripts\myprefix-*.js > $projectDir\Scripts\my-scripts\concatenated.js 
Rename-Item $projectDir\Scripts\my-scripts\concatenated.js -newname $projectDir\Scripts\my-scripts\myprefix-concatenated.js 

, 당신은 당신의 concat.ps1 스크립트는 $의 PSScriptRoot 자동 변수 예를 들어와있는 위치를 기준으로 파일을 참조 할 수 있습니다 : 당신 스크립트에 문제가있는 것처럼

if (Test-Path $PSScriptRoot\myprefix-concatenated.js) { 
    Remove-Item $PSScriptRoot\myprefix-concatenated.js 
} 
cat $PSScriptRoot\myprefix-*.js > $PSScriptRoot\concatenated.js 
Rename-Item $PSScriptRoot\concatenated.js -newname $PSScriptRoot\myprefix-concatenated.js 
+0

완벽한, 감사합니다! – Robert

관련 문제