質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

21892閲覧

.NETでEXE実行時に「'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1」「依存関係の 1 つが読み込めませんでした。」

Arsnova

総合スコア8

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1グッド

2クリップ

投稿2021/09/20 02:29

編集2021/09/20 08:07

解決したいエラー

System.IO.FileLoadException: ファイルまたはアセンブリ 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、
またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)

開発環境

  • Visual Studio 2017
  • Visual Basic
  • .NET Framework 4.7

発生条件

  • ビルドで出力されたexeを開発環境で実行する時には発生しません。
  • exeを同じフォルダ内にコピーしてそれを実行したときに発生します。(とても不思議です)
  • またビルドされたexeが格納されたフォルダ一式を他のPCにコピーして実行したときに発生します。

発生タイミング

  • System.Text.Jsonを使用しているのですが、下記最終行の「JsonSerializer.Serialize」を呼び出すタイミングで発生します。

VB

1 order = New JsonParamNewOrder 2 order.clientOid = Strings.Left(Guid.NewGuid.ToString, 8) 3 order.symbol = "BTC-USDT" 4 order.side = eSide.buy.ToString 5 order.funds = "0.009" 6 body = JsonSerializer.Serialize(order) 7

参照しているUnsafeのバージョン

  • 5.0.0.0

イメージ説明

やってみたこと

  • インターネットの記事を見てapp.configを下記のように書き換えてみましたが改善しませんでした。

XML

1 <dependentAssembly> 2 <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 3 <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> 4 </dependentAssembly> 5

↓↓↓

XML

1 <dependentAssembly> 2 <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 3 <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="5.0.0.0" /> 4 </dependentAssembly> 5
  • VisualStudioで新規プロジェクトを作成し、Nugetで4.0.4.1のバージョンをインストールし、ダウンロードされたdllを動作させたいプロジェクトの実行フォルダに上書きしましたが改善しませんでした。

バージョン依存関係の妥当性の確認

  • Nugetパッケージマネージャで確認すると以下の通りSystem.Text.Jsonは.NET Framework 4.6.1に依存とあります。ですので、当該環境で問題ない認識です。また、UnsafeもJsonを使ううえでは5.0.0以上が求められているので問題ない認識です。(Nugetパッケージマネージャを利用しているので自動的に適したものがインストールされていると思っています。

イメージ説明

すみませんがご存じの方、ご回答いただければ幸いです。
よろしくお願いいたします。

ActiveTK👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/20 03:16 編集

ちょっと気になっただけで、検証はしてないのでハズレかもしれませんが・・・ > System.Text.Jsonを使用しているのですが、 System.Text.Json というのは .NET Core 3.x で導入されて ASP.NET Core v3.x 以降では標準の JSON シリアライザ/デシリアライザとして使われるようになったものです(.NET Framework と .NET Core 2.x 以前は Newtonsoft.JSON)。 .NET Framework 4.7 で使えるんでしたっけ? Microsoft のドキュメントでは「要求されたページは .NET Framework 4.7 では使用できません」と言われてしまうのですが。
退会済みユーザー

退会済みユーザー

2021/09/20 03:37 編集

コピーしたファイルが足りてないとかいうオチはないですかね。 exe.config とかで依存バージョン解決してるなら、抜けてるとエラー出そうですが。 https://teratail.com/questions/350355 これとかと似たようなケースかも。
Arsnova

2021/09/20 08:17

すみません。お騒がせしました。結論から言うとradianさんのおっしゃる通りでした。 後ほど自己解決に詳細記載いたします。
guest

回答1

0

自己解決

解決しました。

結論

(バイナリ名).exeに対応する(バイナリ名).exe.configがなかったためエラーが発生した。

具体例

  • 元々実行フォルダにはAAA.exeとAAA.exe.configがセットで存在したため、動いていた。
  • exeをコピーすると「AAA - コピー.exe」となり対応するexe.configが存在しないためエラーになっていた。
  • 試しにexeを「AAA1.exe」とし、configをコピーし名前を「AAA1.exe.config」とすると「AAA1.exe」も動作しました。

投稿2021/09/20 09:47

Arsnova

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問