- ベストアンサー
powershellで関数名を変更するとエラー
- powershell ISEおよびVC#内で関数名を変更するとエラーが発生します。
- 再起動すると問題なくコンパイルされますが、検索してみると解決策は見つかっていません。
- 関数名を変更して実行する際は注意が必要です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
多分、F5実行の度にPowerShellが完全終了→再起動みたいなイメージをお持ちなんではないでしょうか スクリプト言語をエディタからの自動実行とかさせたらそんなイメージですよね 次の3行をスクリプトペインに貼っつけて、まず走らせて下さい $n = 0 $n++ Write-Host $n 1が表示されたと思います。 次に1行目の「$n = 0」をコメントアウトしてから2回、3回とF5を押してください 増えてってますよね? つまり、F5押したときには前の続きで走っているようなイメージなんじゃないでしょうか 「シェル」ですから、これはこれで普通な気もします。 関数名を変更したら・・・と仰られていましたが、例えばint bの値を書き換えただけでも関数名変更時と同様のエラーが出ると思いますよ。 他に方法あるかもしれませんが、自分はISE終了させる他に初期環境から始める方法を知りません。
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
「F5 を押す」たびに「スクリプトを実行する」んでしょ? だったら, 「エラーになる」のが当然であって, これで「なぜ?」と思う方がおかしい.
お礼
ご返答ありがとうございます。 すいません。 どうもよくわかっていません。 いろいろ考えてみましたが、下記コードでもダメでした… アプリケーションドメインのFriendlyNameのID?が変わっているからでしょうか? どこか違う場所があれば、添削ください… $appDomain=[AppDomain]::CreateDomain("test1") $source=@" public class sample{ public static int a() { int b=2; return b; } } "@ Add-Type -TypeDefinition $source $e= [sample]::a() $e [AppDomain]::Unload($appDomain)
- sholmes
- ベストアンサー率81% (89/109)
ISEで書き換えるたびにF5押しているイメージですよね? 多分、次のサイトが参考になります。 http://flamework.net/archives/8 ここの情報にあるとおり [AppDomain]::CurrentDomain.GetAssemblies() をコードの最後に入れとくと、F5結果表示する時の末尾に「False v2.0.50727 」みたいなのがどんどん増えていくと思います。
お礼
ご返答ありがとうございます。 リンク先を読ませて頂いたのですが、リンク先のサンプルが難しく四苦八苦してます。 (まだまだ理解が足らないのだと思います) (MSNのアプリケーションドメインの説明を読んだり、メモリリークのないサンプルと見比べているのですが…) もし、上のサンプルに何行か追加すれば解決であれば、お教え頂けないでしょうか? ちょっと今のレベルでは、解決できそうにないです… 本当に申し訳ないです。
- Tacosan
- ベストアンサー率23% (3656/15482)
まさか「クラス sample を 2回定義しようとしている」などという愚かなことはしていませんよね?
お礼
ご返答ありがとうございます。 NO.2さまの通りで、ISEで書き換えるたびにF5押しているイメージです。 ですので、F5を連続して押すというのが、sampleを2回定義しているに あたりますでしょうか?
お礼
ご返答ありがとうございます。 丁寧なご説明ありがとうございます。 おかげさまでようやく理解できてきました… で、つたないながらも一度終了させるために、アプリケーションドメインの 終了…と下記を組んでみましたが、$nは増えていくばかりで 終了していないようです… ご返答ありがとうございました。 $appDomain=[AppDomain]::CreateDomain("test1") $n++ Write-Host $n $appDomain [AppDomain]::Unload($appDomain) $appDomain