C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: プロジェクトの参照設定でエラーがでます。


(過去ログ 20 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■8211 / inTopicNo.1)  プロジェクトの参照設定でエラーがでます。
  
□投稿者/ もねを (21回)-(2007/09/26(Wed) 11:57:45)

分類:[VB.NET/VB2005] 

こんにちは。以下の内容にチャレンジしています。

ソリューションに、プロジェクトが2つ存在しています。2つのプロジェクトは共通で使用したいモジュール(例:GetAge)があります。
※共通で使用したいモジュールのかたまりはプロジェクト1に存在します。
これまでは、2つのプロジェクトにGetAgeを定義していましたが、いろいろなサイトを参考にしてプロジェクトの参照設定にたどりつきました。
参照設定を行うことで1箇所に定義していれば、他のプロジェクトから参照できることがわかりました。

以下の手順を行いました

proj1のモジュールのかたまりのあまたの部分にPublicを書きました。
Module common → Public Module common

proj2のソリューションエクスプローラより参照の追加で「proj1」を選択しました。
※すべてのファイルを表示で参照設定を確認したら追加されています。

宣言されていないとエラーとなっていた箇所に
GetAge(生年月日) → proj1.common.GetAge(生年月日)
と書き加えました。


ここで、ソリューションのビルドを行ったところ以下のエラーが出て原因がわからず困っています。

エラー1
アセンブリ 'D:\main\bin\proj1.exe.manifest' によって参照されたファイル 'My Project\Application.myapp' が見つかりませんでした。
proj2

エラー2
アセンブリ 'D:\main\bin\proj1.exe.manifest' によって参照されたファイル 'Resources\MoveNext.png' が見つかりませんでした。
proj2

エラー8
アセンブリ 'D:\main\bin\proj1.exe.manifest' によって参照されたファイル 'Resources\icon.ico' が見つかりませんでした。
proj2

全部で8つエラーが出ます。

参照設定を削除してビルドすると、
警告1
インポート 'proj1.common' で指定された名前空間または型が、パブリック メンバを含んでいないか、または見つかりません。
名前空間または型が定義されていて、少なくとも 1 つのパブリック メンバを含んでいることを確認してください。
また、インポートされた要素名がエイリアスを使用していないことを確認してください。
D:\main\proj2\mdl\report.vb

エラー2
名前 'GetAge'は宣言されていません。
D:\main\proj2\mdl\report.vb

上記の2つのエラーは理解できるのですが・・・・

参照設定で何か他にしないといけないことがあるのでしょうか?
よきアドバイスお願いします。


引用返信 編集キー/
■8215 / inTopicNo.2)  Re[1]: プロジェクトの参照設定でエラーがでます。
□投稿者/ はつね (279回)-(2007/09/26(Wed) 13:29:52)
はつね さんの Web サイト
No8211 (もねを さん) に返信
> これまでは、2つのプロジェクトにGetAgeを定義していましたが、いろいろなサイトを参考にしてプロジェクトの参照設定にたどりつきました。

プロジェクトの参照設定とのことですが、同一ソリューションにいれていますか?
この場合でいえば、proj2のプロジェクトを開いたあとに[ファイル]-[追加]-[既存のプロジェクト追加]でproj2を追加して、それから参照の追加で[プロジェクト]タグを選んで選択です。

引用返信 編集キー/
■8217 / inTopicNo.3)  Re[2]: プロジェクトの参照設定でエラーがでます。
□投稿者/ もねを (22回)-(2007/09/26(Wed) 13:37:12)
はつね さん

アドバイスありがとうございます。

> プロジェクトの参照設定とのことですが、同一ソリューションにいれていますか?
> この場合でいえば、proj2のプロジェクトを開いたあとに[ファイル]-[追加]-[既存のプロジェクト追加]でproj2を追加して、それから参照の追加で[プロジェクト]タグを選んで選択です。

同一ソリューションです。はつねさんのアドバイスのように、[ファイル]-[追加]-[既存のプロジェクト追加]でproj2を追加いたしました。

よろしくお願いします。
引用返信 編集キー/
■8219 / inTopicNo.4)  Re[3]: プロジェクトの参照設定でエラーがでます。
□投稿者/ IIJIMAS (27回)-(2007/09/26(Wed) 14:03:35)
No8217 (もねを さん) に返信
1度まったく最初から「空のソリューション」を作成して、そのソリューションに、新規でプロジェクトを2つ追加して(たとえばクラスライブラリをWindowsアプリケーション)、片方からもう一方(その場合Windowsアプリケーションからクラスライブラリ)を参照していろいろ確かめてみてはどうでしょうか。

それともとのソリューションのエラーが出るパターンと比較したり、もとのソリューションからコードやファイルなどをコピーして、もとのソリューションに近づけていき、原因を追究するのはどうでしょうか。
引用返信 編集キー/
■8231 / inTopicNo.5)  Re[4]: プロジェクトの参照設定でエラーがでます。
□投稿者/ もねを (23回)-(2007/09/26(Wed) 16:19:59)
IIJIMASさん
ありがとうございます。

新規に作成していろいろと試してみます。
また原因がわかりましたら解答をのせます。

引用返信 編集キー/
■8245 / inTopicNo.6)  Re[5]: プロジェクトの参照設定でエラーがでます。
□投稿者/ もねを (24回)-(2007/09/26(Wed) 19:29:14)
自己レスです。

エラーの原因は、WindowsアプリケーションのモジュールをPublicに変更して、参照設定先はWindowsアプリケーションを指定していました。
この状態でビルドをすると原因不明のエラーが出ていました。

いろいろと調べているうちにクライスライブラリを使用して参照設定と書かれているのを見つけました。
クラスライブラリを使用することでエラーはなくなりました。

しかしクラスライブラリも2種類作り方があるみたいでどちらが正しいのかがわかりません。

方法1
追加で新しいプロジェクトを選んで、Windowsアプリケーションを選びます。
追加されると自動でMyProjectとForm1が作成されます。
Form1を削除します。MyProjectを開いて、アプリケーションの種類をクライスライブラリにします。
追加したプロジェクトに、モジュールを追加します。
Module Module1 → Public Module Module1 とPublicを記述します。
共通のモジュールをせっせと移しかえます。
各プロジェクトの参照設定の追加で、追加したプロジェクトを選んであげます。

方法2
追加で新しいプロジェクトを選んで、クラスライブラリを選びます。
共通のモジュールをせっせと移しかえます。
方法1と比べると、Publicもついています。
Public Class Class1
ほかのプロジェクトから参照設定もできました。

方法2の場合は MessageBox.Show などでエラーが出たので
方法1で進めることにしました。

方法1、方法2とクラスライブラリの作り方が違いますがどちらが正しいのかはわかりませんでした。
ヘルプ頼みます。

解決済み
引用返信 編集キー/
■8247 / inTopicNo.7)  Re[6]: プロジェクトの参照設定でエラーがでます。
□投稿者/ とりこびと (35回)-(2007/09/26(Wed) 19:47:38)
とりこびと さんの Web サイト
とりこびとです。

No8245 (もねを さん) に返信

> 方法1、方法2とクラスライブラリの作り方が違いますがどちらが正しいのかはわかりませんでした。

どちらでもクラスライブラリを作成できます。
プロジェクトを作成するときに選択するのはそのプロジェクトのテンプレートです。
Windowsアプリケーションのテンプレートを選択した場合はおおよそWindowsアプリケーションを作成するのに必要であろう状態のプロジェクトを、
クラスライブラリのテンプレートを選択した場合はおおよそクラスライブラリを作成するのに必要であろう状態のプロジェクトを、用意してくれています。
ただ、どちらもプロジェクトであることに変わりはありませんので、Windowsアプリケーションのテンプレートを選択してからクラスライブラリに変更して作成することもできます。(すくなくともこの2つのプロジェクトテンプレートに関しては。)

> 方法2の場合は MessageBox.Show などでエラーが出たので
> 方法1で進めることにしました。

これはおそらく、クラスライブラリの参照設定が、System.Windows.Forms.dll を参照設定していないため、System.Windows.Forms.dllに含まれる MessageBox クラスを使用できない(というより、MessageBox クラスがナニモノか判断できない)状態です。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -