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

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

新規登録して質問してみよう
ただいま回答率
85.36%
C#

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

.NET Framework 4.0

Microsoft Windows用のソフトウェア開発環境/実行環境である .NET Frameworkの4番目のメジャーバージョンです。

Q&A

解決済

2回答

1036閲覧

C#でWindowsアプリケーションを作った際の本番ビルドの方法が知りたいです

shimeji_XX

総合スコア42

C#

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

.NET Framework 4.0

Microsoft Windows用のソフトウェア開発環境/実行環境である .NET Frameworkの4番目のメジャーバージョンです。

0グッド

0クリップ

投稿2023/10/25 05:23

実現したいこと

Visual Studio 2019でWindowsフォームアプリケーションを作成しています。
別PCで実行するためにビルドしてフォルダごと移動させたいです。

前提

初心者のため的外れのことを言っていたらすみません。
Visual Studio 2019でWindowsフォームアプリケーションを作成しています。
.NET Framework 4.7.2
OracleDBに接続するため、NGetsでOracle.ManagedDataAccess等をインストールしています。
デバック環境だと想定通り動作して、VS2019からビルドしてobj\Release\内のプログラムを動かすと下記エラーが発生する状態です。

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

ファイルまたはアセンブリ 'Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

https://mitosuya.net/cause-oracle-dataaccess-error を確認して、
アプリケーションがOracle.DataAccess.dllを見つけれない状態であると判断しました。

試したこと

1.エラーメッセージからdllが読み込めていないと考え、obj\Release\内にOracle.ManagedDataAccessのdllを置くなどしました
⇒メッセージ変わらず。

2.https://kuttsun.blogspot.com/2018/08/dll.html
を参考に packages.config から PackageReference へマイグレーションする。
⇒packagesフォルダが消え、project.assets.json他ファイルが生成されました。特に変わりなし。

疑問点

1.NGetsでインストールしたプログラムはビルドの際良い感じに一緒のフォルダに入ると思っていたが、この認識は間違いなのか?

2.NGetsでインストールしたプログラムが入っているpacagesフォルダをどこかに置けば動作するのか?releaseフォルダやsystem32フォルダに配置すれば読み込むのか?

3.本当にpacagesは読み込めていないのか?

4.bin\Debugのプログラムは動作するのにビルドしたobj\Debugが動作しないのはどこの違いなのか?

重ねて申し上げますが、なにか変な認識をしていたら申し訳ありません。

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

Visual Studio 2019
C#
.NET Framework 4.7.2

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんにちは。

obj/Release がミスタイプじゃないのなら、見る場所が違います。
obj ディレクトリはコンパイラの作業用ファイルの置き場なので、ビルド成果物は bin/Release ディレクトリに置かれます。

また、本番ビルドと言っているので、成果物を作成したいものと思いますが、その場合は Publish 操作をする方が適切です。
Publish を実行すると、bin ディレクトリ配下の publish ディレクトリ (デフォルトの場合) に成果物がまとめて出力されます。

投稿2023/10/25 05:48

tamoto

総合スコア4237

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

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

shimeji_XX

2023/10/25 05:59

回答ありがとうございます。 成果物がobjに置かれると勘違いしておりました。 publish も試してみましたが、この場合インストーラーを発行する形になるんですね。
tamoto

2023/10/25 06:09

インストーラを発行するかどうかはプロジェクトの設定次第なはずですが、 publish はソフトウェアを開発 PC の外に持ち出した場合でも動作するために必要なものがまとまるので、リリース目的には有用です。
guest

0

ソリューション構成、をReleaseにして、それからビルドしましょう

投稿2023/10/25 05:38

y_waiwai

総合スコア88030

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

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

shimeji_XX

2023/10/25 05:43

回答ありがとうございます。 ソリューション構成とは「Debug or Release」「Any CPU or x86」を構成マネージャーで選ぶもので間違いないでしょうか? これをビルドして出来るのがプロジェクト直下のobjフォルダに出来るファイルだと認識しています。 全ての組み合わせを試してみましたが、変わらず同じエラーメッセージです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問