none
exeファイルを実行したら「System.ArgumentException」が発生する。 RRS feed

  • 質問

  • 以下の環境でアプリケーションをビルドしました。

    ・Microsoft Visual Studio 2013

    ・Windows 7 Professional SP 1 64bit

    .Net framework 4.6.1と.Net framework 4.6.2 での動作をexeファイルで確認しようとしましたが

    exeファイルを4.6.2を対処にビルドした場合だけ失敗となり

    ハンドルされていない例外: System.ArgumentException: パスの形式が無効です。

    以上のような例外が発生しました。.Net frameworkの4.6.2はインストールされております。

    ケースの違いは対象フレームワークを変えただけとなります。

    ちなみに似たような処理をVisual StudioでNunitテストでは両方問題なく動作しました。

    現象について色々調べてみましたが知識がたりなくてよくわからなかったです。

    どなたか、原因もしくは回避方法をご存知でしたら、ご教授頂けたらと思います。

    よろしくお願いします。


    2017年4月5日 6:41

回答

  • スタックトレースで明らかなように、Jp.Co.(以下略)名前空間を使っているライブラリの初期化処理で転けていますね。

    NewNormalizePathLimitedChecksで検索を掛けると、以下のページが引っかかりました。

    https://msdn.microsoft.com/ja-jp/library/system.appcontext(v=vs.110).aspx

    file://スキームをPath.GetDirectoryNameに渡したときに、.NET 4.6でエラーになるように変更があったということらしいです。(今回の事象は、あるいはfile://ではない何か他の理由かも知れませんが)。

    基本的にはライブラリの制作元に修正依頼を出すべき案件だと思われますが、さしあたっては、上記ページに書かれてある、app.configへの記述による回避策を試されてみてはいかがでしょうか。


    2017年4月5日 7:03

すべての返信

  • スタックトレースで明らかなように、Jp.Co.(以下略)名前空間を使っているライブラリの初期化処理で転けていますね。

    NewNormalizePathLimitedChecksで検索を掛けると、以下のページが引っかかりました。

    https://msdn.microsoft.com/ja-jp/library/system.appcontext(v=vs.110).aspx

    file://スキームをPath.GetDirectoryNameに渡したときに、.NET 4.6でエラーになるように変更があったということらしいです。(今回の事象は、あるいはfile://ではない何か他の理由かも知れませんが)。

    基本的にはライブラリの制作元に修正依頼を出すべき案件だと思われますが、さしあたっては、上記ページに書かれてある、app.configへの記述による回避策を試されてみてはいかがでしょうか。


    2017年4月5日 7:03
  • junyoung0322 さん、こんにちは
    フォーラム オペレーターの立花楓です。

    Hongliang の情報が問題解決の参考になると思いましたので、私のほうで回答マークを付けさせていただきました。
    問題が未解決の場合や不明点がある場合は、回答マークを外していただくことも可能です。
     
    よろしくお願いします。


    MSDN/TechNet Community Support 立花楓


    2017年4月12日 5:53
    モデレータ