
お世話になります。 どうぞよろしくお願い致します。
powershell ISEで下記コードの関数名を変更すると
"Add-Type : 型を追加できません。型名 'sample' は既に存在しています。…"
という警告が発生します。 ただし、ISEを再起動すると問題なくコンパイルされます。
なぜでしょうか? どうぞよろしくお願い致します。
PS1 VC#内でスクリプトとして利用すると同じ問題が発生します。 同じく再起動すると解決します…
PS2 検索してみると同じように悩みを持たれている方がいらっしゃるようですが
解決していないようです。
ttp://www.vistax64.com/powershell/224562-v2-ctp3-there-way-undo-action-add-type.html
ttp://mtgpowershell.blogspot.com/2010_06_01_archive.html
下記コードで、
a() → aa()
等に関数名を変更してみてください。
$source=@"
public class sample{
public static int a()
{
int b=2;
return b;
}
}
"@
Add-Type -TypeDefinition $source
$e= [sample]::a()
$e
No.4ベストアンサー
- 回答日時:
多分、F5実行の度にPowerShellが完全終了→再起動みたいなイメージをお持ちなんではないでしょうか
スクリプト言語をエディタからの自動実行とかさせたらそんなイメージですよね
次の3行をスクリプトペインに貼っつけて、まず走らせて下さい
$n = 0
$n++
Write-Host $n
1が表示されたと思います。
次に1行目の「$n = 0」をコメントアウトしてから2回、3回とF5を押してください
増えてってますよね?
つまり、F5押したときには前の続きで走っているようなイメージなんじゃないでしょうか
「シェル」ですから、これはこれで普通な気もします。
関数名を変更したら・・・と仰られていましたが、例えばint bの値を書き換えただけでも関数名変更時と同様のエラーが出ると思いますよ。
他に方法あるかもしれませんが、自分はISE終了させる他に初期環境から始める方法を知りません。
ご返答ありがとうございます。
丁寧なご説明ありがとうございます。
おかげさまでようやく理解できてきました…
で、つたないながらも一度終了させるために、アプリケーションドメインの
終了…と下記を組んでみましたが、$nは増えていくばかりで
終了していないようです…
ご返答ありがとうございました。
$appDomain=[AppDomain]::CreateDomain("test1")
$n++
Write-Host $n
$appDomain
[AppDomain]::Unload($appDomain)
$appDomain
No.3
- 回答日時:
「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)
No.2
- 回答日時:
ISEで書き換えるたびにF5押しているイメージですよね?
多分、次のサイトが参考になります。
http://flamework.net/archives/8
ここの情報にあるとおり
[AppDomain]::CurrentDomain.GetAssemblies()
をコードの最後に入れとくと、F5結果表示する時の末尾に「False v2.0.50727 」みたいなのがどんどん増えていくと思います。
ご返答ありがとうございます。
リンク先を読ませて頂いたのですが、リンク先のサンプルが難しく四苦八苦してます。
(まだまだ理解が足らないのだと思います)
(MSNのアプリケーションドメインの説明を読んだり、メモリリークのないサンプルと見比べているのですが…)
もし、上のサンプルに何行か追加すれば解決であれば、お教え頂けないでしょうか?
ちょっと今のレベルでは、解決できそうにないです…
本当に申し訳ないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cygwinでcshが認識されず困って...
-
powershellで関数名を変更する...
-
Cからシェルを起動し返り値をハ...
-
【Excel2016】結合されたセルを...
-
「デバイスは PRN を初期化でき...
-
モジュールとクラスの違いって...
-
クリアーとデリート
-
例外処理のフローチャートの記...
-
Perlのモジュールについて
-
Win32でInputBoxを実装するには?
-
Excel VBAでリンク切れをチェッ...
-
acwzlibとは?
-
VBAでoutlook365が起動しません。
-
グラフのX,Y座標を取得したい
-
bad interpreter:エラーについて
-
fetchrow_arrayとfetchrow_hash...
-
Perl モジュールのアンインスト...
-
Excel VBA 標準モジュール内で...
-
ランダムな単語を得るAPIってあ...
-
Excel VBAで、ユーザーフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
powershellで関数名を変更する...
-
Cからシェルを起動し返り値をハ...
-
ADサーバにおけるログインID,PC...
-
VBSを利用して、IEのタブを自動...
-
Perlのライセンス
-
[ASP]条件によってインクルード...
-
UWSCのスクリプトにラグが発生...
-
PerlでUNIXのコマンドとパスワ...
-
cygwinでcshが認識されず困って...
-
VBScriptでCurrentDirectoryを...
-
VBScriptの文字化けについてご質問
-
"JScript"が見つかりません!
-
perlでコマンドライン文字列受...
-
awkの処理速度を改善したい
-
Postfixでメールを受信したらPe...
-
vbs: オブジェクトがコレクショ...
-
CシェルプログラミングをCygwinで?
-
perlスクリプトのブラウザURLか...
-
ラズパイ CSV 定量削除
-
Perlスクリプトで文字化けして...
おすすめ情報