0

Nuget 패키지를 만들고 있는데 프로젝트에 설치시 js 스크립트를 추가하고 싶습니다. 파일의 .js 파일의 빌드 조치가 포함 리소스로 설정되어 있어야합니다. 나는 아래의 내용으로 패키지에 Install.ps1 스크립트를 추가하는 시도빌드 유형이 임베디드 리소스로 설정된 Nuget 파일

:

param($installPath, $toolsPath, $package, $project) 

$item = $project.projectItems.Item("my_script.js") 
$item.Properties.Item("BuildAction").Value = [int]3 

하지만 오류 반환 :

당신은 null 값 식에 대해 메서드를 호출 할 수 없습니다. + $ item.Properties.Item ("BuildAction"). 값 = [INT] 3

내가 Install.ps1 스크립트 솔루션 패키지 파일을 추가하기 전에 실행되기 때문에 오류가 생각 그러므로 지금 우리가 할 수있는 어떤 my_script.js 없다 빌드 동작을 변경하지 마십시오 ...

그래서, 어떻게할까요?

프로젝트에 파일을 배포 한 후에 스크립트를 실행할 수있는 방법은 무엇입니까 ?? 문제가 될 수

업데이트

한가지 더 my_script.jsContent 폴더의 루트에되지 않는 것입니다. 전화 할 때 경로를 지정해야합니까?

$project.projectItems.Item("myfolder/my_script.js")?

업데이트 2

아니! 위와 같은 폴더를 지정해도 문제가 발생합니다.

+1

install.ps1 스크립트가 마지막으로 실행됩니다. 파일이 프로젝트에 추가되기 전에 실행되지 않습니다. PowerShell 스크립트가 패키지 관리자 콘솔에서 작동하는지 확인합니다. 또한 my_script.js 파일이 프로젝트의 루트에 추가됩니까? –

+0

예! 그 예외를 던지더라도 파일을 추가합니다 ... – AmiNadimi

답변

0

문제는 당신이 프로젝트의 루트 디렉토리에없는 파일에 액세스 할 때, 아래처럼 할 필요가 있다고했다 : (질문에 사용되는 즉 코드)

param($installPath, $toolsPath, $package, $project) 

$item = $project.ProjectItems.Item("myfolder") 
$item2 = $item.ProjectItems.Item("script.js") 
$item2.Properties.Item("BuildAction").Value = [int]3 

파일은 myfolder (프로젝트 디렉토리를 기준으로 한 파일의 전체 경로 : myfolder/script.js) 내에 script.js입니다.

0

.ps1 스크립트를 테스트했으며 NuGet 패키지를 설치할 때 js 스크립트 파일을 포함 리소스로 추가합니다. 패키지의 .nuspec 파일을 확인하십시오. .ps1의 이름이 install30.ps1이고 이 도구 폴더에 추가되었는지 확인하십시오.

너겟 패키지의 .nuspec 파일에있는 노드는 내 측면에서 성공적으로 테스트 한 아래 쇼와 같아야합니다.

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>BuildActionTest</id> 
    <version>1.0.0</version> 
    <authors>AuthorName</authors> 
    <owners>OwnerName</owners> 
    <description>Test Buid Action</description> 
    <releaseNotes>Test Buid Action</releaseNotes> 
    <copyright>Copyright 2017</copyright> 
    <tags>Build Action</tags> 
    </metadata> 
    <files> 
    <file src="JavaScript1.js" target="Content"/> 
    <file src="install.ps1" target="tools"/> 
    </files> 
</package> 
+0

내 스크립트 이름은 Install.ps1입니다. 실제 문제가 될 수있는 한 가지는 파일을 정의하지 않았기 때문입니다.당신이했던 것처럼 nuspec 매니 페스트, 내 매니페스트에있는 모든 파일의 이름을 지정해야합니까? 너무 많습니다! – AmiNadimi

+0

또 다른 문제는 my_script.js가 Content 폴더의 루트에 없다는 것입니다. 전화 할 때 경로를 지정해야합니까 : '$ project.projectItems.Item ("myfolder/my_script.js")'? – AmiNadimi

+0

@Amin Nadimi ps1 파일에 파일 경로를 추가 할 필요가 없습니다. 따라서 "$ project.projectItems.Item ("myfolder/my_script.js ")"을 사용하여 my_script.js 파일을 얻을 수 있습니다. 모든 파일을 매니페스트 파일에 "*"와 함께 추가 할 수 있습니다. 예를 들어 모든 js 파일을 추가 할 수 있습니다. 를 사용할 수 있습니다. –