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

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

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

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

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

Q&A

解決済

3回答

12980閲覧

同じソリューション内の別プロジェクトのクラスを参照したい

SYOSHINSYA0824

総合スコア9

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

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

0グッド

0クリップ

投稿2020/03/04 06:13

VB.NETでVisualStudio2015を使って同じソリューション内の別プロジェクトのクラスを参照したいのですが、
型’◯◯は定義されていません。というエラーが出て参照できません。
こういった内容について色々調べた結果、似たような状況のページがいくつかヒットしましたが書いてあることが良くわからなかったり、書いてある通りにしても上手くいかなかったりなのでご教示お願いします。

bbb.aspx.vbにaaa.aspx.vbのTestAクラスを参照しようとしています。

開発環境はwindows10です。
コードは以下の通りです。

VB.NET

1「aaa.aspx.vb」 2 3Public Class TestA 4 Public Function Result() As Integer 5 6 ~処理内容~ 7 8 End Function 9End Class 10 11 12 13「bbb.aspx.vb」 14 15Public Class TestB 16 Public Function Result2() As Integer 17   Dim rclass As New TestA  ← 型’TestAは定義されていません。というエラーが発生 18 End Function 19End Class

どのように参照すればよいでしょうか?
かなり初歩的な質問ではあると思うのですが、お察しの通りプログラム初心者なため、質問に過不足があるかもしれませんがお手柔らかにお願いします。。。

よろしくお願いします。

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

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

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

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

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

guest

回答3

0

bbb.aspx.vbにaaa.aspx.vbのTestAクラスを参照しようとしています。

そういうことはできないはずです。

質問者さんのケースで可能かどうか分かりませんが、TestA クラスを別のクラスライブラリにまとめてそれを同じソリューション内に配置し、Web アプリのプロジェクトから参照設定してはいかがですか?

例えば、以下の画像で ClassLibrary1 が TestAクラスを含むクラスライブラリとすれば、それを Web アプリのプロジェクト WebApplication1 で参照設定に加えれば、

イメージ説明

以下の画像のように Web アプリ WebApplication1 の bin フォルダに ClassLibrary1 の .dll が自動的に配置されるようになるので、WebApplication1 のどこからでも参照できるようになります。

イメージ説明

もう一つの手段は、作っているのが Web サイトプロジェクトであれば TestA クラスをソースコードのまま WebApplication1 のルート直下に App_Code フォルダを作ってその中に配置するという方法もあります。(質問者さんが作っているのが Web アプリケーションプロジェクトだとすると Add_Code ファルダは使えません)

詳しくは以下の記事を見てください。

Shared Code Folders in ASP.NET Web Sites
https://docs.microsoft.com/en-us/previous-versions/aspnet/t990ks23(v=vs.100)?redirectedfrom=MSDN

投稿2020/03/04 07:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

SYOSHINSYA0824

2020/03/04 07:55

画像付きで大変わかりやすい回答ありがとうございます。 しかし私のケースではクラスライブラリを使えないので、もう一つのApp_Codeフォルダに配置するというやり方を試した見たのですが、App_Codeフォルダに配置するとコード内にいくつかのエラーメッセージが新たに表示されてうまくいきません。 わざわざ回答していただいたのに申し訳ありません。 SurferOnWwwさんの挙げていただいた2つの例のほかに方法はございませんでしょうか? わがまま言って申し訳ないです。
退会済みユーザー

退会済みユーザー

2020/03/04 08:59

XY 問題になっていて Y を質問してませんか? そもそも何がしたいのかを書いてください(XY 問題の X を書いてください)。 > ほかに方法はございませんでしょうか? Web アプリケーションプロジェクトであれば、アプリケーション下のどこでもいいから TestA クラスを含むクラスファイルを追加するという方法があります。
guest

0

ベストアンサー

通常プロジェクトB内で既存のクラスを追加するでプロジェクトAのTestAを追加しますとTestAのクラスがあるファイルをコピーしてプロジェクトに追加しますがそうではなく、TestAのコピーのリンクで追加するとTestAのファイルは1つで済みます。どちらを使っても別プロジェクトのファイルのクラスを使う事ができますが、ファイル1つとして使うかコピーして使うかの違いです。

追加する時、追加ボタン横の▼マークボタンを押すことによりリンクとして追加というのがありますのでリンクとして使う場合はこの様に使うとどうでしょう?
目的の事が達成できますか?という事でした。

リンクとして追加した場合プロジェクトB内でTestAのファイルの変更を行うとプロジェクトAのTestAを編集してしまいますので注意して下さい。という事でした。

画像1
※リンクとして追加した場合はアイコンに右上矢印マークが付くと思います。(画像緑丸参照)

プロジェクトにdllの参照ではないとあったので単に別のProjectのクラスを使いたいのだと思いこの様な回答としましたがどうでしょう?

画像2

投稿2020/03/04 08:05

編集2020/03/04 11:23
shinami

総合スコア334

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

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

SYOSHINSYA0824

2020/03/04 08:19

回答ありがとうございます。 追加ボタンの▼マークとはどこの追加ボタンでしょうか? バカなもので申し訳ありません。
退会済みユーザー

退会済みユーザー

2020/03/04 09:12

shinami さん> ASP.NET Web Forms アプリの「bbb.aspx.vbにaaa.aspx.vbのTestAクラスを参照」(bbb.aspx.vb と aaa.aspx.vb は別プロジェクトらしい)という話らしいのですが、それでも上の回答で書いたようなことができるのであればもう少し詳しくやり方を教えていただけませんか?
shinami

2020/03/04 11:25

編集しておきました。 私は、Web Formsの方は余り詳しくないのですがこんな感じでしょうか? > 追加ボタンの▼マークとはどこの追加ボタンでしょうか? そうです。追加ボタン横の▼マークボタンです。
SYOSHINSYA0824

2020/03/06 01:08

こちらの回答で無事解決できました。 回答してくださったお二方どうもありがとうございました。
guest

0

Since there was no dll reference in the project, I thought that I simply wanted to use a class from another project, so I answered like this. https://docs.microsoft.com/en-us/previous-versions/aspnet/t990ks23(v=vs.100)?redirectedfrom=MSDN free games

投稿2023/05/15 02:25

celenabelt

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問