No.1ベストアンサー
- 回答日時:
NUnitは私自身使わないので(.NET標準で搭載されている単体テスト機能を使っちゃうので)、的をはずしているかもしれませんが、
もし、App_Code配下のコードをテストしたい場合は、
恐らくASP.NETアプリケーションをプリコンパイルしないと
NUnitでテストできないのではないかと思います。
参考サイト(英語)
http://bytes.com/forum/thread454522.html
aspnet_compiler.exe を使って、対象のWebプロジェクトをプリコンパイルし、その後、App_Code用に出来たプリコンパイル用DLLを
Webプロジェクトに参照設定します。
後はWeb Project内でテスト用のコード(ドライバコード)を
書いて参照設定したApp_Codeのメソッドを呼び出してあげるしか
方法がないように思います。
プリコンパイル方法&MSBuildについては
http://msdn.microsoft.com/ja-jp/library/cc671425 …
を参照してください。
他に良い方法があればいいのですが、私が思いつくのはそれぐらいです。
ちなみに使っているVisual Studio のバージョンとエディションは
何でしょうか?差し支えなかったら、今後の情報共有のためにも
ご教授下さい。宜しくお願いします。
参考URL:http://bytes.com/forum/thread454522.html
早速このような細かいご回答をくださり大変ありがとうございます。
VSのバージョンは次のとおりです。
Visual Studio 2005 Professional Edition
※よって、VSTSは使用したことがありません>_<
aspnet_compiler.exeは私も本番環境へのデプロイに使用しています。
aspnet_compilerはプリコンパイルするのに現在1分強を要します。
一方、App_Code配下を別プロジェクトとした場合
そのプロジェクトをビルドするのは5秒ほどで終わります。(現在のクラス数:654)
したがって、開発速度を保つためには
別プロジェクトにした方がよさそうに思いました。
しかし、そのためにはリソースファイルの共有という課題があります。
(現状)
App_Code
Exception
XxxxException.vb ---> App_GlobalResourcesの.resxファイルを参照
WebForm
.aspx.vb ---> 同じくApp_GlobalResourcesの.resxファイルを参照
App_Code配下には独自Exceptionクラスがあり、
これらのエラーメッセージはApp_GlobalResources配下の
.resxファイルを参照して取得していました。
一方WebFormでも検証コントロールのエラーメッセージのために
同じ.resxファイルを参照しています。
App_Code配下を別プロジェクトにすることで、
WebFormからもその新プロジェクトのリソースファイルを
参照したいと思うのですが、そのようなことは可能なのでしょうか。
それともリソースファイルを別々にもち、
Exceptionクラスが使用するメッセージを
新プロジェクトのリソースファイルの方に移すしかないでしょうか。
まだ調べてないですが、どちらからも(=ExceptionからもWebFormからも)
参照されているメッセージについては重複を黙認するしかないでしょうか。
(=App_GlobalResourcesの.resxファイルと
新プロジェクトのリソースファイルに同じメッセージをもつ)
話がそれてしまいますが、いま一度回答頂けますと幸いです。
No.3
- 回答日時:
>ビルドが完成するまで3分15秒ほどかかります
確かに重いですね。
ちなみに、Visual Studio 2005にSP1はインストールされていますか?
SP1を入れてだいぶスピードがマシになったことがあるので、
できればSP1をインストールして、IDE環境をスピードアップさせたいですね。
後、ビルドスピードに関しては、
Project構成によっても異なってくるので何ともいえないところでは
ありますが、毎回ソリューションのビルドだと重くてつらいと思うので
ある程度、ビルドオプション(ビルドモード)を
何種類か用意することで少しは短縮できると思います。
恐らく、デフォルトでは、DebugモードかReleaseモードの
2種類しかないと思うので、例えば、下記のようなモードの
ビルドオプションを用意しておくといいかもしれませんよ。
・Web ProjectだけのDebugビルドモード
・Web ProjectだけのReleaseビルドモード
・Web Project + 関連のあるProjectだけのDebugビルドモード
・Web Project + 関連のあるProjectだけのReleaseビルドモード
・Web Projectと関連のないクラスライブラリProjectだけをビルドするビルドモード
など・・・
VS.NET 2005 Professional版だと、
[ビルド]メニュー→[構成マネージャー]で
いろんなパターンのビルドモードを作れますので、一度試してみてください。
しかし、ASP.NETやVS.NETで悩まれるところはやはり皆さん同じだなと
実感しました。どうかがんばって下さい。
たびたび回答ありがとうございます。
SP1は先日そのような期待を胸に適用しました。
しかし、ビルドスピードは
体感レベルでは違いがわかりませんでした。
なので、スピードアップしたとの
kero-mioさんのお話に驚かされました。
ビルドオプションについてはノータッチです。
いまいち理解していません。勉強してみます。
情報提供ありがとうございます。
ためしにWebだけDebugビルドするようにしてみましたが
これでは効果がなかったようです。
>しかし、ASP.NETやVS.NETで悩まれるところはやはり皆さん同じだなと実感しました。
やはりそうなのですね。みなさん悩んでおられる。
Seasarのようにさくさく開発したいものです。
ありがとうございました。
No.2
- 回答日時:
補足情報ありがとうございます。
>そのプロジェクトをビルドするのは5秒ほどで終わります。(現在のクラス数:654)
>したがって、開発速度を保つためには
>別プロジェクトにした方がよさそうに思いました。
そうですね。これは別プロジェクトにした方が正解だと私も思います。
クラスファイル数が増えるとVS.NET2005のIDEが重くて話にならないので
できるだけ別Projectにした方がいいです。
ただし、あまりApp_Codeで定義していたクラスが多数あるからと
いって、複数のProjectに分割しすぎないで下さい。
ソリューション内に多数のProjectファイルがあるとVS.NET2005の
IDEが重くて話にならないです。そこだけ配慮して頂けたらと思います。
>(現状)
>App_Code
>Exception
>XxxxException.vb ---> App_GlobalResourcesの.resxファイルを参照
>WebForm
>.aspx.vb ---> 同じくApp_GlobalResourcesの.resxファイルを参照
まず、resxは、カスタムツール + 名前空間を使って、バッティング
しないように配慮する必要がありますね。
また、resxを元にした、Resourcesファイルを作り、
作ったResoucesファイルを格納するプロジェクトを1つ用意します。
すると、App_CodeをProjectにしたクラスからも該当リソースに
アクセスできますよ!
若干高度なやり方ですが、こんな感じです。
・リソース定義は今までどおり、App_GlobalResourcesにある
resxで定義する
・Resourcesファイルを格納したプロジェクトファイルの
ビルドオプションで、App_GlobalResourcesにある
最新のresxファイルを取得。Resourcesファイルを作る
リソース ファイル ジェネレータ (Resgen.exe)コマンドを動かすよう、
「ビルド実行時」の設定オプションで設定しておきます。
(ビルド実行時の設定オプションは、プロジェクトファイルの
プロパティを見てもらえればどっかにあります。)
こうすると、aspxは、App_GlobalResourcesにあるresxを参照し、
App_Codeをプロジェクト化したクラスは、Resourcesファイルが
格納されているProjectファイルを参照することでリソース値を
取得する構成をとることができます。
このリソース ファイル ジェネレータ (Resgen.exe)を
ビルド時に実行する時のサンプルコマンドラインを作ったことが
あるんですが、今手元にサンプルがないので、サンプルを提示
できなくてすいません。
ただ、リソース ファイル ジェネレータ (Resgen.exe)は、
http://msdn.microsoft.com/ja-jp/library/ccec7sz1 …
に細かい使い方掲載されていますので、宜しければ検討して
頂けると幸いです。宜しくお願いします。
参考URL:http://msdn.microsoft.com/ja-jp/library/ccec7sz1 …
たびたび非常に丁寧なご説明ありがとうございます。
まだ試せていませんが、おっしゃってることは理解できました。
とても助かりました。ありがとうございました。
VSはすでに大変重い状況です。
現在App_Code配下のクラスを修正したら、
ビルドが完成するまで3分15秒ほどかかります。たまりません。
この問題も、構成の変更などで解決できるならやってみたいですね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- その他(プログラミング・Web制作) Visual StudioでDjangoのプロジェクト配下のappを作成する方法 1 2022/05/01 03:47
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
- PHP $_SESSIONについて教えて下さい。 4 2023/03/13 13:45
- その他(プログラミング・Web制作) visual studio code 共有方法 1 2022/04/06 17:55
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルに張り付けた写真のフ...
-
onedrive にexcelファイルをア...
-
キヤノン アソビカメラ iNSPiC ...
-
VB.NET Excelを読み込んでDataT...
-
VBAでPDFを作成する際、同じ名...
-
【VB.NET】App.configにファイ...
-
phpのファイルがブラウザで開か...
-
Windows10にデュアルブートでXP...
-
vba 空のデータをSplitする時の...
-
ffftpでファイル取得が0バイト...
-
VB.NETでMSComm が追加できず?
-
VBAでPDF作成をしたあと、指定...
-
aspxをhtmlに変換する方法について
-
ASP.NetでWebアプリ開発の経験...
-
【VB.NET】Excelの最終行までの...
-
マクロで同じフォルダにある画...
-
Excelでボタン(フォームコント...
-
python3 足し算の問題
-
C#からvbsを実行したい
-
visual stduo を使ったc#での...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[VB.NET]クラスのシリアライズ...
-
Webサイト アプリのコンパイル他
-
『参照先』って何て言いますか?
-
Visual Studio 2008について
-
ASP.NET 3.5 アプリのフォルダ構成
-
複数のテキストファイルをexcel...
-
フォルダ作成用バッチファイル...
-
Excelでdatファイルを作成??
-
バッチによるショートカットの...
-
VBAでファイルパスが長すぎてコ...
-
Microsoft Access エラー 3051
-
バッチファイルが作成できない
-
batファイル処理でのテキストフ...
-
Lubuntuでフォントをインストー...
-
【Excel VBA】PDFを作成して,...
-
Access2003で「オブジェクト'○○...
-
1フォルダに保存できるファイル...
-
テキストファイルの文字色に色...
-
ダウンロード不可PDFファイルは...
-
Refreshで落ちる
おすすめ情報