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(「ビルドアクション」)。値= [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内のscript.jsです(プロジェクトディレクトリに対するファイルの完全パス:myfolder/script.js

0

私はあなたの.ps1スクリプトをテストしており、NuGetパッケージをインストールする際には埋め込みリソースとしてjsスクリプトファイルを追加しています。パッケージの.nuspecファイルを確認してください。.ps1の名前がinstall.ps1およびで、ツールフォルダに追加されていることを確認してください。

あなたのnugetパッケージの.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

My Scriptの名前はInstall.ps1です。本当の問題になる可能性があるのは、自分のファイルを定義していないということです。あなたがしたようにnuspecマニフェストは、マニフェスト内のすべてのファイルに名前を付けることは必須ですか?あまりにも多くの人がいる! – AmiNadimi

+0

もう1つの問題は、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ファイルを追加できます。を使用できます。 –

関連する問題