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

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

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

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

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

Q&A

解決済

2回答

7862閲覧

DLLを作成して実行すると「System.Runtime」のエラーが出ます

TORU

総合スコア1

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

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

1グッド

1クリップ

投稿2022/05/03 14:56

前提

C#でDLLを作成しています。
作成したDLLを実行すると、System.Runtimeが見つからない旨のエラーメッセージが発生しました。
google検索もしましたが、解決策を見つけられませんでした。

実現したいこと

下記URLのプログラムを実行したいです。
https://www.chuken-engineer.com/entry/2020/12/21/170816

発生している問題・エラーメッセージ

System.IO.FileNotFoundException: 'ファイルまたはアセンブリ 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

該当のソースコード

C#

1namespace Calc 2{ 3 public class Addition 4 { 5 public static int Integer(int a, int b) 6 { 7 return a + b; 8 } 9 10 public static float Decimal(float a, float b) 11 { 12 return a + b; 13 } 14 } 15 16 public class Subtraction 17 { 18 public static int Integer(int a, int b) 19 { 20 return a - b; 21 } 22 23 public static float Decimal(float a, float b) 24 { 25 return a - b; 26 } 27 } 28}

C#

1using System; 2 3namespace CalcTest 4{ 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Console.WriteLine(Calc.Addition.Integer(2, 1)); 10 Console.WriteLine(Calc.Addition.Decimal(0.2f, 0.1f)); 11 Console.WriteLine(Calc.Subtraction.Integer(2, 1)); 12 Console.WriteLine(Calc.Subtraction.Decimal(0.2f, 0.1f)); 13 Console.Read(); 14 } 15 } 16}

試したこと

・exeとexe.configが同一フォルダにあることを確認
・PCを初期化(Windows10も再インストール)
・.NET 6.0(SDK 6.0.202)のWindows x64をインストール
・.NET Framework 4.8 Developer Pack Offlineをインストール
・ネイティブコードデバッグを有効にするにチェックを入れる
・App.config記載のバージョン4.0を、6.0や4.8に変更

補足情報(ツールのバージョンなど)

・Windows 10
・Visual Studio 2022
・.NET 6.0
・.NET Framework 4.8

C++、C、Excel VBAの初歩的なプログラミングは経験はありますが、
DLL作成、Visual Studio使用、C#、.NETは初めてです。

.NETの入門書を購入して学習しています。
書籍付属CDのサンプルDLLは実行できたのですが、
作成したDLLは上記と同じエラーが出てしまい動きませんでした。
原因を探るうち、上記URLのコードでも、同じエラーが出ることが判明しました。

上記エラーについて、ご教授賜りたく、よろしくお願いいたします。

TN8001👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

おそらくCalc.dllを.NET 6.0で、CalcTest.exeを.NET Frameworkで作成しています(逆ならおおむね問題ありませんでした)
どちらからも使えるようなライブラリを作成するには、.NET Standardを選択します。
.NET Standard | Microsoft Docs

よくわからなかったらどちらも同じになるようにしてください。

プロジェクトの追加で「(.NET Framework)」と付いていないほうは、.NET(.NET Core)です。

  • クラス ライブラリ
    .NET または .NET Standard を対象とするクラス ライブラリを作成するためのプロジェクト

  • クラス ライブラリ(.NET Framework)
    C# クラス ライブラリ(.dll)を作成するためのプロジェクトです

  • コンソール アプリ
    Windows、Linux、macOS 上の .NET で実行できるコマンドライン アプリケーションを作成するためのプロジェクト

  • コンソール アプリ(.NET Framework)
    コマンドライン アプリケーションを作成するためのプロジェクトです

あと自作ライブラリならdllを直接参照するのではなく、「プロジェクト参照」するほうが普通かなと思います。
Visual Studio を使用して .NET クラス ライブラリを作成する - .NET | Microsoft Docs


.NET Core 1.0が出たのが2016年ですから、それ以前の書籍や記事を参考にする場合は.NET Frameworkを選択するほうが安全かと思います(できればもっと新しいものを参考にしたいですが^^;

投稿2022/05/03 22:23

TN8001

総合スコア9321

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

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

TORU

2022/05/04 09:23

ご回答ありがとうございます。 ご教授頂いた方法にて、記事のコードの実行ができました。 年数についても教えていただき有難うございます。 学習中の書籍も古く Visual Studio 2010 でしたので、「(.NET Framework)」と付いているクラスライブラリで再作成しまして、無事にコマンド実装ができました。 ありがとうございました。
guest

0

なんでPC初期化したの?

投稿2022/05/03 21:15

jmdajmw

総合スコア302

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

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

退会済みユーザー

退会済みユーザー

2022/05/04 00:31

回答ではないことを回答欄に書いているのでマイナス評価。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問